注意:本文不涉及性能測試、性能優化中的監控,全部文字的出發點都是平常運維監控。php
在開始以前,咱們仍是先統一下認識:要監控一個對象,須要掌握哪些東西呢?node
監控對象的理解:要監控的對象你是否瞭解呢?好比CPU究竟是如何工做的?mysql
監控對象的指標:咱們要監控這個東西的什麼屬性?好比CPU的CPU使用率、負載、上下文切換。linux
肯定報警基準線:怎麼樣纔算是故障,要報警呢?好比CPU的負載到底多少算高?web
若是上述的條件不知足,那就先不要開始實施監控了,由於等作完了,你會發現,然並卵?sql
主機名shell |
IP地址數據庫 |
描述vim |
系統版本瀏覽器 |
linux-node1.com |
192.168.90.11 |
Zabbix-Server |
CentOS7 |
linux-node2.com |
192.168.90.12 |
Zabbix-Proxy |
CentOS7 |
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
在你的瀏覽器,打開網址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
Zabbix能夠用Agent/Server的架構,客戶端的採集方式分爲Agent、SNMP等,一般狀況都是使用Agent方式對服務器進行監控,後續再學習使用其餘監控方式(SNMP、JMX、IPMI)
安裝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
配置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/
Zabbix的配置雖然不是很複雜,但有的配置參數很難用上,接下來就針對ZabbixServer、ZabbixAgent的配置文件,對其每一個參數進行介紹,不求你們都深刻了解,可是但願你們經過對本小結的學習知道每一個參數是幹什麼用的。
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 |
否 |
空 |
服務器專用密鑰的文件 |
參數名稱 |
是否必須 |
默認值 |
解釋 |
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 |
否 |
空 |
預共享密鑰文件路徑 |
宏的做用是便於在模板、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協議的相關信息中等。
首先是主機級別的宏;其次是當前主機上一級模板中(直接連接至主機的模板)的宏,多個一級模板按其ID號排序;
再接着是二級模板中的宏;然後依次類推;最後檢查的是全局宏;
Zabbix若是沒法查找到某主機定義使用的宏,則不會對其進行替換操做。要使用用戶自定義宏,有如下兩種途徑:
全局宏:Administration→General→Macros
主機或模板級別的宏:編輯相應主機或者模板的屬性便可
在主機級別定義一個名爲{$NETWORK_NUMBER}的宏,以定義當前主機所接受的網卡進口流量的合理大小(固然這裏值根據具體狀況來作,僅供一個參考)如圖1-8、圖1-9
圖1-8
然後在主機的triggers中使用此宏
圖1-9