zabbix架构的工作
zabbix-server是收集信息、报警 数据库是存储zabbix-server收集的信息 zabbix-web展示数据
zabbix-agent是采集数据
忘记zabbix密码时,可以使用md5反推查看密码
MariaDB [(none)]> select * from zabbix.users;
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
| userid | alias | name | surname | passwd | url | autologin | autologout | lang | refresh | type | theme | attempt_failed | attempt_ip | attempt_clock | rows_per_page |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
| 1 | Admin | Zabbix | Administrator | 670b14728ad9902aecba32e22fa4f6bd | | 1 | 0 | zh_CN | 30s | 3 | default | 0 | | 0 | 50 |
| 2 | guest | | | d41d8cd98f00b204e9800998ecf8427e | | 0 | 15m | en_GB | 30s | 1 | default | 0 | | 0 | 50 |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
2 rows in set (0.00 sec)
MariaDB [(none)]> exit
Bye
假设71,我已经添加了10个自定义的监控项,想在7主机上,也可以添加这10个监控项。
如果没有include的话,我们需要每一个监控项都写一行配置文件。
现在的话,可以在这个目录中将定义的监控写入一个配置文件,比如磁盘的是一个配置文件,nginx的是一个配置文件。当7主机上也想要监控这些自定义监控项时,将这些文件传输过去就好了。
PS注意,传输过去以后,看看有没有取值的命令。
注意:将每个配置项写入单独单独配置文件后,原来的总的配置文件要将自定义监控项给注释掉。
[root@lsy zabbix_agentd.d 22:02:43]# pwd
/etc/zabbix/zabbix_agentd.d
这个include是在配置文件中定义的。
[root@lsy zabbix_agentd.d 22:03:47]# grep -Ev '^$|#' /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.71
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/*.conf
传参数方式监控多块硬盘,在一行配置文件中监控多个硬盘
[root@lsy zabbix_agentd.d 22:07:47]# cat tps.conf
UserParameter=tps[*],iostat |grep $1| awk '{print $$2}'
不完美之处就是print $2 中的$2 不再是打印第二行,而是识别成变量了。
UserPearmeter=tps[*],iostat|grep $1 |awk '{print $ $2 }'
这样就解决了。
[root@zabbix zabbix_agentd.d]# zabbix_get -s 10.0.0.7 -k tps[sda]
sda 0.87 19.97 14.90 1791724 1337270
[root@zabbix zabbix_agentd.d]# zabbix_get -s 10.0.0.7 -k tps[sda]
0.87
[root@zabbix zabbix_agentd.d]#
[root@lsy zabbix_agentd.d 22:02:20]# cat tps.conf
UserParameter=tps[*],iostat |grep $1| awk '{print $$2}'
页面配置
这样的好处就是让配置时,传参的方式可以让配置文件中写的比较少,但是在页面配置时,每个监控项都要定义一次,只是在配置文件中不需要写这么多行了。
zabbix默认监控项,内置key ,直接写死在二进制程序里面的,没有配置文件。
触发器的表达式:
diff() 比较两次取到的值
last() 最新值 监控nginx服务状态 ,适合用最新值
avg(5m) 平均5分钟,改值都大于>1 查看负载的情况下,容易有波动的值,使用平均。
max(5m) 大值
min(5m) 小值
nodate(5m) 没有收到数据 报警 监控主机存活
格式
{监控主机的名称:监控项key.函数方法()}
创建触发器两种方式
一种是自己手写
另外一种就是web页面点击
每一个监控项都是有取值间隔的,每隔30秒监控一次
nginx已经触发报警,修复故障,需要等待下一次监控项取值
邮件报警;
一 配置发件人
二 收件人
三 启动报警
自定义监控项 自定义触发器 邮件报警
微信报警
weixin.py
依赖requests模块
安装pip
yum install -y python-pip
pip install -i https://pypi.tuna.tsunghua.edu.cn/simple request
pip源
申请企业微信
脚本使用方法
(脚本中的内容是需要修改的)
脚本的放置路径的查看方法:
[root@zabbix ~]# grep -Ev '^$|#' /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
[root@zabbix ~]# find / -name "weixin.py"
/usr/lib/zabbix/alertscripts/weixin.py
[root@zabbix ~]#
这里的三行内容是需要修改的。
分别是
企业微信的id
密码
机器人的id
python weixin.py 收件人 标题 内容
自己就是因为少了一个参数,导致出现错误。
zabbix使用微信来发送报警
第一个历程:把报警脚本放在指定目录中
第二个历程
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
配置微信收件人
报错信息 是因为没有权限
Permission denied: '/tmp/weixin.log'
看清楚是哪个服务器上进行操作/tmp/weixin.log文件,是在zabbix-server上面。
解决办法:
1.赋予属主属组为zabbix
2.删除日志
修改一下报警发送的内容信息
内容;
默认标题
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
消息内容
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}
恢复的消息
默认标题:
服务器:{HOST.NAME}恢复: {TRIGGER.NAME}故障!
消息内容:
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}
一张图可以抵过千言万语
通过看图的趋势,图形 监控项 (结果为数据类型为数字类型)
乱码的原因就是因为字体的原因
修改字符,将文件上传到,即可
[root@zabbix fonts]# pwd
/usr/share/zabbix/assets/fonts
[root@zabbix fonts]# ll
total 7784
-rw-r--r-- 1 root root 7969108 Mar 22 2017 graphfont.ttf
随便选中监控项出图,临时出图
永久出图
自定义出图 grafana
grafana专业出图软件
使用grafana给zabbix出图
安装启动grafana
在grafana安装zabbix插件
创建一个连接zabbix的数据源
dashboard 展示面板
==yum localinstall ==
[root@zabbix ~]# ll
total 62288
-rw-------. 1 root root 1326 Mar 7 13:42 anaconda-ks.cfg
-rw-r--r-- 1 root root 63775490 Apr 14 04:12 grafana-6.7.2-1.x86_64.rpm
[root@zabbix ~]# yum localinstall -y grafana-6.7.2-1.x86_64.rpm
yum localinstall
[root@zabbix ~]# systemctl start grafana-server.service
[root@zabbix ~]# systemctl enable grafana-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.
[root@zabbix ~]# netstat -ntupl |grep 3000
tcp6 0 0 :::3000 :::* LISTEN 81004/grafana-serve
登录地址 10.0.0.71:3000
grafana 默认的密码Admin admin
命令行方式下载插件
[root@zabbix ~]# grafana-cli plugins install alexanderzobnin-zabbix-app
默认存放目录地址:(如果不能够使命令行下载的话,使用网页下载压缩包)
/var/lib/grafana/plugins
zabbix 出图 最新数据 临时出图 监控主机创建图形 永久出图
grafana:
插件
数据源
dashboard
自定义图形
导入dashboard