zabbix部署文檔

目的
爲保障服務器健康穩定運行,及時監控檢測各項重要服務及端口協議等參數,因此部署ZABBIX監控服務來實現上述業務要求。

  此文檔分爲3部分
 第一部分:服務部署。
 第二部分:監控設置。
    第三部分: 後續優化。
    服務部署部分
  服務端:114.55.236.18 

客戶端:118.178.234.249
確定服務器系統版本:
服務端:

  客戶端:

確保服務器和客戶端也就是agent端版本一致
因生產環境服務器負擔比較大,因此本次部署僅在 服務端:114.55.236.18上執行操作。

1、下載源碼包並安裝依賴包
https://www.zabbix.com/download_sources
選擇最新的zabbix3.4版本

2、安裝依賴包:
yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib zlib-devel openssl OpenIPMI-devel openldap-devel openldap openssl-devel openldap-servers pcre-devel httpd wget ntpdate net-snmp* mysql-devel mysql-community-devel libxml2-devel unixODBC-devel net-snmp-devel libcurl-devel libssh2-devel bzip2 bzip2-devel curl curl-devel e2fsprogs e2fsprogs-devel freetype freetype-devel gd gd-devel glib2 glib2-devel glibc glibc-devel krb5 krb5-devel libevent libevent-devel libidn libidn-devel libjpeg libjpeg-devel libpng libpng10 libpng10-devel libpng-devel libtool libtool-libs libxml2 libxml2-devel make ncurses ncurses-devel nss_ldap openldap-clients patch pspell-devel

因服務端已有nginx,MySQL等部分基礎環境,因此需要檢查是否其他需求環境是否部署
一般LAMP環境是基礎要求。
務必檢查基礎環境要求確保zabbix能正常安裝使用
注意PHP支持:
yum install php php-devel
安裝php的擴展
yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc

3、開始部署安裝
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc

make -j4 && make install
編譯執行安裝

4、修改PHP的配置參數
vim /etc/php.ini 
date.timezone= Asia/Shanghai

max_execution_time = 300 #440行
post_max_size = 32M #729行
memory_limit = 128M #457行
mbstring.func_overload = 1 #1586行
max_input_time = 300 #132行

移動zabbix項目到httpd目錄中去(開始是/usr/local/nginx下,後經過nginx解析php頁面不能成功加之ZABBIX有部分動態效果頁面所以放棄)

cp -r frontends/php/ /var/www/html/zabbix
ll /var/www/html/
chown -R apache.apache /var/www/html/zabbix/

5、數據庫及相應權限賦予
Mysql -u root -p twoxfour
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
創建zabbix數據庫
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'zabbix';
創建zabbix用戶並賦予權限
use zabbix;
source ~/zabbix-3.4.7/database/mysql/database/mysql/schema.sql;
source ~/zabbix-3.4.7/database/mysql/images.sql;
source ~/zabbix-3.4.7/database/mysql/data.sql;
務必按此順序導入數據庫
導入結束後創建用戶並賦予相應目錄讀取權限
groupadd zabbix
useradd -M -g zabbix -s /sbin/nologin zabbix
chown -R zabbix.zabbix /usr/local/zabbix

6、修改配置文件相應位置
建立相關目錄,稍後會在conf文件中配置用到
mkdir logs
mkdir alertscripts
mkdir externalscripts

vim /usr/local/zabbix/etc/zabbix_server.conf
38行LogFile=/usr/local/zabbix/logs/zabbix_server.log
68行PidFile=/usr/local/zabbix/logs/zabbix_server.pid
95行DBName=zabbix
111行DBUser=zabbix
119行DBPassword=zabbix
440行Timeout=4
481行AlertScriptsPath=/usr/local/zabbix/alertscripts
490行ExternalScripts=/usr/local/zabbix/externalscripts
526行LogSlowQueries=3000

7、設置啓動腳本及位置
zabbix服務啓動腳本
cp misc/init.d/fedora/core/zabbix_server /etc/init.d/

將啓動腳本的路徑修改爲/usr/local/zabbix
vim /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix
設置agent端在後續第二部分做出說明

zabbix安裝目錄授權
cd /usr/local/zabbix
chown -R zabbix.zabbix  zabbix/

設置開機自啓
chkconfig --add zabbix_server
chkconfig zabbix_server on

