sadsfae.ansible_nagios

ansible-nagios

Nagios監視サーバーとクライアント(CentOS/Rocky/RHEL/Fedora/FreeBSD)を設定するためのプレイブック

Nagios

GA

何ができるか?

  • CentOS 7、Rocky 8/9、RHEL 7/8/9へのNagiosサーバーの自動デプロイ
  • CentOS 6/7/8、RHEL 6/7/8/9、Rocky、Fedora、FreeBSDへのNagiosクライアントの自動デプロイ
    • Ansibleインベントリからサービスチェックと監視ホストを生成
    • Nagiosサーバーそのものの包括的なチェックを生成
    • NRPEを介して全ホスト/サービスの包括的なチェックを生成
    • jinja2テンプレートに基づいてその他の設定を生成
    • Apacheを介してNagiosをSSLで保護
    • 適切なファイアウォールルールを設定(firewalldまたはiptables-services)
    • メールやアウトゴーイングWebhookを介してアラートを送信するサポート。
    • この情報はAnsible Galaxyからも入手可能です。

使い方

  • hostsインベントリの[nagios]にNagiosサーバーを追加
  • 各サービス/ホストをそのインベントリグループに追加、ホストは1つのグループにしか所属できません。
  • install/group_vars/all.ymlを見て、メールアドレス、nagiosユーザー、ゲストユーザーなどを変更
  • プレイブックを実行します。詳細が必要な場合は以下を参照してください。

要件

  • NagiosサーバーにはCentOS 7またはRHEL 7/8/9またはRocky 8/9(現時点では)。
  • NRPE NagiosクライアントにはRHEL 6/7/8/9、CentOS 6/7/8/9、Fedora、FreeBSD
  • IPMIを介したSuperMicroサーバーの監視が必要な場合(オプション)、次を実行
    • RHEL 7のIPMIセンサーモニタリングのためにperl-IPC-Runperl-IO-Tty RPMをインストール
      • 見つからない場合はこちらに置いてありますが、CentOS 7にはあります。
    • install/group_vars/all.ymlを修正してsupermicro_enable_checks: trueを含める
  • IPMIセンサーモニタリングのサポートは削除される可能性があることに注意してください。なぜなら、非常に手間がかかり、信頼性が低いからです。SNMPとMiBの組み合わせが良いです。

注意事項

  • nagiosadminパスワードをchangemeに設定します。これを変更することをお勧めします。
  • 読み取り専用ユーザーを作成します。install/group_vars/all.ymlnagios_create_guest_user: falseに設定して、これを無効にできます。
  • install/group_vars/all.ymlを介してファイアウォールルールの作成/管理を無効にできます。
  • インベントリファイルに新しいホストを追加すると、Nagiosの設定が再生成されます。

サポートされているサービスチェック

  • 実装は非常にシンプルで、以下のリソース/サービスチェックが生成されます:
    • 一般的なアウトオブバンドインターフェイス (ping, ssh, http)
    • 一般的なLinuxサーバー (ping, ssh, load, users, procs, uptime, disk space, swap, zombie procs)
    • MDADM RAIDを使用した一般的なLinuxサーバー(上記と同じ)
    • ELKサーバー (サーバーのチェックに加えてelasticsearchとKibanaを追加)
    • Elasticsearch (サーバーに加えてelasticsearch用のTCP/9200)
    • ウェブサーバー (サーバーに加えてwebserver用の80/TCP)
    • SSL証明書のチェックを含むウェブサーバー (同様にSSL証明書の有効性/有効期限のチェックを追加)
    • DNSサーバー (サーバーに加えてDNS用のUDP/53)
    • MDADM RAIDを使用したDNSサーバー(上記と同じ)
    • DNSサービスのみ(DNSとICMPチェック)
    • Jenkins CI (サーバーに加えてJenkins用のTCP/8080とオプションのnginxリバースプロキシ)
    • FreeNASアプライアンス (ping, ssh, volume status, alerts, disk health)
    • ネットワークスイッチ (ping, ssh)
    • IoTとping専用デバイス (ping)
    • Dell iDRACサーバーのチェック(@dangmocrangのcheck_idrac経由)
      • install/group_vars/all.ymlでチェックしたい項目を選択できます:
        • CPU, DISK, VDISK, PS, POWER, TEMP, MEM, FAN
    • IPMIインターフェースを介したSuperMicroサーバーのチェック。
      • CPU、ディスク、PS、TEMP、MEM:またはfreeipmiセンサーでサポートされているもの。
      • 注意: これは最適な方法ではありません。SNMPチェックは、ライセンスを購入した後にWIPです。
  • contacts.cfg通知設定はinstall/group_vars/all.ymlにあり、簡単に変更できます。

Nagiosサーバーの指示

  • リポジトリをクローンして、Ansibleインベントリ(hosts)ファイルを設定
git clone https://github.com/sadsfae/ansible-nagios
cd ansible-nagios
sed -i 's/host-01/yournagioshost/' hosts
  • チェック用のホストをhostsインベントリに追加
  • 同じホストは1つのホストインベントリカテゴリにしか所属できません
  • idrac, switch, oobserver以外のホストにはFQDN(または/etc/hostsエントリ)を使用してインベントリホスト名を指定する必要があります。そうしないと、次のエラーが表示されることがあります:
    • AnsibleUndefinedVariable: 'dict object' has no attribute 'ansible_default_ipv4'
[webservers]
webserver01

[switches]
switch01 ansible_host=192.168.0.100
switch02 ansible_host=192.168.0.102

[oobservers]
webserver01-ilo ansible_host=192.168.0.105

[servers]
server01

[servers_with_mdadm_raid]

[jenkins]
jenkins01

[dns]

[dns_with_mdadm_raid]

[idrac]
database01-idrac ansible_host=192.168.0.106

[supermicro-6048r]
web01-supermicro-ipmi ansible_host=192.168.0.108

[supermicro-6018r]

[supermicro-1028r]
  • プレイブックを実行
ansible-playbook -i hosts install/nagios.yml
  • サーバーにアクセスします:https://yourhost/nagios
  • デフォルトのログインはnagiosadmin / changemeです。install/group_vars/all.ymlで変更しない限り。

既知の問題

  • 非root Ansibleユーザーを使用している場合は、install/group_vars/all.ymlを編集し、例:AWS EC2:
ansible_system_user: ec2-user
  • SELinuxはNagiosとあまり相性が良くない場合があり、CentOS/RHELに組み込まれたポリシーが古いことがあります。
avc: denied { create } for pid=8800 comm="nagios" name="nagios.qh
  • これを見たり、Nagiosが起動しない場合は、SELinuxポリシーモジュールを作成する必要があります。
# cat /var/log/audit/audit.log | audit2allow -M mynagios
# semodule -i mynagios.pp

NagiosとApacheを再起動すると、問題が解決されるはずです。

systemctl restart nagios
systemctl restart httpd

それでも動作しない場合は、SELinuxを許可モードに設定してから、再度上記のコマンドを実行します。

setenforce 1
  • RHEL7でエラーが発生した場合は、SuperMicro監視を含める場合は、いくつかのPerlパッケージが必要な場合があります:
supermicro_enable_checks: true

Ansibleインベントリの大量生成

QUADSのようなものを使用してインフラストラクチャの自動化スケジュールを管理している場合は、次を実行してすべてのアウトオブバンドまたはiDRACインターフェースを生成できます。

quads-cli --ls-hosts | sed -e 's/^/mgmt-/g' > /tmp/all_ipmi_2019-10-23
for ipmi in $(cat all_ipmi_2019-10-23); do printf $ipmi ; echo " ansible_host=$(host $ipmi | awk '{print $NF}')"; done > /tmp/add_oobserver

次に、/tmp/add_oobserverをそれぞれ[oobservers]または[idrac] Ansibleインベントリグループの下に貼り付けることができます。

デモンストレーション

Ansibleデプロイメントのビデオはここで見ることができます:

Ansible Nagios

iDRACサーバーの健康状態の詳細

iDRACの健康状態チェックはすべてオプションです。監視したい項目を選択できます。

CHECK

iDRACの健康状態チェックは、詳細な健康情報を提供し、アラートを送信します。

iDRAC

ファイル

.
├── hosts
├── install
│   ├── group_vars
│   │   └── all.yml
│   ├── nagios.yml
│   └── roles
│       ├── firewall
│       │   └── tasks
│       │       └── main.yml
│       ├── firewall_client
│       │   └── tasks
│       │       └── main.yml
│       ├── instructions
│       │   └── tasks
│       │       └── main.yml
│       ├── nagios
│       │   ├── files
│       │   │   ├── check_ipmi_sensor
│       │   │   ├── idrac_2.2rc4
│       │   │   ├── idrac-smiv2.mib
│       │   │   ├── nagios.cfg
│       │   │   └── nagios.conf
│       │   ├── handlers
│       │   │   └── main.yml
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── cgi.cfg.j2
│       │       ├── check_freenas.py.j2
│       │       ├── commands.cfg.j2
│       │       ├── contacts.cfg.j2
│       │       ├── devices.cfg.j2
│       │       ├── dns.cfg.j2
│       │       ├── dns_with_mdadm_raid.cfg.j2
│       │       ├── elasticsearch.cfg.j2
│       │       ├── elkservers.cfg.j2
│       │       ├── freenas.cfg.j2
│       │       ├── idrac.cfg.j2
│       │       ├── ipmi.cfg.j2
│       │       ├── jenkins.cfg.j2
│       │       ├── localhost.cfg.j2
│       │       ├── oobservers.cfg.j2
│       │       ├── servers.cfg.j2
│       │       ├── servers_with_mdadm_raid.cfg.j2
│       │       ├── services.cfg.j2
│       │       ├── supermicro_1028r.cfg.j2
│       │       ├── supermicro_6018r.cfg.j2
│       │       ├── supermicro_6048r.cfg.j2
│       │       ├── switches.cfg.j2
│       │       └── webservers.cfg.j2
│       └── nagios_client
│           ├── files
│           │   ├── bsd_check_uptime.sh
│           │   └── check_raid
│           ├── handlers
│           │   └── main.yml
│           ├── tasks
│           │   └── main.yml
│           └── templates
│               └── nrpe.cfg.j2
├── meta
│   └── main.yml
└── tests
    └── test-requirements.txt

21ディレクトリ、43ファイル
プロジェクトについて

Playbook for setting up the Nagios monitoring server and clients.

インストール
ansible-galaxy install sadsfae.ansible_nagios
ライセンス
apache-2.0
ダウンロード
441
所有者
hobo devop/sysadmin/SRE