注意:本文不涉及性能測試、性能優化中的監控,所有文字的出發點都是日常運維監控。
在開始之前,我們還是先統一下認識:要監控一個對象,需要掌握哪些東西呢?
監控對象的理解:要監控的對象你是否瞭解呢?比如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