監控端啓動服務
/etc/init.d/zabbix_server restart

7、訪問配置
首次配置訪問站點(使用nginx)方案,因爲nginx支持php不太理想導致最後出現頁面是php代碼,經過多次的處理調試沒有解決。nginx對於最新版的zabbix和php支持的不太理想,最後不得已只能轉向httpd進行php頁面解析支持。
cp -r /frontends/php /usr/local/nginx/html/zabbix
chown zabbix.zabbix -R /usr/local/nginx/html/zabbix

重啓php發生報錯

修改/etc/php.ini
always_populate_raw_post_data = -1

啓動報錯

find / -name libmysqlclient.so.18

建立一個軟鏈接
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/

進入頁面配置發現nginx對於php5.5以上版本(由於選用的是最新版zabbix,因此該版本要求php至少5.5w以上,包括其他依賴軟件的版本都相對比較高,而我們這次的nginx版本也是最新的版本,所以在部分支持上沒有達到預期的效果)支持的不是很理想,經過多次處理沒有解決,最後不得已放棄使用nginx進行頁面解析轉向apache進行支撐。

經過各類升級安裝排查,依舊沒有解決該問題,因此放棄nginx配置訪問zabbix方案,轉向apache。

使用Apache後頁面正常

初始賬號爲Admim,密碼爲zabbix
目前登錄地址使用ip+端口和路徑
原因是80端口被nginx佔用,httpd改爲81端口。
訪問地址:
http://114.55.236.18:81/zabbix/

第一部分小結:
自此監控服務端已經部署完畢,剩下的部分爲agent端部署以及各項監控功能的調試,計劃是在本週初步調整好所有監控參數和項目,根據實際監控測試效果,進行進一步的優化,最終完成監控需求。
新版本固然能體驗到最新的功能和效果,但是與此同時也意味着對各項組件要求更高,本次部署兩方面有所感悟,一方面是nginx確實對php支持很無奈,尤其是後期各種依賴包,包括回頭重新設置php參數,由於對php的不瞭解等其他方面原因,浪費了不少時間。另一方面是由於現有監控架構的情況,包括域名和端口在內的監控對象都是爲本機等一些情況,在部署思路上開始繞了一個彎路。現在回頭想來,還是應該堅持從優原則。
自此部署部分已經完成,進入下個階段監控設置測試階段。

監控設置測試及優化
一、中文顯示亂碼的問題
修改配置文件defines.inc.php
cd /var/www/html/zabbix/include/
Vim defines.inc.php
54行 define('ZBX_GRAPH_FONT_NAME', 'msyh');
103行 define('ZBX_FONT_NAME', 'msyh');
2、拷貝字體及授權
將系統微軟雅黑的字體C:\Windows\Fonts,先拷貝桌面,在將msyh,msyhbd字體拷貝/var/www/html/zabbix/fonts
注意權限的問題
cd /var/www/html/zabbix/fonts
chown -R apache.apache *

在這裏直接沒有修改以上配置文件,直接將字體mv改名保持和原文件dejavusan.ttf一致
若後續發生問題則需跑回來設置。

二、監控端配置
agent端:本機
進入安裝包位置開始部署客戶端,編譯安裝
./configure --prefix=/usr/local/zabbix --with-net-snmp --enable-agent
Make && make install

修改客戶端配置文件

vim /usr/local/zabbix/etc/zabbix_agentd.conf
#此處注意別寫錯或是執行了zabbix_agent.conf,否則配置了不生效
開始直接配置tab補全太過大意導致後面沒能啓動,後回頭發現錯誤之處非常尷尬。
自我檢討一下。
Server=x.x.x.x #填寫Server的IP地址
ServerActive=x.x.x.x #修改爲Server的IP地址
Hostname=www.xx.com #填寫本機的HostName,注意Server端要能解析
UnsafeUserParameters=1
#是否允許自定義的key,1爲允許,0爲不允許
#Include= etc/zabbix/zabbix_agentd.conf.d/

此處未做修改,因爲是本機監控端服務

注意hostname是本機,注意Server端要能解析。

一定要修改爲和服務端一致的HOSTNAME,否則後續監控會提示

UnsafeUserParameters=1
因爲以後需要用到自定義的KEY,因此必須改爲1,不能使用默認0

