1. 스크립트가 저장된 기본 경로를 찾습니다. (저는 기본 경로 아래에 넣었습니다. 다른 경로로 변경하고 싶다면 zabbix_server.conf 구성 파일을 수정하세요.)
/usr/local /zabbix-server/ share/zabbix/alertscripts 스크립트 저장 경로
2. 디렉터리에 새 mail.py 파일을 만듭니다. 스크립트 참조:
cd /usr/local/zabbix-server /share/zabbix/alertscripts
vim mail.py
#!/usr/bin/python
#coding:utf-8
#author : itnihao
#메일: itnihao@qq.com
#url: https://github.com/itnihao/zabbix-book/edit/master/06-chapter/zabbix_sendmail_v2.py 스크립트를 직접 다운수정해서 복사해도 됩니다 포맷문제가 발생합니다~
import smtplib
from email.mime.text import MIMEText
import os
import argparse
로깅 가져오기
날짜/시간 가져오기
#QQ enterprise
#smtp_server = 'smtp.exmail.qq.com'
#smtp_port = 25
#smtp_user = 'itnihao_zabbix@itnihao.com'
#smtp_pass = '1234567890'
#163 메일
#smtp_server = 'smtp.163.com'
#smtp_port = 25
#smtp_user = 'itnihao_zabbix@163.com'
#smtp_pass = '1234567890'
#QQ 메일
SMTP_SERVER = 'SMTP.QQ.com'SMTP_PORT = 25
SMTP_USER ='ITNIHAO_ZABBIX@qq.com '
SMTP_PASS =' 1234567890 ' > def send_mail(mail_to,subject,content):
msg = MIMEText(content,_subtype='plain', _charset='utf-8')
msg['제목'] = unicode(제목,'UTF-8')
msg['From'] = smtp_user
msg['to'] = mail_to
전역 sendstatus
전역 senderr
시도:
if smtp_port == 465:
smtp = smtplib.SMTP_SSL()
else:
smtp = smtplib.SMTP()
smtp.connect(smtp_server,smtp_port)
smtp.login(smtp_user,smtp_pass)
smtp.sendmail(smtp_user,mail_to ,msg.as_string())
smtp.close()
print 'send ok'
sendstatus = True
제외 예외,e:
senderr=str(e)
senderr 인쇄
sendstatus = False
def logwrite(sendstatus,mail_to,content) :
logpath='/var/log/zabbix/alert'
sendstatus가 아닌 경우:
content = senderr
os.path가 아닌 경우. isdir(logpath):
os.makedirs(logpath)
t=datetime.datetime.now()
daytime=t.strftime('%Y-%m -%d')
daylogfile=logpath+'/'+str(daytime)+'.log'
login.basicConfig(filename=daylogfile,level=logging.DEBUG)
os.system( 'chown zabbix.zabbix {0}'.format(daylogfile))
logging.info('*'*130)
logging.debug(str( t)+' 메일을 {0}(으)로 보냅니다. 내용은 :n {1}'.format(mail_to,content))
if __name__ == "__main__":
파서 = argparse .ArgumentParser(description='zabbix 경고를 위해 사용자에게 메일 보내기')
parser.add_argument('mail_to',action="store", help='사용자에게 보내는 이메일 주소 ' )
parser.add_argument('subject',action="store", help='이메일 제목')
Parser.add_argument('content',action=" store", help='이메일 내용')
args = parser.parse_args()
mail_to=args.mail_to
subject=args.subject
content =args.content
send_mail(mail_to,subject,content)
logwrite(sendstatus,mail_to,content)
3, 권한 수정 스크립트
# chown zabbix.zabbix mail.py
# chmod 775 mail.py
4, zabbix 웹 구성
미디어 유형 선택 구성에서 미디어 유형을 생성합니다
다음 정보를 입력하고 선택 스크립트를 입력하고 zabbix3.0에 대해 다음 3가지 매개변수를 입력해야 합니다.
관리자에서 사용자 생성 또는 알람 설정
여기에 추가되는 내용은 이후입니다. a실패 이메일을 통보받은 이메일이 수신자입니다.
configuration-Action-create 액션에서 이메일 알람을 구현하는 액션을 생성하세요
(내 사진은 아래 템플릿과 다릅니다. 추천 템플릿을 사용하세요. 제가 사용하는 서버가 중국이 아니기 때문에 이메일 제목이 모두 깨져서 이 사진에서는 제목을 줄였습니다.)
이름:
.작업-이메일
기본 제목:
오류 {TRIGGER.STATUS}, 서버: {HOSTNAME1} 발생: {TRIGGER.NAME} 오류!
기본 메시지:
알람 호스트: {HOSTNAME1}
알람 시간: {EVENT.DATE} {EVENT.TIME}
알람 레벨: {TRIGGER.SEVERITY}
알람 정보: {TRIGGER.NAME}
알람 항목: {TRIGGER.KEY1}
문제 세부 정보: {ITEM.NAME}:{ITEM.VALUE}
현재 상태: {TRIGGER.STATUS}:{ITEM.VALUE1}
이벤트 ID: {EVENT.ID}
Montoring-Events에서 자세한 내용을 확인하세요.
복구 제목:
{TRIGGER.STATUS} 복구, 서버: {HOSTNAME1}: {TRIGGER.NAME}이(가) 복구되었습니다!
복구 메시지:
알람 호스트: {HOSTNAME1}
알람 시간: {EVENT.DATE} {EVENT.TIME}
알람 레벨: {TRIGGER.SEVERITY}
알람 정보: { TRIGGER.NAME}
알람 항목: {TRIGGER.KEY1}
문제 세부 정보: {ITEM.NAME}:{ITEM.VALUE}
현재 상태: {TRIGGER . STATUS}:{ITEM.VALUE1}
이벤트 ID: {EVENT.ID}
알람이 복원되었습니다. 안심하세요.
여기서 작업 유형, 메시지 보내기 및 메시지 스크립트에 주의해야 합니다. 올바른 것을 선택하세요.
5. zabbix를 테스트하여 이메일을 보냅니다.
에이전트 클라이언트를 찾아 중지하세요. 그럼 알람 메일을 보세요~
Kill이 성공적으로 발생한 것을 알 수 있습니다~
참고: Zabbix의 알람은 보통 5분에 한 번씩 전송됩니다. 예를 들어, 16시 20분에 중지되면 16시 25분에 오류 이메일을 받게 되고 16시 30분에 처리됩니다. 복구정보는 16시 35분부터 받아보실 수 있습니다~… 여기 시스템에서는 처음에는 mailx를 사용하여 보내려고 했지만 나중에 일부 라이브러리 파일을 설치할 수 없었고 다른 방법으로 전환하여 이메일을 받을 수 없었습니다. 결국 외부 Python 스크립트를 사용하기로 결정했습니다~· Ubuntu 시스템에는 자체 환경과 함께 제공되지 않는 많은 소프트웨어 종속성이 있습니다. .apt-get은 실제로 사용하기 쉽지 않습니다. 126 사서함을 사용할 때 클라이언트 인증 코드는 Python 스크립트에만 로그인할 수 있습니다. 마지막 선택은 회사의 회사 사서함입니다. 그런데 zabbix에서 이메일을 자주 보내다보니 상당수가 휴지통에 버려지네요... 결국 회사 메일함의 QQ 메일함으로 전달했습니다.
우분투는 개발이나 학습에는 괜찮지만, 서버로 사용하면 여전히 문제점이 많습니다.
올바른 자세: centos+zabbix+회사 이메일 후속 기사를 작성할 기회가 있으면 zabbix의 WeChat에서 경찰에 신고하겠습니다.
위 내용은 Zabbix3.0.2가 외부 Python 스크립트를 사용하여 이메일 경보를 구현하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!