回顾一下:(配置监控模板)
配置 → 模板
Zabbix的特色:我们有时候会根据业务需求配置一些个性化的需求服务去监控某台web的80端口连接数,并整出监控状态图:
1.1 需要到客户端定义脚本:
# vim /usr/local/sbin/estab.sh
//内容如下
#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
给脚本授权:
# chmod 755 /usr/local/sbin/estab.sh
# vim /etc/zabbix/zabbix_agentd.conf
//增加
UnsafeUserParameters=1 //表示使用自定义脚本
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
//自定义监控项的key为my.estab.count(也就是在监控项中需要填写的键值),后面的[*]里面写脚本的参数,如果没有参数则可以省略,如果有需要用逗号分隔,脚本为/usr/local/sbin/estab.sh
重启客户端的zabbix服务:
# systemctl restart zabbix-agent
1.2 到服务端验证,执行命令:
# zabbix_get -s 192.168.59.133 -p 10050 -k 'my.estab.count'
0
-s:源地址
-p: 端口
-k: 键值
如上显示0即为没有任何连接。
出现的问题:
1.3 但是这不是我们需要的效果,效果是我们需要在web页面去随时查看:
配置 → 主机 → 监控项 → 创建监控项
其它项默认即可,如有需求按照现场需求定制。
来配置一个图形:
“配置”→“主机” →“图形” → 创建图形”
添加该项目后,到“监测中” → “最新数据”查看刚添加的项目是否有数据出现 有了数据就可以添加图形了
顺便我们也可以创建一个触发器:
配置告警是目前绝大多数企业必须要有的一个状态,遇到问题第一时间获得警告大大提升了运维的高效性,如果没有配置任何告警,等待客户反应,这是一个非常不明智的选择。
建议配置一个163邮箱,然后邮箱绑定微信,在遇到故障的第一时间就可以收到告警邮件。(QQ邮箱之前绑定的wordpress已经被QQ拉为黑名单了,不建议使用)
2.1 在开始前,一定要把这两项开启:
2.2 编辑报警媒介
登录web管理界面:
管理 → 报警媒介类型 → 创建媒体类型(不建议用自带的,不好用)
脚本名称一定要用自己自定义的!!!
脚本参数(不然不可以发邮件):
{ALERT.SENDTO} //发给谁
{ALERT.SUBJECT} //主题
{ALERT.MESSAGE} //邮件内容
2.3 写一个报警的邮件脚本:
在服务端配置:
下载安装sendEmail邮件包
[root@zhdy-04 ~]# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
[root@zhdy-04 ~]# tar xvf sendEmail-v1.56.tar.gz
[root@zhdy-04 ~]# cp -a sendEmail-v1.56/sendEmail /usr/local/bin/
[root@zhdy-04 ~]# ll /usr/local/bin/sendEmail
-rwxr-xr-x 1 root root 80213 Sep 30 2009 /usr/local/bin/sendEmail
# vim /usr/lib/zabbix/alertscripts SendEmail.sh
脚本为什么放在这边呢?因为咱们在配置文件中=vim /etc/zabbix/zabbix_server.conf有个参数 AlertScriptsPath=/usr/lib/zabbix/alertscripts 定义了位置。
#!/bin/bash
SMTP_server='smtp.163.com' # SMTP服务器
username='[email protected]' # 邮箱用户名
password='*****' # 邮箱密码
from_email_address='[email protected]' # 发件人Email地址
to_email_address="$1" # 收件人Email地址,zabbix传入的第一个参数
message_subject_utf8="$2" # 邮件标题,zabbix传入的第二个参数
message_body_utf8="$3" # 邮件内容,zabbix传入的第三个参数
# 转换邮件标题为GB2312,解决邮件标题含有中文,收到邮件显示乱码的问题。
message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_subject_utf8
EOF`
[ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8"
# 转换邮件内容为GB2312
message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_body_utf8
EOF`
[ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8"
# 发送邮件
sendEmail='/usr/local/bin/sendEmail'
$sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312
[root@zhdy-04 ~]# chmod 755 /usr/lib/zabbix/alertscripts/SendEmail.sh
[root@zhdy-04 ~]# chown zabbix:zabbix /usr/lib/zabbix/alertscripts/SendEmail.sh
[root@zhdy-04 ~]# touch /tmp/Email.log
[root@zhdy-04 ~]# chown zabbix:zabbix /tmp/Email.log
[root@zhdy-04 ~]# systemctl restart zabbix-server
测试:
[[email protected] alertscripts]# sh SendEmail.sh [email protected]163.com 测试邮件 嗯测试邮件
Sep 12 17:42:38 zhdy-04 sendEmail[62400]: Email was sent successfully!
正常收到邮件。
2.4 创建运维人员的邮箱,接受报警邮件
“管理”,“用户”,“创建用户”,
“报警媒介”,类型选择“报警error”,
关于权限选项,我们先保存当前的配置,然后进入用户群组 → Zabbix administrators → 权限
为了防止发生错误,暂时先选择全部用户。千万不要忘记点击添加
然后下一步,万事俱备,就差预警了。
“配置”,“动作”,“创建动作”,名称写“sendmail”(自定义),“操作”页面,内容如下
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.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}
开始搞事情~
配置 → 主机 → 触发器 → 创建触发器
条件是,并发数小于5,咱们的虚拟机压根就没有任何人去访问,所以轻轻松松报警。
点击添加,我们等着就可以了。
可以根据如下去调节监控间隔时长,真实环境不建议这样设置。(会造成服务器负载过高,有些必要的监控项可以设置)
稍微等个30秒 出现如下: