본문 바로가기

IT지식

3. 자빅스 모니터링 시스템 구축하기 (ZABBIX)

반응형

세상 모두의 IT 잇츠


안녕하세요. 세상 모두의 IT 잇츠입니다~!

오늘은 2편에서 진행한 Zabbix Agent 설치에 이어서 본격적으로 Agent를 모니터링해보려고 합니다.
Agent Server의 CPU, Memory, Disk 등의 모니터링이 가능하게 설정하고 Mail 발송까지 해보도록 하겠습니다.

1. Zabbix에서 Agent의 리소스 모니터링 설정해보기

아래 그림과 같이 [모니터링] → [스크린] → [스크린작성] 순으로 클릭해주세요.



- 모니터링의 [이름]을 자유롭게 설정해주세요.
- [열, 행]을 통해 설정하여 정보테이블의 크기를 설정합니다. 이 부분은 추후에 수정이 가능하니 그림과
같이 설정합니다.



- 아래 그림과 같이 Windows Server라는 설정한 이름과 크기가 보인다.
- 우측의 [맵 편집]을 클릭합니다.



- [변경]을 클릭하여 정보테이블 추가



- 모니터링할 리소스 목록을 선택합니다.
- 먼저 Windows Server를 그래프 형식으로 모니터링 해보겠습니다. [그래프] 를 선택하세요.
- 그래프를 선택 후 [선택] 버튼 클릭해주세요.





- 왼쪽 상단에 설정한 그룹과 호스트를 선택합니다.
- 리소스테이블은 [Memory usage] 를 선택해주세요.



- 마지막으로 [추가] 버튼을 클릭해주세요.






- 다시 스크린 목록에서 설정한 [Windows server] 를 클릭하면 추가한 리소스 테이블이 보인다.



2. 설정된 모니터링 확인하기

2-1. Zabbix server의 최종 스크린

2-2. Windows server의 최종 스크린


2-3. Linux server의 최종 스크린


3. 경보메일(gmail연동) 설정하기(Script이용)

이제 Agent가 지정한 임계치에 도달했을때 메일을 전송하도록 설정해보겠습니다.
메일설정은 사내에서 운영하는 메일서버를 사용하셔도 되고 외부에서 서비스하고 있는 Gmail이나 Naver, kakao를 사용하셔도 됩니다.


3-1. 미디어 타입 설정
- 사이트 좌측 상단에 [관리] → [미디어 타입] → [연락 방법 작성] 순으로 클릭합니다.
- 아래 그림과 같이 설정을 진행합니다.
- 종류는 [스크립트] 선택
- 스크립트 이름은 그림과같이 alertmail.sh 로 설정하세요.
- 스크립트 파라미터 부분은 스크립트 실행시 [수신처], [제목], [본문] 을 인자로 넘김니다. 그림과 같이 설정해주세요.
- [추가]를 눌러주시고 Zabbix Server에 콘솔로 접속합니다.

3-2. 미디어 타입 설정

- Zabbix Server에서 아래 경로에 접속하여 conf파일을 수정합니다.
# vi /etc/zabbix/zabbix_server.conf //zabbix의 스크립트 실행 절대경로 표시되어 있음(수정가능)

- 455번행 스크립트의 절대 경로를 확인합니다.
455 AlertScriptsPath=/usr/lib/zabbix/alertscripts // 455번라인

- /usr/lib/zabbix/alertscripts 경로에 스크립트 이름과 동일한 스크립트 파일을 생성
# touch/usr/lib/zabbix/alertscripts/alertmail.sh // 스크립트 파일생성
# chmod +x /usr/lib/zabbix/alertscripts/alertmail.sh //zabbix가 실행시킬 수 있도록 실행권한 부여