#Include= etc/zabbix/zabbix_agentd.conf.d/  
初次運行配置不建議開啓,否則會造成agent 查找conf 出現遞歸,經部署完成以後發現會導致agent端服務無法啓動。
除非後續配置其他模板,例如memcached,redis等,可以開啓。
但必須UnsafeUserParameters=1

在安裝包內複製agent端運行所需要的腳本

cp misc/init.d/tru64/zabbix_agentd /etc/init.d/
chmod +x /etc/init.d/zabbix_agentd

注意要檢查修改這個腳本
vim /etc/init.d/zabbix_agentd
修改DAEMON=/usr/local/zabbix/sbin/zabbix_agentd

驗證檢測server端和agent端是否連接是否正常

從zabbix 服務端驗證,以可以解析客戶端服務器的hostname爲通過驗證。

#zabbix_get -s 127.0.0.1 -p10050 -k"system.uptime"
該命令需要單獨安裝(yum -y install zabbix_get)
有返回值說明配置成功。

注:在服務端進行操作。目前我們的測試機同爲服務端和客戶端,因此該步驟省略,
但是只要有多臺監控實例,應當執行驗證環境,保證服務健康正常。

啓動zabbix agent端
/etc/init.d/zabbix_agentd start

設置開機自啓
chkconfig --add zabbix_agentd
chkconfig zabbix_agentd on

在監控頁面添加相關主機和配置模板進入初步監控階段。

如何添加查找主機項此處省略包括前序一些步驟。
常見的添加健康項根據需求進行添加設置

下圖爲監控圖形的一些檢測參數,將需要的監控項目右上角五角星點亮,添加到常用

回到監控菜單頁面中可以看到我們添加了一些常用的監控組模板

自此基本監控內容項目已經能夠通過相關圖示監控出來。

根據目前業務要求,需要監控的項目有:
流量,CPU負載,內存佔用率,memcached,以及隊列監控。

本次監控圍繞上述業務項目展開配置
找到圖形添加需要監控的項目(使用自帶的模板)

在圖形菜單選項中選擇我們需要的監控項目

一、流量監控
實際也就是監控網卡的數據包出入口的流量
但是因爲我們是阿里雲的服務器,因此我們監控的網卡請注意不要搞錯

當前我們需要監控的網卡應該是eth0
zabbix自帶的監控網絡流量的key是:
net.if.in[eth0,bytes] 和net.if.out[eth0,bytes]
這裏默認的單位是bytes
注意1M=1024 * 1024=1048576,如果我們要設定流量超過10M就報警,那麼我們的目標值就是10485760。
有關設定報警參數值將在後面陸續根據情況和指示做出進一步預警機制。

二、CPU負載
在zabbix中監控CPU的監控圖形分爲三種
1、cpu jumps
又稱cpu突發
包含 context switches per second 進程線程切換
interrupts per second 每秒的中斷次數

2、cpu load
各核心的負載均值 如果有進程等待IO 即使CPU空閒平均值也會設置爲1 此項即top裏面的cpu值

3、cpu utilization
此爲cpu使用率,超過75%就被認爲過高,因此需要根據實際情況設定報警闕值。

CPU JUMP

CPU LOAD

CPU utilization

上圖看出我們的服務器目前平均負載爲3.57%,最大43.5%屬於正常範圍健康值,後續需要根據情況做出報警設置。

磁盤佔用空間

當前磁盤空間比較健康,還剩27.59GB,佔比41.28%。後續根據要求做出報警設置。

Zabbix的磁盤監控過於死板,居然不能檢測到整體磁盤大小。後續需要做出進一步調整。

三、內存使用率

當前我們的服務器內存平均使用率爲4.98G,最小4.47G,最大5.99G,屬於健康範圍值。

四、監控memcached
1、在客戶端內
找到/usr/loca/zabbix/etc/conf/zabbix_agentd.conf裏添加
UserParameter=memcached_stats[*],(echo stats; sleep 1) | telnet 127.0.0.1 $1 2>&1 | awk '/STAT $2 / {print $NF}'

如果我們的memcache綁定了ip,需要自行修改
2、重啓zabbix agent服務
/etc/init.d/zabbix_agentd restart

