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