1、自定义监控项
Item 参数文档
https://www.zabbix.com/documentation/3.0/manual/config/items/itemtypes/zabbix_agent
1.查看与测试item
(1)查看所有的item
[root@linux-node1 ~]# zabbix_agentd -p
(2)查看 system.cpu.util[,idle]
文档参数查看
间隔时间1h
(3)测试item
[root@linux-node1 ~]# zabbix_get -s linux-node2.example.com -k agent.ping 1 [root@linux-node1 ~]# zabbix_get -s linux-node2.example.com -k system.hostname linux-node2.example.com [root@linux-node1 ~]# zabbix_get -s linux-node2.example.com -k system.cpu.switches 362173 [root@linux-node1 ~]# zabbix_get -s linux-node2.example.com -k system.cpu.util[,idle] 99.800067
2.item1:查看文件大小
全程在 node2上面
1 取值方法: /etc/services文件的大小
[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# stat -c %s /etc/services 670293
2 查看默认conf配置以及格式
[root@linux-node1 ~]# cd /etc/zabbix/zabbix_agentd.d/ [root@linux-node1 /etc/zabbix/zabbix_agentd.d]# ll total 4 -rw-r--r-- 1 root root 1531 May 27 08:33 userparameter_mysql.conf [root@linux-node1 /etc/zabbix/zabbix_agentd.d]# tail -2 userparameter_mysql.conf UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive UserParameter=mysql.version,mysql -V
3 添加自定义的 node2
[root@linux-node2 /etc/zabbix/zabbix_agentd.d]# vim monitor_file.conf
UserParameter=monitor_file,stat -c %s /etc/services
4 重启agent服务
[root@linux-node2 /etc/zabbix/zabbix_agentd.d]# systemctl restart zabbix-agent [root@linux-node2 /etc/zabbix/zabbix_agentd.d]# netstat -ntlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 4409/zabbix_agentd tcp6 0 0 :::10050 :::* LISTEN 4409/zabbix_agentd
5 在server上Test
[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# zabbix_get -s linux-node2.example.com -k monitor_file 670293
6 网页添加item
7 添加成功
8 查看数据
3. item2:监控80端口
1 安装httpd,启动
[root@linux-node2 ~]# yum install httpd -y [root@linux-node2 ~]# systemctl enable httpd [root@linux-node2 ~]# systemctl restart httpd [root@linux-node2 ~]# netstat -ntlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.194.132:80 0.0.0.0:* LISTEN 4676/httpd
2 添加item:监听80端口
3 查看数据
[root@linux-node1 /etc/zabbix/zabbix_agentd.d]# systemctl restart httpd
4. 自定义数据展示
1.定义数据
查看所有的
选择
结果
2 技术出图
[root@linux-node2 ~]# systemctl restart httpd
[root@linux-node2 ~]# systemctl stop httpd
3 技术出图2
4 字体-解决中文乱码
C:\Windows\Fonts
字体路径查找
[root@linux-node1 ~]# cat /etc/httpd/conf.d/zabbix.conf
[root@linux-node1 ~]# cd /usr/share/zabbix/fonts/ [root@linux-node1 /usr/share/zabbix/fonts]# ll [root@linux-node1 /usr/share/zabbix/fonts]# ls graphfont.ttf STZHONGS.TTF [root@linux-node1 /usr/share/zabbix/fonts]# mv STZHONGS.TTF graphfont.ttf
5 Item数据解析
(1)数据格式定制
(2)存储值 每秒一次
取值命令
[root@linux-node1 /usr/share/zabbix/fonts]
# zabbix_get -s 192.168.194.131 -k system.cpu.switches
48199769
文档解释
2、触发器 -> 执行动作
1.创建触发器
触发器表达式
2.短信报警 Action
1 触发了有什么动作,发送邮件
2 如何发送邮件
https://www.zabbix.com/documentation/3.0/manual/installation/requirements
有邮件模块smtp
3 发件人
4 收件人
5 test报警
重启80端口
发送邮件
5 邮件内容自定义
https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location
日期:{DATE} 时间:{TIME} 主机:{HOST.NAME} 1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}
启动httpd,停止httpd
6 报警声音设置
3.微信报警(未完成)
https://blog.csdn.net/yanggd1987/article/details/80093310
https://www.cnblogs.com/ssgeek/p/9223559.html
https://github.com/unixhot/Zabbix-Alert-WeChat
一般是脚本报警
查看报警目录
查看报警代码.py
4.短信平台(未完成)
阿里大鱼
Unicode编码转换 - 站长工具
http://tool.chinaz.com/tools/urlencode.aspx
3、web监控
只能zabbix server上外网,其他agent都不能上
1.监控url
1 命令行执行test
2 添加web监控
更新间隔时间 120s
模拟浏览器agent
返回状态码200
3 添加成功
2.缓存配置重新加载
[root@linux-node1 ~]# zabbix_server -R config_cache_reload
zabbix_server [20304]: command sent successfully
[root@linux-node1 ~]# zabbix_server -h
3.拓展作业
作业1:
登录验证 filter
退出验证 filter
Authertication 是ssl认证登录
验证登录可以选择,除了验证码不可以
作业2:监控天气
http://www.weather.com.cn/data/cityinfo/101160101.html
https://www.cnblogs.com/mthoutai/p/6937344.html
4、nginx监控
Nginx模板
https://gitee.com/tinee/zabbix-nginx-status
https://www.cnblogs.com/bluecarrife/p/9229693.html
https://github.com/adubkov
https://cloud.tencent.com/developer/article/1400917
1.安装配置启动nginx
1 安装
[root@linux-node2 ~]# yum list |grep nginx* nginx.x86_64 1:1.12.2-3.el7 @epel nginx-all-modules.noarch 1:1.12.2-3.el7 @epel [root@linux-node2 ~]# yum install -y nginx.x86_64 nginx-all-modules.noarch
2 配置文件,开启nginx监控
[root@linux-node2 ~]# vim /etc/nginx/nginx.con location /ngx_status { stub_status on ; #开启访问功能stub_status功能 access_log off; #关闭访问日志 allow 192.168.194.0/24; #允许访问的ip网段 allow 127.0.0.1; deny all; #拒绝除了允许的ip外的所有ip访问 }
3 检查语法,启动
[root@linux-node2 ~]# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful [root@linux-node2 ~]# systemctl stop httpd [root@linux-node2 ~]# systemctl restart nginx 端口 [root@linux-node2 ~]# netstat -nltp 3581/redis-server 1 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 106182/nginx: maste
2.准备conf文件,shell脚本,模板
1 新建conf文件
# 参考系统自带的 [root@linux-node2 /etc/zabbix/zabbix_agentd.d]# tail -2 userparameter_mysql.conf UserParameter=mysql.ping[*],HOME=/var/lib/zabbix mysqladmin -u$1 -p$2 ping | grep -c alive UserParameter=mysql.version,mysql -V
[root@linux-node2 /etc/zabbix/zabbix_agentd.d]# vim nginx_monitor.conf UserParameter=nginx.status[*],/etc/zabix/zabbix_agentd.d/nginx_monitor.sh $1
配置文件的相对路径
[root@linux-node2 /etc/zabbix/zabbix_agentd.d]# vim /etc/zabbix/zabbix_agentd.conf
2 添加.sh 文件,网上百度
[root@linux-node2 /etc/zabbix/zabbix_agentd.d]# vim nginx_monitor.sh
#!/bin/bash HOST="192.168.194.132" PORT="80" # 检测nginx进程是否存在 function ping { /sbin/pidof nginx | wc -l } # 检测nginx性能 function active { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}' } function reading { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}' } function writing { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}' } function waiting { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}' } function accepts { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}' } function handled { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}' } function requests { /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}' } # 执行function $1
执行权限
[root@linux-node2 /etc/zabbix/zabbix_agentd.d]# chmod +x nginx_monitor.sh
4 导入网上的模板
模板文件,网上百度
zbx_nginx_templates.xml
"1.0" encoding="UTF-8"?>3.0 2017-01-13T07:55:46Z Templates Template App Nginx Template App Nginx Templates Nginx Nginx Accepted connections\min 0 0 nginx.status[accepts] 60 90 365 0 3 2 0 0 0 1 <params/> 0 0 0 Nginx Nginx Active connections 0 0 nginx.status[active] 60 90 365 0 3 0 0 0 0 1 <params/> 0 0 0 Nginx Nginx Handled connections\min 0 0 nginx.status[handled] 60 90 365 0 3 2 0 0 0 1 <params/> 0 0 0 Nginx Nginx Proc_Num 0 0 nginx.status[proc_num] 60 90 365 0 3 0 0 0 0 1 <params/> 0 0 0 Nginx Nginx Reading Connections 0 0 nginx.status[reading] 60 90 365 0 3 0 0 0 0 1 <params/> 0 0 0 Nginx Nginx Requests\min 0 0 nginx.status[requests] 60 90 365 0 3 2 0 0 0 1 <params/> 0 0 0 Nginx Nginx Waiting Connections 0 0 nginx.status[waiting] 60 90 365 0 3 0 0 0 0 1 <params/> 0 0 0 Nginx Nginx Writing Connections 0 0 nginx.status[writing] 60 90 365 0 3 0 0 0 0 1 <params/> 0 0 0 Nginx {Template App Nginx:nginx.status[proc_num].last()}=0 Nginx is down on {HOST.NAME} 0 5 0 Active connections 900 200 0.0000 100.0000 1 1 0 1 0 0.0000 0.0000 0 0 0 0 0 0 00C800 0 2 0 Template App Nginx nginx.status[active] 1 0 C80000 0 2 0 Template App Nginx nginx.status[waiting] Nginx Connections\min 900 200 0.0000 100.0000 1 1 0 1 0 0.0000 0.0000 1 0 0 0 0 0 00C800 0 2 0 Template App Nginx nginx.status[accepts] 1 0 C80000 0 2 0 Template App Nginx nginx.status[handled] 2 0 0000C8 0 2 0 Template App Nginx nginx.status[requests] Nginx Proc_Num 900 200 0.0000 100.0000 1 1 0 1 0 0.0000 0.0000 1 0 0 0 0 0 00C800 0 2 0 Template App Nginx nginx.status[proc_num]
导入
3.新建主机
7个item,模板里面
重启agent
[root@linux-node2 /etc/zabbix/zabbix_agentd.d]# systemctl restart zabbix-agent
Test测试
1 访问网址test
2 server执行命令test
[root@linux-node1 ~]# zabbix_get -s 192.168.194.132 -k nginx.status[requests] 9 [root@linux-node1 ~]# zabbix_get -s 192.168.194.132 -k nginx.status[handled] 10
3 查看数据
4.老师的脚本
讲解
取第一个的时候,缓存一份
创建时间与 文件的创建时间比较
如果<60则不更新
5、mysql监控(自带模板)
1.无密码的监控
1 安装mariadb
[root@linux-node1 ~]# yum install mariadb-server -y^C
[root@linux-node1 ~]# systemctl start mariadb.service
2 取值验证 test
[root@linux-node1 ~]# mysqladmin ping | grep -c alive 1 [root@linux-node2 /etc/zabbix/zabbix_agentd.d]# mysqladmin ping mysqld is alive
3 系统配置模板
监控mysql的,默认配置ok的
# 自带的conf [root@linux-node2 ~]# cd /etc/zabbix/zabbix_agentd.d/ [root@linux-node2 /etc/zabbix/zabbix_agentd.d]# tail -2 userparameter_mysql.conf UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive UserParameter=mysql.version,mysql -V
4 新建host
5 查看data
查看日志
[root@linux-node1 ~]# tail -f /var/log/zabbix/zabbix_server.log
Items
Latest data
6 配置文件,源码剖析
如何取值,看配置文件
[root@linux-node2 /etc/zabbix/zabbix_agentd.d]# vim userparameter_mysql.conf
$1的值
[root@linux-node2 ~]# echo "show global status where Variable_name='Com_begin';" | HOME=/var/lib/zabbix mysql -N
Com_begin 39038
两个$$
第一个$代表 相对路径
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
2.带密码的1
1 配置密码
[root@linux-node2 /etc/zabbix/zabbix_agentd.d]#
cp userparameter_mysql.conf userparameter_mysql.conf.bak
[root@linux-node2 /etc/zabbix/zabbix_agentd.d]# vim userparameter_mysql.conf
2 Mysql授权 给 zabbix
MariaDB [(none)]> grant all on *.* to zabbix@'localhost' identified by 'zabbix'; Query OK, 0 rows affected (0.17 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.02 sec)
Test
重启服务
3 刷新时间修改
某些item不能正常执行
刷新时间太长,改为30
Test这些item
[root@linux-node1 ~]# zabbix_get -s 192.168.194.132 -k mysql.status[Uptime]
1189
3.带密码的监控2:宏{$PASSWD},{$USER}
思想:
如果按照个新的mysql
Usermysql文件替换下,链接个模板,变量设置user pwd。
1.每个agent的数据库密码不一样,如何自动化,每个文件都要配置?
Zabbix可以自定义变量 宏
2.修改配置文件,使其生效
[root@linux-node2 /etc/zabbix/zabbix_agentd.d]# vim userparameter_mysql.conf
* 可以传多个参数
$1 $2 $3
3.重启agent,test
[root@linux-node2 /etc/zabbix/zabbix_agentd.d]# systemctl restart zabbix-agent
test执行命令
[root@linux-node1 ~]# zabbix_get -s 192.168.194.132 -k mysql.status[zabbix,zabbix,Uptime]
1471
4.修改模板,定义宏变量
定义变量
{$PASSWD}{$USER}
修改 template
Enable
5.修改item
有mysql.status,每个item都要执行
{$USER},{$PASSWD},
完成
只需要修改模板,剩下的item都变了
使用变量了
6. test,不同用户名密码,都可以执行
修改密码,重新授权
MariaDB [(none)]> grant all on *.* to monitor@'localhost' identified by '123456'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec)
修改 宏变量
查看data
6、mysql监控使用percona
https://www.cnblogs.com/wxzhe/p/10670546.html
https://blog.csdn.net/qq_31613055/article/details/78781752
1. Percona介绍
Percona Server由领先的MySQL咨询公司Percona发布。 Percona Server是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB 。
Percona团队的最终声明是“Percona Server是由Oracle发布的最接近官方MySQL Enterprise发行版的版本”,因此与其他更改了大量基本核心MySQL代码的分支有所区别。 Percona Server的一个缺点是他们自己管理代码,不接受外部开发人员的贡献,以这种方式确保他们对产品中所包含功能的控制。
Percona提供了高性能XtraDB引擎,还提供PXC高可用解决方案,并且附带了perconatoolkit等DBA管理工具箱
2.安装percona,php
在node2 上面
安装 percona
[root@linux-node2 ~]# rpm -ivh https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm
安装完成会提示脚本和模板的位置
Scripts are installed to /var/lib/zabbix/percona/scripts Templates are installed to /var/lib/zabbix/percona/templates
安装php
[root@linux-node2 ~]# yum install -y php php-mysql
3.配置文件,脚本,模板
(1)copy监控项配置到zabbix_agentd.d
[root@linux-node2 /var/lib/zabbix/percona/templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
(2)修改脚本
[root@linux-node2 /var/lib/zabbix/percona/scripts]# vim get_mysql_stats_wrapper.sh
[root@linux-node2 /var/lib/zabbix/percona/scripts]# vim ss_get_mysql_stats.php
脚本1
Mysql密码
间隔300s,监控不要影响服务
脚本2
(3)重启agent,test
[root@linux-node2 /var/lib/zabbix/percona/scripts]# systemctl restart zabbix-agent
Test,如何取值
[root@linux-node1 ~]# zabbix_get -s 192.168.194.132 -k MySQL.Open-files
21
(4)导入自带模板
模板自带(有问题),导入到桌面
[root@linux-node2 /var/lib/zabbix/percona/templates]# sz zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
导入到zabbix
把上面scripts下面的xml文件拷贝到win主机上,然后导入,导入的时候会报错
无底洞,不修改了
官方的是zabbix2.2 不兼容
(5)导入ok的模板
百度给的解决办法是: 将模板导入到2.4环境中,然后再导出到3的环境中,不会报错。百度上也提供了一个模板导入,
模板连接:
链接:https://pan.baidu.com/s/1HvoOGNqI9HYC9ymgi7HsDQ 提取码:emsh
wget http://jaminzhang.github.io/soft-conf/Zabbix/zbx_percona_mysql_template.xml
直接用好的,网上下载
4.创建Hosts
5. 依赖
添加触发器的时候,添加依赖
如果它报警了我就不报警了。
扩展:
报警依赖
优先监控路由器,再监控服务器
减少误报
所有服务器都依赖交换机
交换机报警,其他的就不报警了
7、总结
1.学习方法
学习监控的话,更多跟系统学习这些知识。
配置conf文件怎么写
触发器怎么设计
Item怎么转换,存储的
2.问题
Question1
检查发件人设置
Question2
解决:
/etc/zabbix/zabbix_agentd.d
只能放conf文件,必须使用的