Monitoring/Zabbix

[Zabbix 4.4] 자빅스 포트 다운 시 서비스 자동 실행 (zabbix action remotecommand)

Nirsa 2020. 6. 17. 18:51
반응형

 

  • 자빅스 포트 다운 시 서비스 자동 실행 (zabbix action remotecommand)

자빅스 포트 다운 발생하면 action의 remotecommand를 이용해 자동으로 서비스를 실행시키는 방법 입니다.

포트 다운뿐만이 아니라 세션 등 임계치를 넘어갈때 뭔가 액션을 취한다거나, 용량이 임계치를 넘어가면 특정 로그 파일들을 삭제시키는 등 여러가지 방법으로 활용하여 사용할 수 있습니다. 어떻게 사용하느냐에 따라서 자주 발생하거나 크리티컬하지 않은 이슈들의 경우 자동으로 복구 시켜줄 수 있는 자빅스의 강력한 기능 중 하나 입니다.

본문에서는 command에 리눅스 명령어를 사용했지만 스크립트 파일 등을 실행시켜 처리할수도 있습니다.

해당 글에서는 80포트 다운 시 httpd 서비스를 재시작하는걸 기준으로 작성 합니다. 80포트 다운 트리거까지는 구성이 되어있어야 합니다. 만약 하는 방법을 모르신다면 아래 포스팅을 참고하여 트리거까지 설정 후 다시 돌아와 주세요.

자빅스 포트 모니터링 : https://nirsa.tistory.com/209?category=868727

 

  • 1) sudoers 파일 설정

우선 zabbix 계정에 sudo 권한을 주어야하기 때문에 sudoers 파일을 설정 합니다. vi 편집기로 /etc/sudoers 파일을 열으신 후 아래 코드를 삽입해주시면 됩니다. 파일을 저장하면 바로 적용되기 때문에 별도로 뭔가를 재시작 해야한다거나 하는건 없습니다.

보안에 취약해질 수 있으므로 권한을 적절히 주시면 됩니다. 저는 테스트 환경이므로 아래와 같이 설정 했습니다.

vi /etc/sudoers

# zabbix ALL=NOPASSWD: 명령어
zabbix ALL=NOPASSWD: /usr/sbin/apachectl restart

:wq

 

  • 2) zabbix_agentd.conf 파일 설정

zabbix agent에 remotecommand 기능을 활성화 해주어야 합니다. vi 편집기로 /etc/zabbix/zabbix_agentd.conf 파일(yum 설치 기준 경로)을 열으신 후 약 73 라인에 주석처리 되어있는 # EnableRemoteCommands=0을 주석 해제하고 0을 1로 변경 후 zabbix-agent 서비스를 재시작 해주세요.

아래와 같이 라인을 새로 추가하셔도 좋습니다.

vi /etc/zabbix/zabbix_agentd.conf

73 # EnableRemoteCommands=0
74 EnableRemoteCommands=1

:wq

systemctl restart zabbix-agent

 

  • 3) Zabbix Action 설정

Configuration →  Actions 후 우측 상단의 Create action을 클릭 합니다.  

 

저의 경우 test라는 호스트에서 80 포트 다운이 발생할 경우 이 액션이 동작하도록 설정 하겠습니다. 두개의 Conditions가 모두 참일 때 동작해야 하므로 Type of calculation은 AND를 선택 합니다. 이 부분은 본인의 환경과 목적에 맞게 설정해주시면 됩니다.

 

이후 상단의 Operations 를 클릭하시고 Operations 필드도 New를 눌러줍니다.

 

이후 Operation type은 Remote command로 설정해주고, Commands는 sudo apachectl restart 를 입력 하였습니다.

 

이후 Target list 필드에서 어떤 호스트들을 대상으로 remotecommand를 할것인지 정하시면 됩니다. 저는 test 호스트가 속해있는 agent test 그룹으로 설정 하겠습니다.

 

Target list를 다 적었다면 Add를 눌러서 추가하고, 다시 맨밑의 Add를 눌러서 적용 시킵니다.

 

Operations 부분이 아래와 같이 추가 되었다면 Add를 눌러서 저장 해주세요.

 

  • 적용 확인

잘 적용 되었는지 확인하기 위해 아래와 같이 httpd를 종료 시켰습니다.

 

아래와 같이 80 Port Down 알람이 발생하고, 우측의 Actions를 눌러서 보면 정상적으로 Remote command가 실행 되었습니다.

 

서버에서 확인하면 httpd 서비스가 정상적으로 실행된것을 볼 수 있습니다.

 

반응형