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-Tty
RPMをインストール- 見つからない場合はこちらに置いてありますが、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
ダウンロード
441
所有者
hobo devop/sysadmin/SRE