注意:本文不涉及性能測試、性能優化中的監控,所有文字的出發點都是日常運維監控。
在開始之前,我們還是先統一下認識:要監控一個對象,需要掌握哪些東西呢?
監控對象的理解:要監控的對象你是否了解呢?比如CPU到底是如何工作的?
監控對象的指標:我們要監控這個東西的什么屬性?比如CPU的CPU使用率、負載、上下文切換。
確定報警基准線:怎么樣才算是故障,要報警呢?比如CPU的負載到底多少算高?
如果上述的條件不滿足,那就先不要開始實施監控了,因為等做完了,你會發現,然並卵?
1.1Zabbix安裝前准備
主機名 |
IP地址 |
描述 |
系統版本 |
linux-node1.com |
192.168.90.11 |
Zabbix-Server |
CentOS7 |
linux-node2.com |
192.168.90.12 |
Zabbix-Proxy |
CentOS7 |
1.2Server服務端安裝配置
1.2.1zabbix-Server安裝
Zabbix3整個web界面做了一個全新的設計。
Zabbix存儲配置包以及yum配置文件。
[root@linux-node1 ~]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
Zabbix程序包安裝,以及MySQL、Zabbix-agent
[root@linux-node1 ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-server
創建Zabbix數據庫以及用戶。對這樣的說明,參考MySQL數據庫創建腳本
[root@linux-node1 ~]# mysql -uroot -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
導入初始模式和數據
[root@linux-node1 ~]# cd /usr/share/doc/zabbix-server-mysql-3.0.3/
[root@linux-node1 zabbix-server-mysql-3.0.3]# zcat create.sql.gz |mysql -uroot zabbix
編輯Zabbix_server.conf數據庫配置
[root@linux-node1 ~]# grep ^[a-Z] /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
啟動Zabbix服務進程
[root@linux-node1 ~]# systemctl start zabbix-server
Apache的配置文件/etc/httpd/conf.d/zabbix.conf默認PHP已經配置好了。取消注釋,設置正確的時區
[root@linux-node1 ~]# vim /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai
通過改變配置文件重新啟動Apache Web服務器
[root@linux-node1 ~]# systemctl start httpd
1.2.2配置Web界面
在你的瀏覽器,打開網址http://Zabbix_server_ip/zabbix。
你應該看到的web安裝向導的第一個屏幕,如圖1-1
圖1-1
確保所有軟件先決條件。如圖1-2
圖1-2
輸入連接到數據庫詳細信息。Zabbix數據庫必須已經創建好。如圖1-3
圖1-3
連接Zabbix服務細節,如果沒有改變可選擇默認如圖1-4
圖1-4
回顧一個設置概要,如圖1-5
圖1-5
完成安裝,會在/etc/zabbix/web/zabbix.conf.php生成配置文件。如圖1-6
圖1-6
Zabbix登陸准備。默認的用戶名/密碼為Admin/zabbix。如圖1-7
圖1-7
1.3Agent客戶端安裝配置
Zabbix可以用Agent/Server的架構,客戶端的采集方式分為Agent、SNMP等,通常情況都是使用Agent方式對服務器進行監控,后續再學習使用其他監控方式(SNMP、JMX、IPMI)
1.3.1zabbix-Agent安裝
安裝zabbix-agent使用yum即可.(agent版本可以低於Server版)
[root@linux-node2 ~]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
[root@linux-node2 ~]# yum install zabbix-agent -y
1.3.2zabbix-Agent配置
配置Agent和Server間通過Zabbix私有協議通信,需要了解主動模式和被動模式:
Server被動模式:Server端主動向Agent采集數據。(1000台機器以內機器推薦使用)
ServerActive主動模式:Agent主動像Server端發送數據。(1000台以上機器推薦使用)
[root@linux-node2 ~]# sed -i 's#Server=127.0.0.1#Server=192.168.90.11#g' /etc/zabbix/zabbix_agentd.conf #修改被動模式監聽地址為zabbix-server的IP地址
[root@linux-node2 ~]# egrep -v '^#|^$' /etc/zabbix/zabbix_agentd.conf #查看修改后信息
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.90.11 #被動模式 zabbix-server的IP(Agent可以有多個Ip 用於向多個Master發送數據)
ServerActive=127.0.0.1 #主動模式(Agent自動像Server發送數據)
Hostname=linux-node2.com
Include=/etc/zabbix/zabbix_agentd.d/
1.4zabbix配置文件
Zabbix的配置雖然不是很復雜,但有的配置參數很難用上,接下來就針對ZabbixServer、ZabbixAgent的配置文件,對其每個參數進行介紹,不求大家都深入了解,但是希望大家通過對本小結的學習知道每個參數是干什么用的。
1.4.1Zabbix_server.conf
Zabbix_Server很顯然這個是server的配置文件,參數具體作用如下1-1表格列出
參數名稱 |
是否必須 |
默認值 |
解釋 |
ListenPort |
否 |
10050 |
Trapper類型Item監聽的端口 |
SourceIP |
否 |
空 |
在連接其他服務器時,使用的本機IP地址 |
LogType |
是 |
file |
syslog #系統日志 file #指定日志文件位置(指定位置方便管理) console #輸出至屏幕 |
LogFile |
是 |
/var/log/zabbix/zabbix_server.log |
LogType設置file時,使用文件來記錄zabbixserver日志位置 |
LogFileSize |
否 |
1 |
0表示禁用日志自動rotation,如果日志達到了限制,並且rotation失敗,老日志文件將會被清空掉,重新生成一個新日志。 |
DebugLevel |
否 |
3 |
0 - 有關的zabbix過程的啟動和停止的基本信息 1 - 關鍵信息 2 - 錯誤信息 3 - 警告 4 - 用於調試(產生大量的信息) 5 - 擴展調試(產生更多的信息) |
PidFile |
否 |
/var/run/zabbix/zabbix_server.pid |
記錄Zabbix Server pid的文件位置 |
DBHost |
否 |
localhost |
ZabbixServer數據庫位置,設置localhost默認使用MySQL端口 |
DBName |
是 |
zabbix |
數據庫名稱 |
DBScheme |
否 |
空 |
對IBM DB2或者PostgreSQL生效 |
DBUser |
否 |
zabbix |
數據庫用戶 |
DBPassword |
否 |
空 |
數據庫密碼 |
DNSocket |
否 |
/tmp/mysql.sock |
MySQL Socket文件 |
DBPort |
否 |
3306 |
MySQL端口 |
StartPollers |
否 |
5 |
pollers進程數,可以簡單理解為zabbix工作的一個worker |
StartIPMIPollers |
否 |
0 |
IPMIPollers進程數 |
StartPollersUnreachable |
否 |
1 |
檢查unreachable hosts(包括IPMI)的進程數 |
StartTrappers |
否 |
5 |
Trappers進程數 |
StartPingers |
否 |
1 |
用於discover的discoverer的進程數 |
StartHTTPPollers |
否 |
1 |
用於HTTP檢查的進程數 |
StartTimers |
否 |
1 |
Timers的進程數 |
StartEscalators |
否 |
1 |
|
JavaGateway |
否 |
空 |
Zabbix Java gateway使用的IP或者hostname |
JavaGatewayPort |
否 |
10052 |
Java gateway使用的端口 |
StartJavaPollers |
否 |
0 |
Java pollers的進程數 |
StartVMwareCollectors |
否 |
0 |
Vmware poller的進程數 |
VMwareFrequency |
否 |
60 |
Zabbix從Vmware獲取監控指的頻率,單位是秒 |
VMwarePerfFrequency |
否 |
60 |
多久Zabbix會連接到VMware服務獲取性能數據 |
VMwareCacheSize |
否 |
8M |
Vmware的緩存,存儲Vmware數據的共享內存大小,只有當Vmware collectors啟動生效 |
VMwareTimeout |
否 |
10 |
Vmware的超時時間 |
SNMPTrapperFile |
否 |
/var/log/snmptrap/snmptrap.log |
SNMP設備將在數據發送到Server前會將SNMP數據存在文件中 |
StartSNMPTrapper |
否 |
0 |
SNMPTrapper開始 |
ListenIP |
否 |
0.0.0.0 |
Trappers監聽的IP |
HousekeepingFrequency |
否 |
1 |
Zabbix執行Housekeeper的頻率 |
MaxHousekeeperDelete |
否 |
5000 |
在Zabbix數據庫中,有一張housekeeper表,里面記錄了housekeeper要執行的任務 |
SenderFrequency |
否 |
30 |
Zabbix發送報警的時間間隔 |
CacheSize |
否 |
8M |
存儲Host、Item和Trigger數據的內存空間 |
CacheUpdateFrequency |
否 |
60 |
將配置信息同步到內存中的頻率 |
StartDBSyncers |
否 |
4 |
將數據同步到數據庫的內存大小 |
HistoryCacheSize |
否 |
16M |
存儲History數據的內存大小 |
HistoryIndexCacheSize |
否 |
4M |
歷史索引緩存大小 |
TrendCacheSize |
否 |
4M |
存儲Trends數據的內存大小 |
ValueCacheSize |
否 |
8M |
歷史值緩存大小,為0不緩存 |
Timeout |
否 |
4 |
Zabbix等待Agent、SNMP設備或者自定義腳本的執行時間 |
TrapperTimeout |
否 |
300 |
Trapper處理新數據的超時時間 |
UnreachablePeriod |
否 |
45 |
當host保持unreachable狀態后多久將其標記為unreachable狀態 |
UnavailableDelay |
否 |
60 |
當Host為unabailable狀態時,檢查Host的availability的頻率 |
UnreachableDelay |
否 |
15 |
當Host為unabailable狀態時,檢查Host的availability的頻率 |
AlertScriptsPath |
否 |
/usr/lib/zabbix/alertscripts |
自定義報警腳本的位置 |
ExternalScripts |
否 |
/usr/lib/zabbix/externalscripts |
自定義監控腳本的位置 |
FpingLocation |
否 |
/usr/sbin/fping |
fping位置,fping可執行文件的owner要設置為root,並且設置suid |
Fping6Location |
否 |
/usr/sbin/fping6 |
同上。可以處理IPV6 |
SSHKeyLocation |
否 |
空 |
使用SSH檢查和action所需要的SSH公鑰、私鑰位置 |
LogSlowQueries |
否 |
3000 |
記錄數據慢查詢,只有設置為3或者4才會生效。0默認關閉 |
TmpDir |
否 |
/tmp |
臨時文件目錄 |
StartProxyPollers |
否 |
1 |
被動Proxy的poller進程數 |
ProxyConfigFrequency |
否 |
3600 |
Zabbix Server將配置信息同步到Proxy的頻率,這個參數只對被動的Proxy生效 |
ProxyDataFrequency |
否 |
1 |
ZabbixServer請求Proxy歷史數據的頻率。這個參數只對被動的Proxy生效 |
AllowRoot |
否 |
0 |
是否允許Server以root身份運行。0表示不允許,1表示允許。 |
User |
否 |
zabbix |
下降到特定用戶權限 |
Include |
是 |
空 |
指定存放自定義監控的文件位置 |
SSLCertLocation |
否 |
${datadir}/zabbix/ssl/certs |
SSL 客戶端證書的位置(此參數只用於web監控) |
SSLKeyLocation |
否 |
${datadir}/zabbix/ssl/keys |
私鑰為 SSL 客戶端證書 |
SSLCALocation |
否 |
空 |
SSL 服務器證書驗證的證書機構 CA文件的位置( 此參數只用於 web 監測和 SMTP 身份驗證) |
LoadModulePath |
否 |
{libdir}/modules |
loadable組件的位置 |
LoadModule |
否 |
空 |
需要Server載入的loadable組件,格式為LoadModule=<module.so> |
TLSCAFile |
否 |
空 |
頂級CA證書的文件 |
TLSCRLFile |
否 |
空 |
吊銷證書文件路徑 |
TLSCertFile |
否 |
空 |
服務器證書或證書鏈的文件 |
TLSKeyFile |
否 |
空 |
服務器專用密鑰的文件 |
1.4.2Zabbix_agentd.conf
參數名稱 |
是否必須 |
默認值 |
解釋 |
PidFile |
否 |
/var/run/zabbix/zabbix_agentd.pid |
記錄Zabbix Agent pid的文件位置 |
LogType |
否 |
file |
syslog #系統日志 file #指定日志文件位置(指定位置方便管理) console #輸出至屏幕 |
LogFile |
否 |
/var/log/zabbix/zabbix_agentd.log |
LogType設置file時,使用文件來記錄zabbixserver日志位置 |
LogFileSize |
否 |
0 |
0表示禁用日志自動rotation,如果日志達到了限制,並且rotation失敗,老日志文件將會被清空掉,重新生成一個新日志。 |
DebugLevel |
否 |
3 |
0 - 有關的zabbix過程的啟動和停止的基本信息 1 - 關鍵信息 2 - 錯誤信息 3 - 警告 4 - 用於調試(產生大量的信息) 5 - 擴展調試(產生更多的信息) |
SourceIP |
否 |
空 |
對外發起網絡時使用的IP |
EnableRemoteCommands |
否 |
0 |
是否允許zabbixserver控制agent執行命令。0表示不允許。1表示允許 |
LogRemoteCommands |
否 |
0 |
|
Server |
是 |
127.0.0.1 |
ZabbixServer的IP或者主機名。ZabbixAgent只會接受來自這些IP或者主機名。如果有多個可以使用逗號分割 |
ListenPort |
否 |
10050 |
ZabbixAgent監聽的端口 |
ListenIP |
否 |
0.0.0.0 |
ZabbixAgent監聽的IP |
StartAgents |
否 |
3 |
處理被動檢查的Zabbix_agentd進程數。如果設置為0,那么這個Agent的被動檢查功能將禁止。Agent不會監聽在所有的TCP端口 |
ServerActive |
否 |
127.0.0.1 |
Zabbix主動模式(主動發送采集數據給ZabbixServer) |
Hostname |
否 |
空 |
運行ZabbixAgentd的hostname。必須與server中配置的hostname相同(默認不寫是主機名) |
HostnameItem |
否 |
system.hostname |
如果Hostname為空,會時候用這個參數定義的key的值作為Hostname,比如默認的system.hostname這個Zabbix自帶的Key |
HostMetadata |
否 |
空 |
在host autho-registration中使用。如果超過255個字符。Agent會報錯。如果沒有設置,那么會從HostMetadataItme這個參數中獲取 |
HostMetadataItem |
否 |
空 |
使用一個ket的值作為host metadate的值 |
RefreshActiveChecks |
否 |
120 |
主動檢查項目列表刷新的時間 |
BufferSend |
否 |
5 |
在buffer中緩存多少秒的數據 |
BufferSize |
否 |
100 |
在內存buffer中緩存數據的最大個數,當buffer中的數據個數達到最大值后,會將數據發送到server或者Proxy |
MaxLinesPerSecond |
否 |
20 |
對於log和logrt類型的item,這個參數定義了每秒發送給server或者Proxy的最大行數。 |
Timeout |
否 |
3 |
處理數據的超時時間 |
AllowRoot |
否 |
0 |
是否允許Server以root身份運行。0表示不允許,1表示允許。 |
User |
否 |
zabbix |
下降到特定用戶權限 |
Include |
否 |
/etc/zabbix/zabbix_agentd.d/ |
指定存放自定義監控的文件位置推薦:/etc/zabbix/zabbix_agentd.d/*.conf |
UnsafeUserParameters |
否 |
0 |
在用戶自定義的parameter中,所有的參數都會傳遞給腳本 |
UserParameter |
否 |
空 |
用戶自定義腳本的parameter,parameter意為key和腳本的對應關系。格式為UserParameter=<key>,<shell command> |
LoadModulePath |
否 |
${libdir}/modules |
loadable組件的位置 |
LoadModule |
否 |
空 |
需要Server載入的loadable組件,格式為LoadModule=<module.so> |
TLSConnect |
否 |
unencrypted |
連接不加密 |
TLSAccept |
否 |
unencrypted |
接受不加密的連接 |
TLSCAFile |
否 |
空 |
頂級CA證書的文件 |
TLSCRLFile |
否 |
空 |
吊銷證書文件路徑 |
TLSServerCertIssuer |
否 |
空 |
TLS服務器證書簽發 |
TLSServerCertSubject |
否 |
空 |
服務器證書主題 |
TLSCertFile |
否 |
空 |
服務器證書或證書鏈的文件 |
TLSKeyFile |
否 |
空 |
服務器專用密鑰的文件 |
TLSPSKIdentity |
否 |
空 |
預共享密鑰區分大小寫字符串 |
TLSPSKFile |
否 |
空 |
預共享密鑰文件路徑 |
1.5zabbix宏的概述
宏的作用是便於在模板、Items、Trigger中的引用
Zabbix有許多內置的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.NAME}等
詳細信息請參考官方文檔: https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location
為了更強的靈活性,Zabbix還支持全局宏-模板宏-主機宏級別使用用戶自定義宏(user macro),用戶自定義宏要使用”{$MACRO}”這種特殊的語法格式, 宏的名稱只能使用大寫字母、數字及下划線
宏可以應用在item keys和descriptions、Trigger名稱和表達式、主機接口IP/DNS及端口、discovery機制的SNMP協議的相關信息中等。
1.5.1宏的替換次序
首先是主機級別的宏;其次是當前主機上一級模板中(直接鏈接至主機的模板)的宏,多個一級模板按其ID號排序;
再接着是二級模板中的宏;而后依次類推;最后檢查的是全局宏;
Zabbix如果無法查找到某主機定義使用的宏,則不會對其進行替換操作。要使用用戶自定義宏,有以下兩種途徑:
全局宏:Administration→General→Macros
主機或模板級別的宏:編輯相應主機或者模板的屬性即可
1.5.2宏的使用示例
在主機級別定義一個名為{$NETWORK_NUMBER}的宏,以定義當前主機所接受的網卡進口流量的合理大小(當然這里值根據具體情況來做,僅供一個參考)如圖1-8、圖1-9
圖1-8
而后在主機的triggers中使用此宏
圖1-9