zabbix 是一個基於 WEB 界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。zabbix 能監視各種網絡參數,保證服務器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位解決存在的各種問題。
Zabbix支持多種網絡方式下的監控,可以通過分布式的部署和安裝監控代理Zabbix,通過C/S模式采集數據,通過B/S模式在Web端展示和配置。Zabbix Agent監控端口10050。
(1).zabbix的主要特點
安裝配置簡單,學習成本低,支持多語言(包括中文),免費開源,自動發現服務器與網絡設備分布式監視,Web集中管理,可以無agent監視,用戶安全認證和柔軟的授權方式,通過Web設置或查看監視結果,email等功能。
(2).zabbix的主要功能
監控CPU負載、內存使用、磁盤使用、網絡狀態、端口監控、日志監控、插件開發自定義
(3).zabbix運行機制
zabbix由zabbix server與可選組件zabbix agent兩部分組成。
Zabbix Server 可以通過 SNMP,Zabbix agent,Ping,端口監視等方法提供對遠程服務器/網絡狀態的監視,數據收集功能,可以在運行 Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,OS X,Windows多平台。
Zabbix Agent 安裝在需要被監控的目標服務器上,主要完成對硬件信息與操作系統有關的內存,CPU 等信息收集。
Zabbix Server可以單獨監視遠程服務器的服務狀態,同時也可以與Zabbix Agent結合。可以輪詢Zabbix Agent主動接收監視數據(trapping傳遞 方式),同時還可以被動接收Zabbix Agent發送的數據。
(4).准備安裝包和部署環境
注意:日志文件在/tmp/目錄下。
下載Zabbix的源碼包:https://www.zabbix.com/download_sources。注意下,下載提供了兩種版本:LTS版和標准版。LTS是長期支持(Long Term Support)的縮寫,Zabbix將為客戶提供5年的支持服務。前三年完全支持與后兩年有限制支持。前三年包括一般、關鍵、安全性問題解決,后兩年包括關鍵、安全性問題解決。超出時間不提供技術支持服務;標准版只提供6+1月支持。
現在自己電腦上的C:\Windows\Fonts目錄下查看是否存在微軟雅黑字體,如果有上傳一份(ttf格式),如果沒有網上下載微軟雅黑字體的ttf格式文件。
Zabbix自帶了數據庫導入包,其中包括ibm_db2、mysql、oracle、postgresql和sqlite3。但是Web界面只提供了PHP。所以我這里選擇在LNMP環境下部署。
(5).Zabbix監控端部署
主機名:youxi1 IP地址:192.168.5.101 環境:LNMP(Mysql5.7.19、PHP7.1.24)
在Zabbix監控服務器上部署Zabbix Server和Zabbix Agent(監控本身)。
1)解壓文件,進行數據庫操作
[root@youxi1 ~]# tar zxf zabbix-3.4.3.tar.gz -C /usr/local/src/ //解壓 [root@youxi1 ~]# mysql -uroot -p12345678 mysql> create database zabbix; //創建zabbix需要的數據庫 Query OK, 1 row affected (0.01 sec) mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix'; //授權 Query OK, 0 rows affected, 1 warning (0.06 sec) mysql> flush privileges; //刷新 Query OK, 0 rows affected (0.03 sec) mysql> use zabbix; //選擇數據庫 Database changed mysql> source /usr/local/src/zabbix-3.4.3/database/mysql/schema.sql //導入數據,如果不是mysql可以選擇其他數據庫類型 mysql> source /usr/local/src/zabbix-3.4.3/database/mysql/images.sql //數據導入順序不可變。 mysql> source /usr/local/src/zabbix-3.4.3/database/mysql/data.sql mysql> show tables; //最后查看下,我是出現了140行 mysql> exit Bye [root@youxi1 ~]# mysql -uzabbix -pzabbix //mysql登錄測試 mysql>
2)創建zabbix用戶
[root@youxi1 ~]# useradd -M -s /sbin/nologin zabbix
也可以groupadd zabbix && useradd -s /sbin/nologin -g zabbix zabbix。
3)安裝依賴包
[root@youxi1 ~]# yum install -y net-snmp-devel libevent libevent-devel
4)編譯安裝Zabbix
[root@youxi1 ~]# cd /usr/local/src/zabbix-3.4.3/ [root@youxi1 zabbix-3.4.3]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/var/lib/mysql/bin/mysql_config --with-net-snmp --with-libcurl //編譯完會提示你直接make install [root@youxi1 zabbix-3.4.3]# make install [root@youxi1 zabbix-3.4.3]# echo $? 0 [root@youxi1 zabbix-3.4.3]# ls /usr/local/zabbix/ bin etc lib sbin share
參數說明:
--prefix 指定路徑
--enable-server 支持Zabbix Server
--enable-agent 支持Zabbix Agent
--with-mysql 指定mysql庫,可以選擇自定義路徑mysql_config。mysql_config是腳本文件,用於編譯 mysql 客戶端程序。
--with-net-snmp 支持SNMP協議(簡單網絡管理協議),需要依賴包net-snmp-devel
--libcurl libcurl庫,libcurl當前支持http, https, ftp, gopher, telnet, dict, file,和ldap 協議
其他參數:
--enable-proxy 支持Zabbix proxy,一般代理服務器才會啟用。
zabbix proxy 是一個監控代理服務器,它收集到監控數據,先存放在緩沖區(保存時間可以通過配置文件設置),然后再發送到 zabbix server。監控代理服務需要一個獨立的數據庫。用 zabbix proxy的好處:進程監控,當監控的位置通信不便時或當通訊上千台設備的時候,使用zabbix_proxy可以簡化維護分布式監控,降低 zabbix server 的負載。
5)修改Zabbix Server的配置信息
[root@youxi1 zabbix-3.4.3]# vim /usr/local/zabbix/etc/zabbix_server.conf # DBHost=localhost //第85行,指定Mysql的地址,默認本地localhost,如果不是本地就寫Mysql所在服務器的IP地址 DBName=zabbix //第95行,指定使用的數據庫 DBUser=zabbix //第111行,指定登錄數據庫的用戶 DBPassword=zabbix //第119行,指定登錄數據庫的密碼 # DBSocket=/tmp/mysql.sock //第126行,如果不是yum安裝的mysql需要注意修改,指向mysql.sock # DBPort=3306 //第134行,指定登錄數據庫的端口號,默認3306
6)修改Zabbix Agent的配值信息
[root@youxi1 zabbix-3.4.3]# vim /usr/local/zabbix/etc/zabbix_agentd.conf Server=127.0.0.1 //第93行,只接受這里指定的IP地址或主機名的傳入連接,逗號分隔 # ListenPort=10050 //第101行,指定Zabbix Agent的監聽端口號,默認10050 ServerActive=127.0.0.1 //第134行,主動連接的Zabbix Server的IP地址 Hostname=Zabbix server //第145行,Zabbix Server查看時這台主機的名稱 UnsafeUserParameters=1 //第280行,是否允許特殊字符存在於用戶自定義的參數名稱中。默認為0,不允許
Server和ServerActive都是指向Zabbix Server服務器,但前者使用於被動模式(Zabbix Agent被動等待連接),后者使用於主動模式(Zabbix Agent主動連接Zabbix Server)。
UnsafeUserParameters里的特殊字符包括\ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
7)啟動Zabbix,並加入開機自啟
啟動Zabbix Server時如果報錯信息如下,這是找不到mysql文件中的libmysqlclient.so.20,則將地址添加到/etc/ld.so.conf
[root@youxi1 zabbix-3.4.3]# /usr/local/zabbix/sbin/zabbix_server //啟動 /usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory [root@youxi1 zabbix-3.4.3]# vim /etc/ld.so.conf /var/lib/mysql/lib //添加libmysqlclient.so.20所在的地址 [root@youxi1 zabbix-3.4.3]# ldconfig //重載庫文件
之后再啟動,並加入開機自啟
[root@youxi1 zabbix-3.4.3]# /usr/local/zabbix/sbin/zabbix_server //Zabbix Server啟動 [root@youxi1 zabbix-3.4.3]# echo /usr/local/zabbix/sbin/zabbix_server >> /etc/rc.local //添加開機自啟 [root@youxi1 zabbix-3.4.3]# ll /etc/rc.d/rc.local //確保源文件有執行權限 -rwxr-xr-x 1 root root 516 7月 1 14:55 /etc/rc.d/rc.local [root@youxi1 zabbix-3.4.3]# /usr/local/zabbix/sbin/zabbix_agentd //Zabbix Agent啟動 [root@youxi1 zabbix-3.4.3]# echo /usr/local/zabbix/sbin/zabbix_agentd >> /etc/rc.local //添加開機自啟 [root@youxi1 zabbix-3.4.3]# ss -antup | grep zabbix //可以看到10050是Zabbix Agent,10051是Zabbix Server tcp LISTEN 0 128 *:10050 *:* users:(("zabbix_agentd",pid=16236,fd=4),("zabbix_agentd",pid=16235,fd=4),("zabbix_agentd",pid=16234,fd=4),("zabbix_agentd",pid=16233,fd=4)
,("zabbix_agentd",pid=16232,fd=4),("zabbix_agentd",pid=16231,fd=4)) tcp LISTEN 0 128 *:10051 *:* users:(("zabbix_server",pid=16204,fd=4),("zabbix_server",pid=16203,fd=4),("zabbix_server",pid=16202,fd=4),("zabbix_server",pid=16201,fd=4)
,("zabbix_server",pid=16200,fd=4),("zabbix_server",pid=16199,fd=4),("zabbix_server",pid=16198,fd=4),("zabbix_server",pid=16197,fd=4),("zabbix_server",pid=16196,fd=4),
("zabbix_server",pid=16195,fd=4),("zabbix_server",pid=16194,fd=4),("zabbix_server",pid=16193,fd=4),("zabbix_server",pid=16192,fd=4),("zabbix_server",pid=16190,fd=4),
("zabbix_server",pid=16189,fd=4),("zabbix_server",pid=16188,fd=4),("zabbix_server",pid=16184,fd=4),("zabbix_server",pid=16183,fd=4),("zabbix_server",pid=16181,fd=4),
("zabbix_server",pid=16180,fd=4),("zabbix_server",pid=16179,fd=4),("zabbix_server",pid=16177,fd=4),("zabbix_server",pid=16175,fd=4),("zabbix_server",pid=16174,fd=4),
("zabbix_server",pid=16173,fd=4),("zabbix_server",pid=16171,fd=4),("zabbix_server",pid=16170,fd=4),("zabbix_server",pid=16169,fd=4),("zabbix_server",pid=16168,fd=4),
("zabbix_server",pid=16167,fd=4),("zabbix_server",pid=16166,fd=4),("zabbix_server",pid=16165,fd=4),("zabbix_server",pid=16164,fd=4),("zabbix_server",pid=16163,fd=4))
另外,官方非常貼心的准備了啟動腳本,所以也可以使用啟動腳本來管理Zabbix
[root@youxi1 zabbix-3.4.3]# ls /usr/local/src/zabbix-.4.3/misc/init.d/fedora/core/ zabbix_agentd zabbix_server //我選擇的是fedora系統的啟動腳本,因為這是與CentOS一脈的分支。 [root@youxi1 zabbix-3.4.3]# cp /usr/local/src/zabbix-3.4.3/misc/init.d/fedora/core/* /etc/init.d/ [root@youxi1 zabbix-3.4.3]# vim /etc/init.d/zabbix_server //修改Zabbix Server啟動腳本 BASEDIR=/usr/local/zabbix //第22行,修改zabbix的基本目錄 [root@youxi1 zabbix-3.4.3]# vim /etc/init.d/zabbix_agentd //修改Zabbix Agent啟動腳本 BASEDIR=/usr/local/zabbix //第22行,修改zabbix的基本目錄 //然后正常使用chkconfig命令添加到管理,設置開機自啟,最后啟動。
8)復制Zabbix的php界面到指定目錄,配置並重啟nginx、Zabbix Server、php-fpm
目錄可以是nginx的默認目錄,也可以是nginx里自定義的目錄
[root@youxi1 zabbix-3.4.3]# cp -r frontends/php/* /usr/local/nginx/html/ [root@youxi1 zabbix-3.4.3]# vim /usr/local/nginx/conf/nginx.conf location / { //第43~46行 root html; index index.php index.html index.htm; //添加一個index.php } [root@youxi1 zabbix-3.4.3]# /usr/local/nginx/sbin/nginx -s reload [root@youxi1 zabbix-3.4.3]# /etc/init.d/zabbix_server restart Reloading systemd: [ 確定 ] Restarting zabbix_server (via systemctl): [ 確定 ] [root@youxi1 zabbix-3.4.3]# /etc/init.d/php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done
9)使用Web頁面配置
A.輸入地址后應該顯示如下頁面
B.按Next step(下一步),出現如下界面,此時需要檢測全部通過,才能下一步
可以根據提示一步步修改:
[root@youxi1 zabbix-3.4.3]# vim /usr/local/php/php.ini //提示Minimum required size of PHP post is 16M (configuration option "post_max_size"). post_max_size = 16M //第671行 //提示Minimum required limit on execution time of PHP scripts is 300 (configuration option "max_execution_time"). max_execution_time = 300 //第383行 //提示Minimum required limit on input parse time for PHP scripts is 300 (configuration option "max_input_time"). max_input_time = 300 //第393行 //提示Time zone for PHP is not set (configuration parameter "date.timezone"). date.timezone = Asia/Shanghai //第939行,指定上海的時區 //另外還需要指定兩個參數 mysqli.default_socket =/var/lib/mysql/mysql.sock //第1170行,指定mysql.sock路徑 always_populate_raw_post_data = -1 //必須禁用,php5.6.0及以上版本,需要自己添加,可以加在文件最后 [root@youxi1 zabbix-3.4.3]# /etc/init.d/php-fpm restart //重啟php-fpm Gracefully shutting down php-fpm . done Starting php-fpm done
如果底下有一個PHP LDAP提示的Warning,這是由於在編譯php時沒有添加LDAP模塊,需要添加這個模塊
[root@youxi1 zabbix-3.4.3]# yum -y install openldap-devel openldap //安裝依賴包 [root@youxi1 zabbix-3.4.3]# rsync -avz /usr/lib64/libldap* /usr/lib/ sending incremental file list libldap-2.4.so.2 -> libldap-2.4.so.2.10.7 libldap-2.4.so.2.10.7 libldap.so -> libldap-2.4.so.2.10.7 libldap_r-2.4.so.2 -> libldap_r-2.4.so.2.10.7 libldap_r-2.4.so.2.10.7 libldap_r.so -> libldap_r-2.4.so.2.10.7 sent 320,885 bytes received 66 bytes 641,902.00 bytes/sec total size is 734,112 speedup is 2.29 [root@youxi1 zabbix-3.4.3]# cd /usr/local/src/php-7.1.24/ext/ldap/ //到php解壓后的文件 [root@youxi1 ldap]# /usr/local/php/bin/phpize //運行php內的phpize腳本 Configuring for: PHP Api Version: 20160303 Zend Module Api No: 20160303 Zend Extension Api No: 320160303 [root@youxi1 ldap]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-ldap [root@youxi1 ldap]# make && make install //編譯安裝 [root@youxi1 ldap]# echo $? 0 [root@youxi1 ldap]# vim /usr/local/php/php.ini extension=ldap.so //添加一行,可以加在文件最后 [root@youxi1 ldap]# /etc/init.d/php-fpm restart //重啟php-fpm Gracefully shutting down php-fpm . done Starting php-fpm done
刷新界面,如果全部ok就可以點擊下一步了
C.之后會出現如下界面,設置好后,點擊下一步
D.出現如下頁面,默認即可。設置的是Zabbix Server服務器的主機名或IP地址、端口號、安裝名稱。下一步
E.出現如下頁面,這個頁面是用於檢查配置參數的。檢測完成后下一步
F.如下界面一般都會有,只需下載文件上傳到指明的地址
上傳完成后刷新頁面,如果出現如下頁面則通過檢測,按Finish結束
G.最后跳轉登錄頁面,默認用戶名admin,密碼zabbix
H.成功登錄后,可以在右上角的修改語言。Chinese(zh_CN),然后Update
I.嘗試監控本機。
首先,啟用自動發現
然后,啟用Zabbix server的監控
啟用之后等待幾分鍾,刷新頁面,在可用性中必須至少有一個是綠色狀態。如果可用性都是灰色,查看下Zabbix Agent是不是沒有啟動。
最后就可以查看了
J.解決中文圖形出現方塊字
[root@youxi1 ldap]# cd //回到上傳地址 [root@youxi1 ~]# mv msyh.ttf /usr/local/nginx/html/fonts/DejaVuSans.ttf //將微軟雅黑字體覆蓋到指定文件,文件名固定 mv:是否覆蓋"/usr/local/nginx/html/fonts/DejaVuSans.ttf"? y
然后刷新頁面