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

何ができるか?
- 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-Runとperl-IO-TtyRPMをインストール- 見つからない場合はこちらに置いてありますが、CentOS 7にはあります。
 
- install/group_vars/all.ymlを修正して- supermicro_enable_checks: trueを含める
 
- RHEL 7のIPMIセンサーモニタリングのために
- IPMIセンサーモニタリングのサポートは削除される可能性があることに注意してください。なぜなら、非常に手間がかかり、信頼性が低いからです。SNMPとMiBの組み合わせが良いです。
注意事項
- nagiosadminパスワードを- changemeに設定します。これを変更することをお勧めします。
- 読み取り専用ユーザーを作成します。install/group_vars/all.ymlでnagios_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です。
 
- CPU、ディスク、PS、TEMP、MEM:または
 
- 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デプロイメントのビデオはここで見ることができます:
iDRACサーバーの健康状態の詳細
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ファイル
インストール
 ansible-galaxy install sadsfae.ansible_nagiosライセンス
 
            apache-2.0
          
ダウンロード
 
            451
          
所有者
 hobo devop/sysadmin/SRE