如果提示報錯請殺掉進程重新賦予conf位置,這類報錯一般是由於沒有使用自定義腳本時在conf文件內自定義了include導致加載出錯。
ps -ef|grep zabbix|grep -v grep|awk '{print $2}'|xargs kill -9
/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf
2、在服務端內
在zabbix的web界面裏連接監控memcache模板  ()
在web裏選擇配置-模板
然後選擇導入
然後把相應的memcache.xml文檔導入。

然後在選擇主機加入這個模板即可。
提示導入成功以後
在模板中找到需要使用該模板的羣組

下拉找到memcached11211

請注意依次點擊添加-更新否則會出現保存以後回圖形中仍舊找不到該模板!

最後請在需要監控的主機中添加使用該模板

最後可以在圖形中發現memcached監控項圖示

自此memcached監控已經部署結束,下一步將根據使用情況進行測試監控。
如果發現各項監控均無數據,請檢查是否啓動memcached

以上是面對memcache端口不修改,正常爲11211端口。
如果是多端口或者不爲11211端口的話,可以對模板進行修改,
可以sed -i ‘s/11211/你修改的端口/g’memcache.xml
然後在重新導入到zabbix就可以監控多端口或非11211端口
同時在zabbix_agentd.conf裏把UserParameter裏的11211改成你需要的端口
模板添加完後按上述添加相應的主機就可以了。

其他部分
在添加聚合圖形時候發現,swap分區問題
提示Lack of free swap space on Zabbix server

於是在SSH端用命名查看了下

  找到配置-模板,找到該監控選項模板,選擇觸發器

找到選擇 Lack of free swap space on {HOST.NAME}
查看表達式
{Template OS Linux:system.swap.size[,pfree].last(0)}<50
修改Expression表達式爲:
{Template OS Linux:system.swap.size[,pfree].last(0)}<50 and {Template OS Linux:system.swap.size[,free].last(0)}<>0
此處修改增加了“ and {Template OS Linux:system.swap.size[,free].last(0)}<>0”判斷系統有交換空間,當系統無交換空間即{Template OS Linux:system.swap.size[,free].last(0)}的值爲0時將不會時表達式不成立就不會觸發錯誤提示。保存之後在下一個更新週期內Zabbix之前報告的“Lack of free swap space”問題就會被自動標記爲Resolved(已解決)。

點擊更新在下一週期後正常

監控tomcat多實例
在添加jxm監控tomcat時發現如下問題

在 "Zabbix server" 找不到用於監控項 key"jmx["Catalina:type=GlobalRequestProcessor,name=http-8080",bytesReceived]" 的主機接口。
分析:
目前服務器有4個tomcat實例,而且端口都已做過調整,目前zabbix監控tomcat,網上搜索大部分都是通過配置JMX端口來進行監控。這個方法對只有一個tomcat的情況支持的還是不錯的。但是針對一臺server多個實例一定會發生各種問題。

報警端設置
服務端位置位於:
/usr/local/zabbix/etc/
在服務端中配置AlertScriptsPath的路徑

AlertScriptsPath=/usr/local/zabbix/alertscripts
進入到該腳本目錄下創建一個token.sh
將釘釘機器上申請的webhook鍵入
https://oapi.dingtalk.com/robot/send?access_token=069ea5966e4491a3f8479c584f85987c3a6420bdc2e92ddd3ac9da2499016829

Vim token.sh
#!/bin/bash
to=$1
subject=$2
text=$3
curl 'https://oapi.dingtalk.com/robot/send?access_token=069ea5966e4491a3f8479c584f85987c3a6420bdc2e92ddd3ac9da2499016829' \
-H 'Content-Type: application/json' \
-d '
{"msgtype": "text",
"text": {
"content": "'"$text"'"
},
"at":{
"atMobiles":[
"'"$1"'"
],
"isAtAll":false
}
}'

保存後配置執行文件權限與歸屬
chown zabbix.zabbix token.sh
chmod +x token.sh

在頁面端添加如下

再添加 3 個參數,分別對應腳本的3個參數
收件人地址、主題、詳細內容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

添加動作

標題改爲:
故障{TRIGGER.STATUS},服務器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!
信息改爲:
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}

繼續點擊”新的” 添加發送選項

表示觸發 3次動作,每隔 120 秒觸發一次,告警發給 admin 用戶,用”釘釘”媒介發送。
點擊小”更新”添加選項,最後添加。
添加接收用戶報警

本次用於測試,因此暫時只設置羣內機器人短信報警,郵箱報警未做設置

最後不要忘記點擊更新

自此釘釘預警設置已經配置完畢。服務部署部分
服務端:114.55.236.18
客戶端:118.178.234.249
確定服務器系統版本:
服務端:

  客戶端:

確保服務器和客戶端也就是agent端版本一致
因生產環境服務器負擔比較大,因此本次部署僅在 服務端:114.55.236.18上執行操作。

1、下載源碼包並安裝依賴包
https://www.zabbix.com/download_sources
選擇最新的zabbix3.4版本

2、安裝依賴包:
yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib zlib-devel openssl OpenIPMI-devel openldap-devel openldap openssl-devel openldap-servers pcre-devel httpd wget ntpdate net-snmp* mysql-devel mysql-community-devel libxml2-devel unixODBC-devel net-snmp-devel libcurl-devel libssh2-devel bzip2 bzip2-devel curl curl-devel e2fsprogs e2fsprogs-devel freetype freetype-devel gd gd-devel glib2 glib2-devel glibc glibc-devel krb5 krb5-devel libevent libevent-devel libidn libidn-devel libjpeg libjpeg-devel libpng libpng10 libpng10-devel libpng-devel libtool libtool-libs libxml2 libxml2-devel make ncurses ncurses-devel nss_ldap openldap-clients patch pspell-devel

因服務端已有nginx,MySQL等部分基礎環境,因此需要檢查是否其他需求環境是否部署
一般LAMP環境是基礎要求。
務必檢查基礎環境要求確保zabbix能正常安裝使用
注意PHP支持:
yum install php php-devel
安裝php的擴展
yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc

3、開始部署安裝
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc

make -j4 && make install
編譯執行安裝

4、修改PHP的配置參數
vim /etc/php.ini 
date.timezone= Asia/Shanghai

max_execution_time = 300 #440行
post_max_size = 32M #729行
memory_limit = 128M #457行
mbstring.func_overload = 1 #1586行
max_input_time = 300 #132行

移動zabbix項目到httpd目錄中去(開始是/usr/local/nginx下,後經過nginx解析php頁面不能成功加之ZABBIX有部分動態效果頁面所以放棄)

cp -r frontends/php/ /var/www/html/zabbix
ll /var/www/html/
chown -R apache.apache /var/www/html/zabbix/

5、數據庫及相應權限賦予
Mysql -u root -p twoxfour
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
創建zabbix數據庫
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'zabbix';
創建zabbix用戶並賦予權限
use zabbix;
source ~/zabbix-3.4.7/database/mysql/database/mysql/schema.sql;
source ~/zabbix-3.4.7/database/mysql/images.sql;
source ~/zabbix-3.4.7/database/mysql/data.sql;
務必按此順序導入數據庫
導入結束後創建用戶並賦予相應目錄讀取權限
groupadd zabbix
useradd -M -g zabbix -s /sbin/nologin zabbix
chown -R zabbix.zabbix /usr/local/zabbix

6、修改配置文件相應位置
建立相關目錄,稍後會在conf文件中配置用到
mkdir logs
mkdir alertscripts
mkdir externalscripts

vim /usr/local/zabbix/etc/zabbix_server.conf
38行LogFile=/usr/local/zabbix/logs/zabbix_server.log
68行PidFile=/usr/local/zabbix/logs/zabbix_server.pid
95行DBName=zabbix
111行DBUser=zabbix
119行DBPassword=zabbix
440行Timeout=4
481行AlertScriptsPath=/usr/local/zabbix/alertscripts
490行ExternalScripts=/usr/local/zabbix/externalscripts
526行LogSlowQueries=3000

7、設置啓動腳本及位置
zabbix服務啓動腳本
cp misc/init.d/fedora/core/zabbix_server /etc/init.d/

將啓動腳本的路徑修改爲/usr/local/zabbix
vim /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix
設置agent端在後續第二部分做出說明

zabbix安裝目錄授權
cd /usr/local/zabbix
chown -R zabbix.zabbix  zabbix/

設置開機自啓
chkconfig --add zabbix_server
chkconfig zabbix_server on

監控端啓動服務
/etc/init.d/zabbix_server restart

