保障训练-20201021

it2024-01-02  60

5.19-21 zabbix邮件告警 5.22/23 zabbix监控nginx

一、zabbix邮件告警

使用163或者QQ邮箱发告警邮件 首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务 开启并记录授权码 然后到监控中心设置邮件告警 “管理”,“报警媒介类型”,“创建媒体类型” {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

[root@ying01 ~]# vim /etc/zabbix/zabbix_server.conf AlertScriptsPath=/usr/lib/zabbix/alertscripts [root@ying01 ~]# ls /usr/lib/zabbix/alertscripts [root@ying01 ~]# cd /usr/lib/zabbix/alertscripts [root@ying01 alertscripts]# vim mail.py #!/usr/bin/python #coding:utf-8 import smtplib from email.mime.text import MIMEText import sys mail_user = 'aming@ishiming.net' mail_pass = 'xxxxxxxx' ##定义邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨) def send_mail(to_list,subject,content): me = "zabbix 监控告警平台"+"<"+mail_user+">" msg = MIMEText(content, 'plain', 'utf-8') msg['Subject'] = subject msg['From'] = me msg['to'] = to_list try: s = smtplib.SMTP("smtpdm.aliyun.com", 25) s.login(mail_user,mail_pass) s.sendmail(me,to_list,msg.as_string()) s.close() return True except Exception,e: print str(e) return False if __name__ == "__main__": send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

给予755权限,否则不会执行此脚本;

[root@ying01 alertscripts]# chmod 755 mail.py

测试给邮箱发邮件,进行测试;

[root@ying01 alertscripts]# python mail.py txwd188@126.com"0000000" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com"111" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com"qq" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com"xyz" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com"212" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com"999" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com"wwq" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com"cda" "OK OK OK" [root@ying01 alertscripts]# python mail.py txwd188@126.com"12345" "OK OK OK"

虽然出现这种诡异现象,但是第二天,重新测试,结果都能发送;

进入web页面,进行设置

1、管理 —— 报警媒介类型 —— 创建媒体类型,然后按下图设置

2、管理 —— 用户 —— ying ,按下图选择群组

3、点击 报警媒介 ,点击 添加;此时默认为baojing,写入邮箱;

4、管理 —— 用户组 —— zabbix administrors

5、点击 权限,选中 读写,点击选择,把所有内容全选

6、回到用户,此时用户的权限 已经为读写权限

7、点击 报警媒介 ,此时如果想再增加邮箱,可以点击添加

8、配置 动作,按下图 填写

配置-->动作-->创建动作 动作名称:中英文都可以,这里叫 发邮件 条件:维护状态 非在 维护,就表示 维护状态机器不进行发邮件 新的触发条件,当触发器示警度(也就是信息,警告,一般严重...) 大于等于未分类(未分类 表示 所有状态,都会发信息) 配置-->动作-->操作 HOST:{HOST.NAME} {HOST.IP} //(定义主机名) TIME:{EVENT.DATE} {EVENT.TIME} //(定义事件发生时间) LEVEL:{TRIGGER.SEVERITY} //(定义示警度) NAME:{TRIGGER.NAME} //(定义哪一个触发器发出的报警) messages:{ITEM.NAME}:{ITEM.VALUE} // (发出告警会出现什么状态码) ID:{EVENT.ID} //(发生事件的id) 配置-->动作-->恢复操作 HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID}

9、设置恢复操作。即问题解决后,也给指定邮箱发邮件

10、在web端已经配置好,发邮件的一切配置

开始试验:

1、想产生动作,必须要有信号;因此新建一个触发器

2、点击仪表盘,最近20项内容,处查看,已经有报警,而且已经执行了动作,即发邮件

3、打开邮箱,此时能够看出此邮件,刚刚发送

4、那把触发器改大于1,此时报警接触,在菜单栏 问题 查看;发现恢复操作 的动作,也完成了;即回复邮件

5、此时再查看邮箱,已经收到 邮件 OK

二、zabbix监控nginx

在aminglinux02上安装Nginx

编辑yum仓库: vi /etc/yum.repos.d/nginx.repo 粘贴: [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 安装: yum install -y nginx

配置Nginx状态信息

vi /etc/nginx/conf.d/default.conf #增加 location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; }

测试

curl http://127.0.0.1/nginx_status

说明:

字段 含义 Active Connections 当前活动连接数,其中也包括了等待状态的连接 accepts 接收到的连接数 handled 已经处理完的连接数,该数字一般和accepts一致,如果不一致那么说明Nginx出错了 requests 总共处理的请求数,一个连接可以有多个请求,所以该值比accpets要大 Reading 正在读取请求头信息的连接数 Writing 正在发送响应报文的连接数 Waiting 处于闲置状态,等待客户端发送请求的连接数

编写监控脚本

vi /usr/local/sbin/ngx_status.sh #内容如下 #!/bin/bash url="http://127.0.0.1/nginx_status" curl=/usr/bin/curl # 检测nginx进程是否存在 function ping { /sbin/pidof nginx | wc -l } # 检测nginx性能 function active { $curl $url 2>/dev/null| grep 'Active' | awk '{print $NF}' } function reading { $curl $url 2>/dev/null| grep 'Reading' | awk '{print $2}' } function writing { $curl $url 2>/dev/null| grep 'Writing' | awk '{print $4}' } function waiting { $curl $url 2>/dev/null| grep 'Waiting' | awk '{print $6}' } function accepts { $curl $url 2>/dev/null| awk NR==3 | awk '{print $1}' } function handled { $curl $url 2>/dev/null| awk NR==3 | awk '{print $2}' } function requests { $curl $url 2>/dev/null| awk NR==3 | awk '{print $3}' } $1 chmod 755 /usr/local/sbin/ngx_status.sh

编辑zabbix_agent.conf

vi /etc/zabbix/zabbix_agentd.conf # 增加 UserParameter=nginx.status[*],/usr/local/sbin/ngx_status.sh $1

重启服务

systemctl restart zabbix-agent

zabbix_get 测试

在服务端执行 zabbix_get -s 192.168.222.129 -k 'nginx.status[accepts]

导入nginx模板

下载模板 https://github.com/aminglinux/linux2019/blob/master/zabbix_nginx_template/zbx_export_templates.xml Configuration -> Templates -> 右上角Import

链接模板

Configuration -> Hosts -> aminglinux02 -> Templates -> Select -> Add -> Update
最新回复(0)