Zabbixのリモートコマンドでansible-playbookを実行してhttpdを再起動する。
■環境
VPS1台構成
CentOS Linux release 7.6.1810 (Core)
Zabbix 4.0.5
ansible 2.7.8
Apache/2.4.6
※1台構成のためAnsible実行サーバーと操作対象サーバーとZabbixサーバーは同一機器となっています。
1. Ansible環境構築
Ansibleインストール
# yum install ansible
でAnsibleをインストールします。※EPELが有効化されていなければ、有効化が必要です。
Ansible用のディレクトリ作成
# cd /opt
# mkdir ansible
Playbook作成
# vi /opt/ansible/http_restart.yml
下記内容のファイルを作成します。
---
- hosts: localhost
tasks:
- name: restart httpd
systemd: name=httpd state=restarted
2. Zabbix リモートコマンド実行の準備
Zabbixエージェントの設定変更
/etc/zabbix/zabbix_agentd.confに下記一行を足します。
EnableRemoteCommands=1
Zabbixエージェントの再起動
# systemctl restart zabbix-agent
zabbixユーザーに/bin/ansible-playbookのsudo権限付与
visudoコマンドで/etc/sudoersに下記設定を追加します。
zabbix ALL=(ALL) NOPASSWD: /bin/ansible-playbook
3. Zabbixの設定(GUI)
Ansibleインストール
# yum install ansible
でAnsibleをインストールします。※EPELが有効化されていなければ、有効化が必要です。
Ansible用のディレクトリ作成
# cd /opt
# mkdir ansible
Playbook作成
# vi /opt/ansible/http_restart.yml
下記内容のファイルを作成します。
---
- hosts: localhost
tasks:
- name: restart httpd
systemd: name=httpd state=restarted
Zabbixエージェントの設定変更
/etc/zabbix/zabbix_agentd.confに下記一行を足します。
EnableRemoteCommands=1
Zabbixエージェントの再起動
# systemctl restart zabbix-agent
zabbixユーザーに/bin/ansible-playbookのsudo権限付与
visudoコマンドで/etc/sudoersに下記設定を追加します。
zabbix ALL=(ALL) NOPASSWD: /bin/ansible-playbook
3. Zabbixの設定(GUI)
今回はメモリのAvailableが1024Mより少なくなった時にhttpdを再起動するようにします。
テンプレート「Template OS Linux」に含まれているアイテム「Available memory」を利用します。
テンプレート「Template OS Linux」をlocalhostに適用します。
トリガー作成
下記のように設定して、トリガーを作成します。
| 名前 | [httpd_restart] Lack of available memory on server {HOST.NAME} |
| 深刻度 | 重度の障害 |
| 条件式 | {ホスト名:vm.memory.size[available].last(0)}<1024M |アクション作成
下記のように設定して、アクションを作成します。
■アクション
| 名前 | httpd_restart |
| 実行条件 | トリガー名 含む [httpd_restart] |
■実行内容
| 実行内容 | 1 現在のホストでリモートコマンドを実行 すぐに 標準 |
■実行内容の詳細
| 実行内容のタイプ | リモートコマンド |
| ターゲットリスト | 現在のホスト |
| タイプ | カスタムスクリプト |
| 次で実行 | Zabbixエージェント |
| コマンド | sudo /bin/ansible-playbook -i localhost, -c local /opt/ansible/http_restart.yml |
4. テスト
アラート状態となるようにトリガーを下記のように変更してテストをしてみます。
{ホスト名:vm.memory.size[available].last(0)}<1024M
↓
{ホスト名:vm.memory.size[available].last(0)}<2048M
↓16:38にアラート状態となり、httpdが再起動されているのが分かります。
[root@hoge ~]# date;ps auxww | grep http[d]
2019年 3月 12日 火曜日 16:37:41 JST
apache 1358 0.0 0.9 541648 20604 ? S 04:00 0:04 /usr/sbin/httpd -DFOREGROUND
apache 1360 0.0 0.9 541912 20852 ? S 04:00 0:03 /usr/sbin/httpd -DFOREGROUND
apache 1362 0.0 0.9 541872 20844 ? S 04:00 0:04 /usr/sbin/httpd -DFOREGROUND
apache 1365 0.0 0.9 541872 20756 ? S 04:00 0:04 /usr/sbin/httpd -DFOREGROUND
apache 1409 0.0 0.9 541872 20800 ? S 04:03 0:04 /usr/sbin/httpd -DFOREGROUND
apache 9229 0.0 0.9 541356 20096 ? S 13:37 0:04 /usr/sbin/httpd -DFOREGROUND
apache 9231 0.0 0.9 541972 20288 ? S 13:37 0:04 /usr/sbin/httpd -DFOREGROUND
apache 9233 0.0 0.9 541504 20276 ? S 13:37 0:04 /usr/sbin/httpd -DFOREGROUND
apache 9235 0.0 0.9 541868 20596 ? S 13:37 0:03 /usr/sbin/httpd -DFOREGROUND
apache 11510 0.0 0.9 541084 19856 ? S 16:10 0:01 /usr/sbin/httpd -DFOREGROUND
root 21885 0.0 0.8 430908 17244 ? Ss 3月11 0:12 /usr/sbin/httpd -DFOREGROUND
[root@hoge ~]#
[root@hoge ~]#
[root@hoge ~]# date;ps auxww | grep http[d]
2019年 3月 12日 火曜日 16:44:27 JST
root 12237 0.0 0.7 430888 16676 ? Ss 16:38 0:00 /usr/sbin/httpd -DFOREGROUND
apache 12238 0.1 0.8 540812 18468 ? S 16:38 0:00 /usr/sbin/httpd -DFOREGROUND
apache 12239 0.1 0.9 540820 18892 ? S 16:38 0:00 /usr/sbin/httpd -DFOREGROUND
apache 12240 0.4 1.0 544692 23028 ? S 16:38 0:01 /usr/sbin/httpd -DFOREGROUND
apache 12241 0.1 0.8 540820 18480 ? S 16:38 0:00 /usr/sbin/httpd -DFOREGROUND
apache 12242 0.1 0.8 540820 18480 ? S 16:38 0:00 /usr/sbin/httpd -DFOREGROUND
apache 12252 0.0 0.8 540836 18548 ? S 16:38 0:00 /usr/sbin/httpd -DFOREGROUND
[root@hoge ~]#
Author And Source
この問題について(Zabbixのリモートコマンドでansible-playbookを実行してhttpdを再起動する。), 我々は、より多くの情報をここで見つけました https://qiita.com/longunder/items/0e7cfa2317aa37631ab4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .