Zabbix 是一個企業級的分佈式開源監控方案。
Zabbix是一款能夠監控各種網絡參數以及服務器健康性和完整性的軟件。Zabbix使用靈活的通知機制,允許用戶爲幾乎任何事件配置基於郵件的告警。這樣可以快速反饋服務器的問題。
Zabbix支持主動輪詢和被動捕獲。Zabbix所有的報告、統計信息和配置參數都可以通過基於Web的前端頁面進行訪問。基於Web的前端頁面可以確保您從任何方面評估您的網絡狀態和服務器的健康性。
zabbix組件
Zabbix server是整個Zabbix軟件的核心程序。
Server通過輪詢和捕獲數據,計算是否滿足觸發器條件,向用戶發送通知。是agent程序報告系統可用性、系統完整性和統計數據的核心組件,是所有配置信息、統計信息和操作數據的核心存儲器。
數據庫存儲:所有配置信息和Zabbix收集到的數據都被存儲在數據庫;
web界面:爲了從任何地方和任何平臺都可以輕鬆的訪問Zabbix, 提供基於Web的Zabbix界面。該界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server運行在同一臺物理機器上。
Zabbix proxy: 可以替Zabbix Server收集性能和可用性數據。
Proxy代理服務器:是Zabbix軟件可選擇部署的一部分,也可以幫助單臺Zabbix Server分擔負載壓力。
Zabbix agents監控代理: 部署在監控目標上,能夠主動監控本地資源和應用程序,並將收集到的數據報告給Zabbix Server。
zabbix的常用術語
host(主機):一臺想要監控的網絡設備,用ip和域名錶示。
host group (主機組):主機的邏輯組;它包含主機和模板。一個主機組裏的主機和模板之間並沒有任何直接的關聯。通常在給不同用戶組的主機分配權限時候使用主機組。
item(監控項):接收的主機的特定數據,一個度量數據。
trigger(觸發器):一個被用於定義問題閾值和“評估”監控項接收到的數據的邏輯表達式;當接收到的數據高於閾值時,觸發器從“OK”變成“Problem”狀態。當接收到的數據低於閾值時,觸發器保留/返回一個“OK”的狀態。
event(事件):單次發生的需要注意的事情,例如觸發器狀態改變或發現有監控代理自動註冊。
problem(異常):一個處在“異常”狀態的觸發器。
action(動作):一個對事件做出反應的預定義的操作。一個動作由操作(例如發出通知)和條件(當時操作正在發生)組成。
escalation(升級): 一個在動作內執行操作的自定義場景; 發送通知/執行遠程命令的序列。
media(媒介): 發送告警通知的手段;告警通知的途徑。
notification(通知):利用已選擇的媒體途徑把跟事件相關的信息發送給用戶。
remote command(遠程命令):一個預定義好的,滿足一些條件的情況下,可以在被監控主機上自動執行的命令。
template(模板):一組可以被應用到一個或多個主機上的實體(監控項,觸發器,圖形,聚合圖形,應用,LLD,Web場景)的集合;模版的任務就是加快對主機監控任務的實施;也可以使監控任務的批量修改更簡單。模版是直接關聯到每臺單獨的主機上。
application(應用):一組監控項組成的邏輯分組。
web scenario(web 場景):利用一個或多個HTTP請求來檢查網站的可用性。
frontend(前端): Zabbix提供的web界面。
zabbix API: Zabbix API允許你使用JSON RPC協議來創建、更新和獲取Zabbix對象(如主機、監控項、圖形和其他)信息或者執行任何其他的自定義的任務。
zabbix server: Zabbix軟件實現監控的核心程序,主要功能是與Zabbix proxies和Agents進行交互、觸發器計算、發送告警通知;並將數據集中保存等。
zabbix agent:一個部署在監控對象上的,能夠主動監控本地資源和應用的程序。
zabbix proxy:一個幫助Zabbix Server收集數據,分擔Zabbix Server的負載的程序。
zabbix 工作原理
zabbix-server,mysql數據庫,zabbix-web gui是可以分佈安裝在不同服務器,zabbix-server啓動時讀取配置文件
zabbix_server.conf來運行zabbix-server服務並且將日誌輸出到zabbix-server.log文件;zabbix-serevr通過主動模式或者被動模式獲取數據,zabbix-agent服務器啓動時會讀取配置文件zabbix-agent.conf輸出日誌到配置文件zabbix-agent.log;zabbix-server服務通過zabbix-web gui從數據庫提取數據繪製圖形在瀏覽器裏面進行展示;
zabbix收集數據分爲主動和被動兩種模式:
被動模式:zabbix-server服務主動請求zabbix-agent服務,zabbix-service通過zabbix-get方式獲取zabbix-agent端的數據;
主動模式:zabbix-agent主動將收集的數據定時通過zabbix-sender進程將數據發送給zabbix-server服務並且存儲在本地數據庫;
zabbix安裝方法
zabbix官方的源碼庫安裝方法
官方源碼庫地址:http://repo.zabbix.com/
1.安裝源碼庫配置部署包。包含了yum配置文件:
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@localhost ~]# wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
[root@localhost ~]# rpm -ivh zabbix-release-3.4-1.el7.centos.noarch.rpm
2.安裝部署包:
[root@localhost ~]# yum install zabbix-server-mysql zabbix-web-mysql
3.安裝初始化數據庫:
在MySQL上安裝Zabbix數據庫和用戶:
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
初始架構(Schema)和數據
[root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.14/
[root@localhost zabbix-server-mysql-3.4.14]# zcat create.sql.gz | mysql -uroot -predhat zabbix
4.啓動Zabbix Server進程
zabbix-server默認開啓端口爲10051
在zabbix_server.conf中編輯數據庫配置
[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf
91 DBHost=localhost
101 DBName=zabbix
117 DBUser=zabbix
127 DBPassword=zabbix
[root@localhost ~]# systemctl start zabbix-server
[root@localhost ~]# systemctl enable zabbix-server
[root@localhost ~]# ps -aux | grep zabbix-server
root 1879 0.0 0.0 112704 976 pts/2 R+ 20:57 0:00 grep --color=auto zabbix-server
5.編輯Zabbix前端的PHP配置
[root@localhost ~]# vim /etc/httpd/conf.d/zabbix.conf
<IfModule mod_php5.c>
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 max_input_vars 10000
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai
</IfModule>
配置修改完成重新啓動httpd服務:
[root@localhost ~]# systemctl restart httpd
6.進入瀏覽器訪問:http://主機ip/zabbix
默認的用戶名/密碼爲Admin/zabbix;
點擊進入下一步檢查是否有報錯;有報錯進行解決
輸入數據庫的用戶名和密碼,使用的數據庫以及添加使用的端口號,這裏默認
請輸入Zabbix服務器的主機名或主機IP地址和端口號,以及安裝的名稱(可選)。
輸入用戶名和密碼進入頁面
zabbix使用
1 . 將zabbix設置爲中文
點擊右上角的小人
將語言設置爲中文
2 . 新建監控主機
zabbix-agent默認開啓端口10050
[root@www ~]# rpm -ivh zabbix-release-3.4-1.el7.centos.noarch.rpm
[root@www ~]# yum install -y zabbix-agent
[root@server176 ~]# vim /etc/zabbix/zabbix_agentd.conf
97 Server=192.168.88.177 #添加zabbix-server的主機ip
138 ServerActive=192.168.88.177 #添加zabbix-server的主機ip
149 Hostname=server176 #添加zabbix-agent的主機名·
[root@www ~]# systemctl start zabbix-agent
[root@www ~]# systemctl enable zabbix-agent
配置(Configuration)—主機(Hosts)菜單,點擊創建主機(Create host)以添加新的主機
填寫主機名,可見主機名,添加羣組,設置agent代理,添加完成。在主機可以看到新建的監控主機;
zabbix_agent.conf文件配置詳解
# PidFile=/var/run/zabbix/zabbix_agentd.pid
PID文件名
# LogType=file
日誌文件路徑;如果未配置,日誌會記錄到syslog中;默認配置路徑:LogFile=/var/log/zabbix/zabbix_agentd.log
# LogFileSize=0
0 - 關閉自動輪滾.日誌文件大小,單位爲MB
# DebugLevel=3
指定日誌級別
0 - Zabbix進程啓動和停止的基本信息
1 - critical級別
2 - error級別
3 - warnings級別
4 - debug級別
5 - extended debugging (與級別4一樣. 只能使用runtime control 來設置.)
# SourceIP=
輸出連接的源IP地址
# EnableRemoteCommands=0
是否運行zabbix server在此服務器上執行遠程命令;0爲禁止;1爲允許
# LogRemoteCommands=0
記錄原型執行的shell命令日誌,級別爲warrning;0爲禁止;1爲允許
# Server=192.168.88.177
zabbix server的ip地址,多個ip使用逗號分隔
# ListenPort=10050
監聽端口,默認爲10050
# ListenIP=0.0.0.0
監聽IP地址,默認爲所有接口,多個ip之間使用逗號分隔
# StartAgents=3
用於處理被動檢查的zabbix_agentd的預設監聽數量。如果設置爲0,將禁用被動檢查,代理將不會偵聽任何TCP端口。
# ServerActive=192.168.88.177
zabbix 主動監控server的ip地址,使用逗號分隔多IP,如果註釋這個選項,那麼當前服務器的主動監控就被禁用了
# Hostname=server176
主機名,必須唯一,區分大小寫。Hostname必須和zabbix web上配置的一直,否則zabbix主動監控無法正常工作。
# HostnameItem=system.hostname
設置主機名,只有當HostMetadata沒設置才生效。
# HostMetadata=
僅用於主機自動註冊功能,如果當前值爲定義,那麼它的值默認爲HostMetadataItem的值
# HostMetadataItem=
功能同上,如果HostMetadata值未設置,這個配置纔有效。
# RefreshActiveChecks=120
多久時間(秒)刷新一次主動監控配置信息,如果刷新失敗,那麼60秒之後會重試一次;
# BufferSend=5
取值範圍:1-3600;數據存儲在buffer中最長多少秒
# BufferSize=100
取值範圍:2-65535;buffer最大值,如果buffer滿了,zabbix將會將檢索到的數據發送給zabbix server或者proxy
# MaxLinesPerSecond=20
Alias:key的別名
# Timeout=3
超時時間
# AllowRoot=0
是否允許使用root身份運行zabbix,如果值爲0,並且是在root環境下,zabbix會嘗試使用zabbix用戶運行,如果不存在會告知zabbix用戶不存在。
0 - 不允許
1 - 允許
# User=zabbix
運行zabbix程序的用戶,如果AllowRoot被禁用,纔有效果
# Include=/etc/zabbix/zabbix_agentd.d/*.conf
包含自配置文件,不同的配置寫到不同的文件中,然後include,配置文件會顯得規範。
# UnsafeUserParameters=0
允許所有字符的參數傳遞給用戶定義的參數。
# UserParameter=
用戶自定義key,
# LoadModule=
加載模塊文件,可以寫多個;必須配置LoadModulePath,指定模塊目錄;
# LoadModulePath=${libdir}/modules
模塊路徑,絕對路徑,
# TLSConnect=unencrypted
代理應該如何連接到服務器或代理。用於主動檢查。只能指定一個值:
未加密-沒有加密的連接(unencrypted)
使用TLS和預共享密鑰連接(psk)
使用TLS和證書連接(cert)
# TLSAccept=unencrypted
# TLSCAFile=
# TLSCRLFile=
# TLSServerCertIssuer=
# TLSServerCertSubject=
# TLSCertFile=
# TLSKeyFile=
# TLSPSKIdentity=
# TLSPSKFile=
3 . 爲監控主機添加監控項
配置—主機----新建主機----監控項----創建新的監控項
監控項key值
監控項key的格式,包括關鍵參數,必須遵循語法規則。要構建一個有效的監控項的Key,首先指定Key的名稱,然後選擇是否具有參數,如果都兩個都滿足則被執行。
key參數
key參數可以使用,號分隔多個參數;可以是帶引號、無引號的字符串或數組;如果key參數帶引號,則允許任何Unicode字符,如果包含雙引號則需要被反斜槓轉義;如果key參數是一個不帶引號的字符串,除逗號和右方括號(])之外,允許任何Unicode字符;如果key參數是一個數組,它需要包含在方括號中,其中各個參數需要符合多個參數的規則和語法。
自定義間隔
可以創建關於選中監控項的自定義時間規則。允許重新定義默認的更新間隔和調度,從而可以在特定時間或次序執行監控項的檢查。
一種爲靈活間隔和期間:
間隔 – 指定時間段的更新間隔;週期,期間 – 靈活間隔有效的時間段;
如果靈活間隔設置爲“0”,則在靈活間隔期間不輪詢監控項,也就是在定義時間段內不進行檢查
一種爲調度間隔
調度間隔用於在特定時間檢查監控項。雖然靈活間隔被設計爲重新定義默認監控項的更新間隔,但是調度間隔用於指定獨立執行的檢查計劃。
靈活間隔和期間:
調度間隔:格式和示例
zabbix用戶忘記密碼
進入數據庫查看zabbix數據庫的user表修改用戶密碼
[root@server2 zabbix]# mysql -uroot -p
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| zabbix |
+--------------------+
5 rows in set (0.01 sec)
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> select * from users;
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
| userid | alias | name | surname | passwd | url | autologin | autologout | lang | refresh | type | theme | attempt_failed | attempt_ip | attempt_clock | rows_per_page |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
| 1 | Admin | Zabbix | Administrator | 5fce1b3e34b520afeffb37ce08c7cd66 | | 1 | 0 | zh_CN | 30s | 3 | default | 0 | | 0 | 50 |
| 2 | guest | | | d41d8cd98f00b204e9800998ecf8427e | | 0 | 15m | en_GB | 30s | 1 | default | 0 | | 0 | 50 |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
2 rows in set (0.00 sec)
##密碼使用md5進行加密,所以修改密碼時需要將自己的密碼進行加密:
[root@server2 ~]# echo -n redhat | openssl md5
(stdin)= e2798af12a7a0f4f70b4d69efbc25f4d
MariaDB [zabbix]> update users set passwd="e2798af12a7a0f4f70b4d69efbc25f4d" where userid="1";
MariaDB [zabbix]> select * from users;
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
| userid | alias | name | surname | passwd | url | autologin | autologout | lang | refresh | type | theme | attempt_failed | attempt_ip | attempt_clock | rows_per_page |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
| 1 | Admin | Zabbix | Administrator | e2798af12a7a0f4f70b4d69efbc25f4d | | 1 | 0 | zh_CN | 30s | 3 | default | 0 | | 0 | 50 |
| 2 | guest | | | d41d8cd98f00b204e9800998ecf8427e | | 0 | 15m | en_GB | 30s | 1 | default | 0 | | 0 | 50 |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
2 rows in set (0.00 sec)
Zabbix discoverer processes more than 75% busy
zabbix在使用時出現如下報警:
發生原因
配置的每個discovery任務在一定時間內佔用1個discovery進程,而zabbix_server.conf中默認配置只有1個discovery(被註釋,默認生效);
同時爲了快速驗證自動發現效果,將discovery任務的"Delay"時間由默認的3600s設置成60s。
總結:兩個原因導致平均時間內discovery processes過高而報警。
處理解決辦法如下:將配置文件的發現進程改爲多個,一般爲0-250個;
[root@server2 ~]# vim /etc/zabbix/zabbix_server.conf
StartDiscoverers=3
[root@server2 ~]# systemctl restart zabbix-server