mysql+zabbix部署二)

  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、新建模板:Port Alert

2、新建自动发现规则:注意这个键值。tcpportlisten

3、自动发现中新建监控项原型:net.tcp.listen[{#TCP_PORT}]

4、自动发现中新建触发器:

名称:port:{#TCP_PORT} is down, please check

表达式:{Port Alert:net.tcp.listen[{#TCP_PORT}].last()}<>1

5、模板关联到主机:

6、查看最新数据:

7、查看告警信息。

如下:

本次还新增了监控GPU的信息;比如GPU内存  GPU的风扇和电源应用信息;

 

监控linux的脚本内容如下:

[root@beijin zabbix]# cd /etc/zabbix/script/
[root@beijin script]# ls
port_alert.sh  port.conf
[root@beijin script]# cat port_alert.sh 
#/bin/bash
CONFIG_FILE=/etc/zabbix/script/port.conf
Check(){
    grep -vE '(^ *#|^$)' ${CONFIG_FILE} | grep -vE '^ *[0-9]+' &> /dev/null
    if [ $? -eq 0 ]
    then
        echo Error: ${CONFIG_FILE} Contains Invalid Port.
        exit 1
    else
        portarray=($(grep -vE '(^ *#|^$)' ${CONFIG_FILE} | grep -E '^ *[0-9]+'))
    fi
}
PortDiscovery(){
    length=${#portarray[@]}
    printf "{\n"
    printf  '\t'"\"data\":["
    for ((i=0;i<$length;i++))
      do
        printf '\n\t\t{'
        printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
        if [ $i -lt $[$length-1] ];then
                    printf ','
        fi
      done
    printf  "\n\t]\n"
    printf "}\n"
}
port(){
    Check
    PortDiscovery
}
port
[root@beijin script]# cat port.conf 
56888
56072
3306
80
9000
123
4567
[root@beijin script]# tail /etc/zabbix/zabbix_agentd.conf

### Option: TLSPSKFile
#	Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=
# 打开自定义参数
UnsafeUserParameters=1
UserParameter=tcpportlisten,/etc/zabbix/script/port_alert.sh  

重启zabbix-server和zabbix-agent

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章