zabbix安装完成后,能进入zabbix的页面后,并且在个人设置修改了中文显示后,进入zabbix;
问题:创建模板或者监控项时报错如下:
Error in query [INSERT INTO auditlog (userid,clock,ip,action,resourcetype,details,auditid) VALUES (‘1′,’1562247337′,’173.132.146.111′,’0′,’5′,’名称: gaojing’,’1018′)] [Incorrect string value: ‘\xE5\x90\x8D\xE7\xA7\xB0…’ for column ‘details’ at row 1]
查阅资料后发现是mysql数据库字符集的问题: zabbix数据需要使用utf-8的字符集,但是我们创建的是latin1这个字符集;
[root@zabbix ~]# cat /etc/my.cnf
[mysqld]
#skip-grant
character_set_server = utf8 #添加字符集
把mysql的zabbix库导出,重启修改后导入:
[root@zabbix ~]# mysqldump -uroot -pzabbix@123 zabbix > zabbix.sql
Warning: Using a password on the command line interface can be insecure.
[root@zabbix ~]# vim zabbix.sql
:%s/latin1/utf8/g
[root@zabbix ~]# mysql -uroot -pzabbix@123 zabbix < zabbix.sql
Warning: Using a password on the command line interface can be insecure.
再次打开zabbix网站就正常了。
创建数据库时指定字符集就不会有这个问题:
crete databaes zabbix default character set=utf8;
zabbix主动模式和被动模式相对于客户端而言的,默认情况下是被动模式,通过在网站添加主机的方式则是被动模式。因为主动模式agent段是没有10500端口的。即zabbix server会根据监控项定义的时间去主动去手机zabbix agent上的数据,更具有灵活性,但是过多的zabbix agent会增加zabbix server端的压力,agent端多的时候不能及时获取到数据;
主动模式:zabbix agent 将消息主动推送给zabbix server, 可以减轻zabbix server端的压力,监控网络不可达的区域,本地网络不稳定区域,但是模板和agent都需要修改配置。当监控主机超过300台时,进来采用主动模式。
当下面的客户端过多时,主动模式下需要添加proxy,注意proxy库和sever数据库必须分开,要不然数据会被破坏,proxy收集到数据库后,首先将数据缓存到本地,然后再一定时间之后传送给server,这个时间是用proxy配置文件决定的,proxy是一个数据收集器,它不计算触发器,不处理时间,不告警。
[root@zabbix ~]# cat /etc/zabbix/zabbix_agentd.conf|grep -v '^#'|grep -v '^$'
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0 #日记最大尺寸,大于这个尺寸会被切割,0表示不切割.
Server=172.17.9.33 #允许那台服务器采集数据.
ServerActive=172.17.9.33 #将监控数据发送到那台服务器.
Hostname=zabbix server_01 #配置主机名,这里必须与server添加的主机名一直才可以.
# StartAgents=3 #默认是3,并且是注释的,
StartAgents=0 #取消注释,并修改成0,重启agent,会发现10050端口不再监听,即修改成了主动模式.
UnsafeUserParameters=1 打开自定义参数.
UserParameter=tcpportlisten,D:\zabbix\bin\discovertcpport.bat
Include=/etc/zabbix/zabbix_agentd.d/
zabbix server与zabbix agent.
zabbix server 需要先创建主机群组,因为创建模板需要添加所属群组才可以。
主机群组和模板、主机之间的关系,主机和模板都是添加在主机群组里面的,这些都可以删除,重新来创建的。
模板可以手动创建,也可以导入其他的模板来使用。
导入后的模块加入主机群组里。一个模板下面可以链接其他的模板,链接后的模板在这个模板的监控项里是已模板的形式显示的,但取消链接后,链接后的模板就会消失的。
注释:如果是使用导入模板方式来创建模板,需要先把模板里链接的模板导入进来,然后再导入模板,否则无法导入。或者修改配置文件也可以。
自动发现规则:不论是导入模板还是手动创建的模板,都需要自动发现规则,自定义监控项是自定义发现规则基础,自定义发现规则里需要配置脚本的键值。
为什么需要自动发现规则,因为我们很多监控项监控的内容是一样的,但是监控对象不一样,自动发现可以方便我添加这些监控项。一台一台的添加监控项和枯燥的。
自定义监控项发现规则需要再agent端的zabbix_agent.conf文件里定义:以及键值对应的可执行脚本,自动发现规则获取的数据类型是JSON格式的,所有要输入JSON格式的字符串,server才能识别到。
监控的顺序: 创建主机群组—-> 导入模板—-> 模板添加到主机群组—–> 创建主机 —–> 主机链接到模板 —-> 取消链接(因为不取消链接,模板不能修改或者删除)
监控的顺序:创建主机群组 —-创建模板 —> 配置自动发现规则—-> 配置监控项原型—-> 配置触发器原型 —-> 链接到主机
监控windwos机器上的某个端口 123 10535 10835 这三个端口:
首先编写windwos脚本参数;获取到json数据格式的端口;
名称为:discovertcpport.bat 后面会要调用这个脚本:
自动获取当前机器上所有端口。
@echo off
echo {
echo "data":[
for /F "tokens=2 delims= " %%i IN ('netstat -anp tcp^|find /i "LISTENING"') DO for /F "tokens=2 delims=:" %%j IN ("%%i") DO echo {"{#TCP_PORT}":"%%j"},
echo {"{#TCP_PORT}":"10050"}
echo ]
echo }
测试:cmd窗口下执行即可:
C:\Users\EDZ>C:\Users\EDZ>D:\test\discovertcpport.bat
{
"data":[
{"{#TCP_PORT}":"21"},
{"{#TCP_PORT}":"135"},
{"{#TCP_PORT}":"443"},
{"{#TCP_PORT}":"445"},
{"{#TCP_PORT}":"139"},
{"{#TCP_PORT}":"139"},
{"{#TCP_PORT}":"10050"}
]
}
自动指定端口号:
@echo off
echo {
echo "data":[
echo {"{#TCP_PORT}":"123"},
echo {"{#TCP_PORT}":"10525"},
echo {"{#TCP_PORT}":"10835"}
echo ]
echo }
测试:cmd窗口下执行即可:
C:\Users\EDZ>D:\discovertcpport.bat
{
"data":[
{"{#TCP_PORT}":"10535"},
{"{#TCP_PORT}":"10602"},
{"{#TCP_PORT}":"10538"}
]
}
在server段进行测试:
修改agent端zabbix_agent.conf配置文件: 新增KEY值 tcpportlisten 重启agent 客户端。
UnsafeUserParameters=1
UserParameter=tcpportlisten,D:\zabbix\bin\discovertcpport.bat
在server端进行测试: zabbix_get
[root@zabbix ~]# zabbix_get -s 172.17.8.10 -k tcpportlisten
{
"data":[
{"{#TCP_PORT}":"10525"},
{"{#TCP_PORT}":"123"},
{"{#TCP_PORT}":"10835"}
]
}
也可以查看某个端口状态: 返回值 0 则表示正常 返回值 1 则表示异常。
[root@zabbix ~]# zabbix_get -s 172.17.8.10 -k net.tcp.listen[10835]
1
[root@zabbix ~]# zabbix_get -s 172.17.8.10 -k net.tcp.listen[10525]
1
[root@zabbix ~]# zabbix_get -s 172.17.8.10 -k net.tcp.listen[123]
0
注释:返回值正常就表示没问题。
接下来配置zabbix server端;
1、新建模板:
2、新建自动发现规则:注意这个键值。
、
3、自动发现中新建监控项原型:
4、自动发现中新建触发器:
5、模板关联到主机:
6、查看最新数据:
7、查看告警信息。
如下:
本次还新增了监控GPU的信息;比如GPU内存 GPU的风扇和电源应用信息;