- 아래 스크립트를 alertmail.sh에 저장

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Zabbix SMTP Alert script for gmail.
"""


import sys
import smtplib
from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import formatdate


# Mail Account
MAIL_ACCOUNT = 'gamilgamil@gmail.com' // 본인 gmail계정 입력
MAIL_PASSWORD = '패스워드' // gmail패스워드 입력


# Sender Name
SENDER_NAME = u'Admin'


# Mail Server
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
# TLS
SMTP_TLS = True


def send_mail(recipient, subject, body, encoding='utf-8'):
session = None
msg = MIMEText(body, 'plain', encoding)
msg['Subject'] = Header(subject, encoding)
msg['From'] = Header(SENDER_NAME, encoding)
msg['To'] = recipient
msg['Date'] = formatdate()
try:
session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
if SMTP_TLS:
session.ehlo()
session.starttls()
session.ehlo()
session.login(MAIL_ACCOUNT, MAIL_PASSWORD)
session.sendmail(MAIL_ACCOUNT, recipient, msg.as_string())
except Exception as e:
raise e
finally:
# close session
if session:
session.quit()


if __name__ == '__main__':
"""
recipient = sys.argv[1]
subject = sys.argv[2]
body = sys.argv[31]
"""
if len(sys.argv) == 4:
send_mail(
recipient=sys.argv[1],
subject=sys.argv[2],
body=sys.argv[3])
else:
print u"""requires 3 parameters (recipient, subject, body)
\t$ zabbix-gmail.sh recipient subject body
"""

- 상태에 활성으로 되어 있는지 확인


3-3. 유저 연락방법 설정하기
- [관리] → [유저] → [Admin] → [편집] 순으로 클릭합니다.



- [연락방법] → [편집] 순으로 클릭합니다.



- 아래 그림과 같이 연락 방법을 설정합니다.
종류 : Script
수신처 : 경보메일을 전송할 메일주소
연락 허용 시간대 : 경보메일 발송시간 (본인이 원하는 시간대 설정)
심각도 선택 : 심각도 선택의 따라 메일이 전송되는 수준이 다릅니다.
활성 : 체크
- 위 방법을 모두 설정한 다음 [갱신]을 클릭합니다.


3-4. 트리거 설정

-아래 그림과 같이 장애 이벤트 발생 판단조건을 설정합니다.
-[설정] → [호스트] → 설정할 호스트의 트리거 클릭


-먼저 트리거를 이용한 Client 의 Ping 테스트를 진행해보겠습니다. 아래와 같이 조건식을 입력해주세요~!

{Windows agent:agent.ping.nodata(1m)}=1 // Windows Agent 호스트가 1분간 ping이 안되면 조건 성립

- 이름은 여러분들이 원하시는 이름으로 설정하시면 됩니다. 해당 트리거를 잘 알아볼수있게 설정해주세요.^^
- 마지막으로 트리거의 심각도를 지정합니다.

3-5. 액션 설정

- 트리거 발생 시 처리할 액션을 지정합니다. 여기서 액션이란 Mail, SMS 등의 방법으로 알람을 사용자가 전달받을 수 있는 기능을 말합니다.

- [설정] → [액션] → [액션 작성] → [액션] 순으로 클릭합니다.



- 디폴트 메시지와 리커버리 메시지의 내용은 아래와 같이 입력해주세요. 메일을 발송하기 위해 Agent 이름과 IP등의 인수값을 받아 메시지를 작성하게 됩니다~!

Trigger: {TRIGGER.NAME}
Trigger status: {TRIGGER.STATUS}
Trigger severity: {TRIGGER.SEVERITY}
Trigger URL: {TRIGGER.URL}


Item values:


1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}


From Mail Notification




Original event ID: {EVENT.ID}

- [조건] 을 클릭해주세요.
- 기존의 조건들은 다 삭제 해주시고 새 조건을 [트리거]로 지정 후 [선택]을 클릭합니다.



- 그룹과 호스트 선택 후 만들었던 Ping Test 트리거 선택해주세요.



- [선택] 버튼을 누르면 조건에 트리거가 추가됩니다.



- 다음은 오퍼레이션 설정입니다.
- [오퍼레이션] → [편집] 클릭!



- 아래와 같이 수정후 [갱신]을 클릭합니다.



- 완료 후 [추가] 버튼을 누르면 아래와 같이 액션이 추가된다.


3-6. 테스트

마지막으로 테스트 진행해보겠습니다.
액션을 작동시키기 위해 Agent Server의 전원을 내려주세요. 위에서 설정한 것과 같이 1분뒤 설정한 Email로 메일이 발송될겁니다.

반응형