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

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