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)



    이번은 메모리의 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 ~]#
    

    좋은 웹페이지 즐겨찾기