7、訪問配置
首次配置訪問站點(使用nginx)方案,因爲nginx支持php不太理想導致最後出現頁面是php代碼,經過多次的處理調試沒有解決。nginx對於最新版的zabbix和php支持的不太理想,最後不得已只能轉向httpd進行php頁面解析支持。
cp -r /frontends/php /usr/local/nginx/html/zabbix
chown zabbix.zabbix -R /usr/local/nginx/html/zabbix

重啓php發生報錯

修改/etc/php.ini
always_populate_raw_post_data = -1

啓動報錯

find / -name libmysqlclient.so.18

建立一個軟鏈接
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/

進入頁面配置發現nginx對於php5.5以上版本(由於選用的是最新版zabbix,因此該版本要求php至少5.5w以上,包括其他依賴軟件的版本都相對比較高,而我們這次的nginx版本也是最新的版本,所以在部分支持上沒有達到預期的效果)支持的不是很理想,經過多次處理沒有解決,最後不得已放棄使用nginx進行頁面解析轉向apache進行支撐。

經過各類升級安裝排查,依舊沒有解決該問題,因此放棄nginx配置訪問zabbix方案,轉向apache。

使用Apache後頁面正常

初始賬號爲Admim,密碼爲zabbix
目前登錄地址使用ip+端口和路徑
原因是80端口被nginx佔用,httpd改爲81端口。
訪問地址:
http://114.55.236.18:81/zabbix/

第一部分小結:
自此監控服務端已經部署完畢,剩下的部分爲agent端部署以及各項監控功能的調試,計劃是在本週初步調整好所有監控參數和項目,根據實際監控測試效果,進行進一步的優化,最終完成監控需求。
新版本固然能體驗到最新的功能和效果,但是與此同時也意味着對各項組件要求更高,本次部署兩方面有所感悟,一方面是nginx確實對php支持很無奈,尤其是後期各種依賴包,包括回頭重新設置php參數,由於對php的不瞭解等其他方面原因,浪費了不少時間。另一方面是由於現有監控架構的情況,包括域名和端口在內的監控對象都是爲本機等一些情況,在部署思路上開始繞了一個彎路。現在回頭想來,還是應該堅持從優原則。
自此部署部分已經完成,進入下個階段監控設置測試階段。

監控設置測試及優化
一、中文顯示亂碼的問題
修改配置文件defines.inc.php
cd /var/www/html/zabbix/include/
Vim defines.inc.php
54行 define('ZBX_GRAPH_FONT_NAME', 'msyh');
103行 define('ZBX_FONT_NAME', 'msyh');
2、拷貝字體及授權
將系統微軟雅黑的字體C:\Windows\Fonts,先拷貝桌面,在將msyh,msyhbd字體拷貝/var/www/html/zabbix/fonts
注意權限的問題
cd /var/www/html/zabbix/fonts
chown -R apache.apache *

在這裏直接沒有修改以上配置文件,直接將字體mv改名保持和原文件dejavusan.ttf一致
若後續發生問題則需跑回來設置。

二、監控端配置
agent端:本機
進入安裝包位置開始部署客戶端,編譯安裝
./configure --prefix=/usr/local/zabbix --with-net-snmp --enable-agent
Make && make install

修改客戶端配置文件

vim /usr/local/zabbix/etc/zabbix_agentd.conf
#此處注意別寫錯或是執行了zabbix_agent.conf,否則配置了不生效
開始直接配置tab補全太過大意導致後面沒能啓動,後回頭發現錯誤之處非常尷尬。
自我檢討一下。
Server=x.x.x.x #填寫Server的IP地址
ServerActive=x.x.x.x #修改爲Server的IP地址
Hostname=www.xx.com #填寫本機的HostName,注意Server端要能解析
UnsafeUserParameters=1
#是否允許自定義的key,1爲允許,0爲不允許
#Include= etc/zabbix/zabbix_agentd.conf.d/

此處未做修改,因爲是本機監控端服務

注意hostname是本機,注意Server端要能解析。

一定要修改爲和服務端一致的HOSTNAME,否則後續監控會提示

UnsafeUserParameters=1
因爲以後需要用到自定義的KEY,因此必須改爲1,不能使用默認0

#Include= etc/zabbix/zabbix_agentd.conf.d/  
初次運行配置不建議開啓,否則會造成agent 查找conf 出現遞歸,經部署完成以後發現會導致agent端服務無法啓動。
除非後續配置其他模板,例如memcached,redis等,可以開啓。
但必須UnsafeUserParameters=1

