LoginSignup
1
2

More than 5 years have passed since last update.

Zabbixのリモートコマンドでansible-playbookを実行してhttpdを再起動する。

Last updated at Posted at 2019-03-12

■環境
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)

今回はメモリの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] |
アクション_アクション.png

■実行内容
| 実行内容 | 1 現在のホストでリモートコマンドを実行 すぐに 標準 |

■実行内容の詳細
| 実行内容のタイプ | リモートコマンド |
| ターゲットリスト | 現在のホスト |
| タイプ | カスタムスクリプト |
| 次で実行 | Zabbixエージェント |
| コマンド | sudo /bin/ansible-playbook -i localhost, -c local /opt/ansible/http_restart.yml |

アクション_実行内容.png

4. テスト

アラート状態となるようにトリガーを下記のように変更してテストをしてみます。
{ホスト名:vm.memory.size[available].last(0)}<1024M

{ホスト名:vm.memory.size[available].last(0)}<2048M

↓16:38にアラート状態となり、httpdが再起動されているのが分かります。
test_qiita.png

[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 ~]#
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2