Name | Version |
---|---|
Centos 7 | 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux |
zabbix | zabbix-3.4.2 |
mysql | mysql-5.6.35 |
httpd | httpd-2.4.33 |
php | php-7.1.6 |
添加自定义模板
可以自定义一个常用模板,方便给新增主机添加监控项目
自定义aming模板
自定义模板放到Templates组
定义成功
把其他自带模板里面的某些监控项目(比如cpu、内存等)复制到zyshan模板里
选择适合的规则加入到自定义模板
在其他模板里把选择好的规则复制到自定义模板
在其他模板里复制规则,但是复制不了自动发现的规则,但我们又想要这个规则。有2个办法:第一个方法是导出包含想要规则的模板,编辑里面的内容,把想要的规则留下,不想要的删除,工作量大,容易出错,不建议这么做。
第二个方法则是:链接模板
链接模板不能删除不想要的规则,因为它是链接了其他模板的;如果想删除不要的规则,可以取消链接但不要清理,这样就与其他模板断开可以自由删除不用的规则了。
处理图形中的乱码
把自定义模板导入客户端
设置为中文后,zabbix图形的中文文字会显示小方框,由于原字体不支持中文,我们可以到win系统字库中拷贝一个中文字库过来,软连接到Linux里面去就可以解决这个问题了。
vim /usr/share/zabbix/include/defines.inc.php //搜索ZBX_FONTPATH
[root@zyshanlinux-001 ~]# vim /usr/share/zabbix/include/defines.inc.php
define('ZBX_WIDGET_ROWS', 20);
define('ZBX_FONTPATH', realpath('fonts')); // where to search for font (GD > 2.0.18)
define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name
define('ZBX_GRAPH_LEGEND_HEIGHT', 120); // when graph height is less then this value, some legend will not show up
它定义的路径是“fonts”,它是一个相对路径,绝对路径为/usr/share/zabbix/fonts,而字体文件为“ZBX_GRAPH_FONT_NAME”所定义的“graphfont”,它是一个文件,绝对路径为/usr/share/zabbix/fonts/graphfont
windows字体路径为“C:\Windows\Fonts\”,找到“simfang.ttf”(其实就是那个仿宋简体),先把它复制到桌面上,然后上传到linux的/usr/share/zabbix/fonts/,并且改名为graphfont.ttf
只要是中文字库就可以的。
服务端导入字库并做好软链接
链接成功,可以在浏览器中看到原来的方块字变成中文字体
可以增加图形
增加图形后添加相应的规则就可以了。
自动发现
由于服务端的iptables规则没关闭所以链接不是客户端,必须关闭先
[root@zyshanlinux-001 fonts]# service iptables stop
服务端和客户端都重启zabbix服务,刷新浏览器就可以看到图形变化了。
[root@zyshanlinux-001 fonts]# systemctl restart zabbix-server
[root@zyshanlinux-02 ~]# systemctl restart zabbix-agent
可以到检测中的图形去看数据
修改图形的颜色和绘图风格等元素
添加自定义监控项目
-
需求:监控某台web的80端口连接数,并出图
-
两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现
对于第一步,需要到客户端定义脚本
[root@zyshanlinux-02 ~]# vim /usr/local/sbin/estab.sh
#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
赋予定义的脚本权限
[root@zyshanlinux-02 ~]# chmod 755 /usr/local/sbin/estab.sh
客户端上编辑配置文件
[root@zyshanlinux-02 ~]# 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-agent服务
[root@zyshanlinux-02 ~]# systemctl restart zabbix-agent
验证自定义脚本有没有识别:
首先到服务端验证,执行命令;反馈0就是识别成功了,0代表没有链接,否则就会提示其他。
[root@zyshanlinux-001 ~]# zabbix_get -s 192.168.106.130 -p10050 -k 'my.estab.count'
0
zabbix_get命令,-s接IP,-p接端口(默认10050),-k接键值
然后在zabbix监控中心(浏览器)配置增加监控项目
主动还是被动式
创建图形
创建触发器告警
总结:获取需求后,通过某种方式脚本或其他取得需求的参数,到监控中心创建监控项,创建图形,创建触发器警告,从而形成监控目的,达到图形监控的需求。
配置邮件告警
1、邮箱设置:
-
使用163或者QQ邮箱发告警邮件
-
首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务
-
开启并记录授权码
2、监控中心设置邮件告警
-
“管理”,“报警媒介类型”,“创建媒体类型”
-
{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
到服务端的配置文件里看脚本放置的路径
到该路径创建报警脚本mail.py
[root@zyshanlinux-001 ~]# vi /etc/zabbix/zabbix_server.conf
+++++++++++++++++++++++++++++++++++++++++++++++++++++
### Option: AlertScriptsPath
# Full path to location of custom alert scripts.
# Default depends on compilation options.
#
# Mandatory: no
# Default:
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
++++++++++++++++++++++++++++++++++++++++++++++++++++++
[root@zyshanlinux-001 ~]# ls /usr/lib/zabbix/alertscripts
[root@zyshanlinux-001 ~]# cd !$
cd /usr/lib/zabbix/alertscripts
[root@zyshanlinux-001 alertscripts]#
该脚本是python脚本
脚本内容参考:https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from subprocess import *
def sendqqmail(username,password,mailfrom,mailto,subject,content):
gserver = 'smtp.qq.com'
gport = 25
try:
msg = MIMEText(unicode(content).encode('utf-8'))
msg['from'] = mailfrom
msg['to'] = mailto
msg['Reply-To'] = mailfrom
msg['Subject'] = subject
smtp = smtplib.SMTP(gserver, gport)
smtp.set_debuglevel(0)
smtp.ehlo()
smtp.login(username,password)
smtp.sendmail(mailfrom, mailto, msg.as_string())
smtp.close()
except Exception,err:
print "Send mail failed. Error: %s" % err
def main():
to=sys.argv[1]
subject=sys.argv[2]
content=sys.argv[3]
##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
sendqqmail('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content)
if __name__ == "__main__":
main()
#####脚本使用说明######
#1. 首先定义好脚本中的邮箱账号和密码
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"
脚本中只需要改2行:
gserver = 'smtp.qq.com' 》》》 gserver = 'smtp.163.com'
sendqqmail('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content) 》》》 自己的实际邮箱
第一个是邮箱,第二个是授权密码,第三个还是邮箱
接着就是给脚本改权限
[root@zyshanlinux-001 alertscripts]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py
命令行给邮箱发脚本
[root@zyshanlinux-001 alertscripts]# python mail.py 不告诉你@163.com "test" "11111111111111111111111"
网页版邮箱成功收到自己发给自己的邮件
创建一个接受告警邮件的用户,“管理”,“用户”,“创建用户”,“报警媒介”,类型选择“baojing”
注意用户的权限,如果没有需要到用户组去设置权限;单独在用户这里设置是不行的。
用户组修改了权限,用户这边的权限也跟着改变了
设置动作,“配置”,“动作”,“创建动作”,名称写“发邮件”(自定义)
“操作”页面,内容如下
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
恢复操作,即是恢复正常也要发个邮件告知一下
配置完成的状态
总结:邮箱的参数设置授权码,python脚本发邮件测试(路径不能错),配置监控中心用户的权限(要在用户组里该改权限)、触发媒介参数要对,邮箱地址不能写错(邮件是自己给自己发),还有动作触发等。最后要确认你设置的用户权限一定要添加到位。
测试告警
第一种测试方法:
我们用系统负载做测试,故意把触发器改为小于1就警告,一旦警告就发邮件报警。
等待1分钟左右,监控中心的监测中仪表盘的内容就由正常变为异常了
颜色发生改变,问题是系统负载的问题
异常发出警告,发送报警邮件,显示发送成功
到网页邮箱,的确是收到了告警邮件
修改触发器大于1,让不再告警,恢复正常
稍等片刻,查看监控仪表盘恢复正常
收到恢复正常的邮件
可以看一下监控中心的监测中的问题画面,有记录每次报警信息和恢复的状态记录。
第二种测试方法:
把客户端的zabbix-agent服务关闭
[root@zyshanlinux-02 ~]# systemctl stop zabbix-agent
[root@zyshanlinux-02 ~]# ps aux |grep zabbix
root 5177 0.0 0.0 112720 968 pts/0 R+ 18:30 0:00 grep --color=auto zabbix
触发器被触发规则
客户端重新启动zabbix-agent服务
[root@zyshanlinux-02 ~]# systemctl start zabbix-agent
[root@zyshanlinux-02 ~]# ps aux |grep zabbix
zabbix 5187 0.0 0.0 82780 1280 ? S 18:36 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix 5188 0.0 0.0 82780 1324 ? S 18:36 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix 5189 0.0 0.0 82780 1844 ? S 18:36 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix 5190 0.0 0.0 82780 1844 ? S 18:36 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix 5191 0.0 0.0 82780 1844 ? S 18:36 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix 5192 0.0 0.1 82912 2240 ? S 18:36 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root 5194 0.0 0.0 112720 972 pts/0 R+ 18:36 0:00 grep --color=auto zabbix
监控中心仪表盘状态恢复正常,收到恢复邮件
总结:测试告警邮件,就是反复修改触发器的规则,让它处于正常和异常之间,令邮件反复触发,达到我们想要的效果。
扩展:
zabbix监控交换机(思科) http://tryrus.blog.51cto.com/10914693/1789847zabbix远程执行命令 http://www.ywnds.com/?p=6610zabbix分布式部署 http://sfzhang88.blog.51cto.com/4995876/1364399zabbix监控tomcat(版本有点老,大家只需要参考步骤,不能照搬) http://www.fblinux.com/?p=616Prometheus入门https://www.hi-linux.com/posts/25047.html使用Prometheus+grafana打造高逼格监控平台http://blog.51cto.com/youerning/2050543OpenFalcon是一款企业级、高可用、可扩展的开源监控解决方案https://book.open-falcon.org/zh_0_2/