在安裝包內複製agent端運行所需要的腳本

cp misc/init.d/tru64/zabbix_agentd /etc/init.d/
chmod +x /etc/init.d/zabbix_agentd

注意要檢查修改這個腳本
vim /etc/init.d/zabbix_agentd
修改DAEMON=/usr/local/zabbix/sbin/zabbix_agentd

驗證檢測server端和agent端是否連接是否正常

從zabbix 服務端驗證,以可以解析客戶端服務器的hostname爲通過驗證。

#zabbix_get -s 127.0.0.1 -p10050 -k"system.uptime"
該命令需要單獨安裝(yum -y install zabbix_get)
有返回值說明配置成功。

注:在服務端進行操作。目前我們的測試機同爲服務端和客戶端,因此該步驟省略,
但是只要有多臺監控實例,應當執行驗證環境,保證服務健康正常。

啓動zabbix agent端
/etc/init.d/zabbix_agentd start

設置開機自啓
chkconfig --add zabbix_agentd
chkconfig zabbix_agentd on

在監控頁面添加相關主機和配置模板進入初步監控階段。

如何添加查找主機項此處省略包括前序一些步驟。
常見的添加健康項根據需求進行添加設置

下圖爲監控圖形的一些檢測參數,將需要的監控項目右上角五角星點亮,添加到常用

回到監控菜單頁面中可以看到我們添加了一些常用的監控組模板

自此基本監控內容項目已經能夠通過相關圖示監控出來。

根據目前業務要求,需要監控的項目有:
流量,CPU負載,內存佔用率,memcached,以及隊列監控。

本次監控圍繞上述業務項目展開配置
找到圖形添加需要監控的項目(使用自帶的模板)

在圖形菜單選項中選擇我們需要的監控項目

一、流量監控
實際也就是監控網卡的數據包出入口的流量
但是因爲我們是阿里雲的服務器,因此我們監控的網卡請注意不要搞錯

當前我們需要監控的網卡應該是eth0
zabbix自帶的監控網絡流量的key是:
net.if.in[eth0,bytes] 和net.if.out[eth0,bytes]
這裏默認的單位是bytes
注意1M=1024 * 1024=1048576,如果我們要設定流量超過10M就報警,那麼我們的目標值就是10485760。
有關設定報警參數值將在後面陸續根據情況和指示做出進一步預警機制。

二、CPU負載
在zabbix中監控CPU的監控圖形分爲三種
1、cpu jumps
又稱cpu突發
包含 context switches per second 進程線程切換
interrupts per second 每秒的中斷次數

2、cpu load
各核心的負載均值 如果有進程等待IO 即使CPU空閒平均值也會設置爲1 此項即top裏面的cpu值

3、cpu utilization
此爲cpu使用率,超過75%就被認爲過高,因此需要根據實際情況設定報警闕值。

CPU JUMP

CPU LOAD

CPU utilization

上圖看出我們的服務器目前平均負載爲3.57%,最大43.5%屬於正常範圍健康值,後續需要根據情況做出報警設置。

磁盤佔用空間

當前磁盤空間比較健康,還剩27.59GB,佔比41.28%。後續根據要求做出報警設置。

Zabbix的磁盤監控過於死板,居然不能檢測到整體磁盤大小。後續需要做出進一步調整。

三、內存使用率

當前我們的服務器內存平均使用率爲4.98G,最小4.47G,最大5.99G,屬於健康範圍值。

四、監控memcached
1、在客戶端內
找到/usr/loca/zabbix/etc/conf/zabbix_agentd.conf裏添加
UserParameter=memcached_stats[*],(echo stats; sleep 1) | telnet 127.0.0.1 $1 2>&1 | awk '/STAT $2 / {print $NF}'

如果我們的memcache綁定了ip,需要自行修改
2、重啓zabbix agent服務
/etc/init.d/zabbix_agentd restart

如果提示報錯請殺掉進程重新賦予conf位置,這類報錯一般是由於沒有使用自定義腳本時在conf文件內自定義了include導致加載出錯。
ps -ef|grep zabbix|grep -v grep|awk '{print $2}'|xargs kill -9
/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf
2、在服務端內
在zabbix的web界面裏連接監控memcache模板  ()
在web裏選擇配置-模板
然後選擇導入
然後把相應的memcache.xml文檔導入。

然後在選擇主機加入這個模板即可。
提示導入成功以後
在模板中找到需要使用該模板的羣組

下拉找到memcached11211

請注意依次點擊添加-更新否則會出現保存以後回圖形中仍舊找不到該模板!

最後請在需要監控的主機中添加使用該模板

最後可以在圖形中發現memcached監控項圖示

自此memcached監控已經部署結束,下一步將根據使用情況進行測試監控。
如果發現各項監控均無數據,請檢查是否啓動memcached

以上是面對memcache端口不修改,正常爲11211端口。
如果是多端口或者不爲11211端口的話,可以對模板進行修改,
可以sed -i ‘s/11211/你修改的端口/g’memcache.xml
然後在重新導入到zabbix就可以監控多端口或非11211端口
同時在zabbix_agentd.conf裏把UserParameter裏的11211改成你需要的端口
模板添加完後按上述添加相應的主機就可以了。

其他部分
在添加聚合圖形時候發現,swap分區問題
提示Lack of free swap space on Zabbix server

於是在SSH端用命名查看了下

  找到配置-模板,找到該監控選項模板,選擇觸發器

找到選擇 Lack of free swap space on {HOST.NAME}
查看表達式
{Template OS Linux:system.swap.size[,pfree].last(0)}<50
修改Expression表達式爲:
{Template OS Linux:system.swap.size[,pfree].last(0)}<50 and {Template OS Linux:system.swap.size[,free].last(0)}<>0
此處修改增加了“ and {Template OS Linux:system.swap.size[,free].last(0)}<>0”判斷系統有交換空間,當系統無交換空間即{Template OS Linux:system.swap.size[,free].last(0)}的值爲0時將不會時表達式不成立就不會觸發錯誤提示。保存之後在下一個更新週期內Zabbix之前報告的“Lack of free swap space”問題就會被自動標記爲Resolved(已解決)。

點擊更新在下一週期後正常

監控tomcat多實例
在添加jxm監控tomcat時發現如下問題

在 "Zabbix server" 找不到用於監控項 key"jmx["Catalina:type=GlobalRequestProcessor,name=http-8080",bytesReceived]" 的主機接口。
分析:
目前服務器有4個tomcat實例,而且端口都已做過調整,目前zabbix監控tomcat,網上搜索大部分都是通過配置JMX端口來進行監控。這個方法對只有一個tomcat的情況支持的還是不錯的。但是針對一臺server多個實例一定會發生各種問題。

報警端設置
服務端位置位於:
/usr/local/zabbix/etc/
在服務端中配置AlertScriptsPath的路徑

AlertScriptsPath=/usr/local/zabbix/alertscripts
進入到該腳本目錄下創建一個token.sh
將釘釘機器上申請的webhook鍵入
https://oapi.dingtalk.com/robot/send?access_token=069ea5966e4491a3f8479c584f85987c3a6420bdc2e92ddd3ac9da2499016829

Vim token.sh
#!/bin/bash
to=$1
subject=$2
text=$3
curl 'https://oapi.dingtalk.com/robot/send?access_token=069ea5966e4491a3f8479c584f85987c3a6420bdc2e92ddd3ac9da2499016829' \
-H 'Content-Type: application/json' \
-d '
{"msgtype": "text",
"text": {
"content": "'"$text"'"
},
"at":{
"atMobiles":[
"'"$1"'"
],
"isAtAll":false
}
}'

保存後配置執行文件權限與歸屬
chown zabbix.zabbix token.sh
chmod +x token.sh

在頁面端添加如下

再添加 3 個參數,分別對應腳本的3個參數
收件人地址、主題、詳細內容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

添加動作

標題改爲:
故障{TRIGGER.STATUS},服務器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!
信息改爲:
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}

繼續點擊”新的” 添加發送選項

表示觸發 3次動作,每隔 120 秒觸發一次,告警發給 admin 用戶,用”釘釘”媒介發送。
點擊小”更新”添加選項,最後添加。
添加接收用戶報警

本次用於測試,因此暫時只設置羣內機器人短信報警,郵箱報警未做設置

最後不要忘記點擊更新

自此釘釘預警設置已經配置完畢。

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