開發人員學Linux(13):CentOS7安裝配置IT設備監控系統Zabbix

1.前言

在前一篇講述瞭如何安裝Memcached和Redis,在這一篇主要講述如何安裝企業級IT設備監控系統Zabbix。本人曾在某大型集團公司信息化部門工作,公司在多個城市以及一個城市的多個區有辦公區,在那裏不僅會開發軟件系統,還需要對大量的軟件系統、操作系統及IT設備進行監控,以保證IT基礎設施能夠7×24小工作。在沒有實施系統之前,經常接到電話被告知網絡中斷了或是某個應用程序無法使用了,每次接到電話之後首先要排除是否誤報,然後再分析是哪裏出了問題,最終找出解決辦法。每次處理事情的週期很長,也很麻煩,於是本人在網上尋找類似軟件,最終在smokeping、cacti、nagios、zabbix、ntop等衆多軟件中選擇了Zabbix。Zabbix的官方網站爲:https://www.zabbix.com,由於發展了很多年,所以在官方網站上有大量的文檔和監控模板。


zabbix是一個基於WEB界面的提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案。zabbix能監視各種網絡參數,保證服務器系統的安全運營;並提供柔軟的通知機制以讓系統管理員快速定位/解決存在的各種問題。zabbix由2部分構成,zabbix server與可選組件zabbix agent。zabbix server可以通過SNMP,zabbix agent,ping,端口監視等方法提供對遠程服務器/網絡狀態的監視,數據收集等功能,它可以運行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平臺上。Zabbix Server必須安裝在Linux系統上,但Zabbix agent則有適應各種操作系統的版本。


當然,如果是個人或小組簡單應用,可以考慮自己開發一些小工具來實現,比如在Windows上可以利用PerformanceCounter之類的工具(在Linux上也有類似的工具)來實現部分功能,本人以前曾嘗試過,也見過別人做過類似的工作,但畢竟應用面比較窄,要想全面監控,還是用企業級IT設備及系統開源監控工具比較好。


2.準備

Zabbix相關的資源下載頁面爲https://www.zabbix.com/download,可以在此安裝個人需要下載。

2.1zabbix服務器端

提供了針對各種類型操作系統的Zabbix Server安裝包和已經在虛擬機配置好的虛擬機文件,同時還提供了源代碼供動手能力強的人自己編譯安裝,在這裏我們就自己編譯安裝,下載最新版本Zabbix server版本,爲3.4.3,下載地址:https://ncu.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.3/zabbix-3.4.3.tar.gz

2.2zabbix Linux客戶端

這裏就直接下載已經編譯好的客戶端即可,下載地址:

2.3zabbix Windows客戶端

這裏就下載編譯好的客戶端,下載地址:https://www.zabbix.com/downloads/3.4.0/zabbix_agents_3.4.0.win.zip。

3.編譯安裝

3.1Zabbix server編譯安裝

首先將Zabbix Server源代碼上傳到服務器(可以上傳也可以在Linux服務器上用wget下載),假定放在/root路徑下。

首先創建zabbix運行時的賬戶:

groupadd zabbix

useradd -g zabbix zabbix


接着解壓zabbix源代碼:

tar -zxvf zabbix-3.4.3.tar.gz

cd /root/zabbix-3.4.3

可以查看zabbix的編譯配置參數:

./configure –help

其中有幾個比較重要的參數:

--prefix=PREFIX   指定安裝位置

--enable-server   啓用服務器功能

--enable-agent   啓用客戶端功能

--enable-java    啓用Java gateway功能

--enable-ipv6    啓用IPv6

--with-mysql    支持MySQL

--with-libxml2   支持xml

--with-net-snmp  支持net-snmp

--with-ssh2      支持ssh2

--with-libcurl     支持cURL


在我們進行編譯之前,我們需要安裝一些庫,主要是編譯和運行過程中需要,安裝命令如下:

yum install net-snmp net-snmp-devel net-snmp-utils libssh2 libssh2-devel openldap openldap-devel unixODBC unixODBC-devel OpenIPMI OpenIPMI-devel libevent libevent-devel -y


如果不安裝這些庫,可以在運行下面的configure命令時出現如下錯誤:

configure: error: net-snmp library not found

configure: error: SSH2 library not found

configure: error: unixODBC library not found

configure: error: SSH2 library not found


因爲在本系列之前的文章中我們已經安裝了MySQL、PHP及Java,所以我們這裏只需要指定路徑即可,如:

--with-mysql=/usr/local/mysql-5.7.18/bin/mysql_config


我們現在安裝Zabbix Server的服務器是CentOS7,Linux內核版本爲3.10,我們已經安裝了MySQL5.7及PHP5.6.30,因此我們的編譯配置爲:

./configure --prefix=/usr/local/zabbix\
 --enable-server\
 --enable-agent\
 --enable-ipv6\
 --enable-java\
 --with-mysql=/usr/local/mysql-5.7.18/bin/mysql_config\
 --with-net-snmp=/usr/bin/net-snmp-config\
 --with-libcurl\
 --with-libxml2\
 --with-openipmi\
 --with-unixodbc\
 --with-ldap\
 --with-ssh2\


如無意外則會編譯成功。


題外話:在本系列上一篇在講編譯安裝Memcached的時候講了編譯安裝libevent的,當時指定libevent安裝在/usr/local/libevent,我本着能少一事就少一事的態度,通過參數指定libevent的位置,不再安裝libevent,結果編譯報錯,說是找不到event.h,我的configure參數如下:

./configure --prefix=/usr/local/zabbix\
 --enable-server\
 --enable-agent\
 --enable-ipv6\
 --enable-java\
 --with-mysql=/usr/local/mysql-5.7.18/bin/mysql_config\
 --with-net-snmp=/usr/bin/net-snmp-config\
 --with-libcurl\
 --with-libxml2\
 --with-openipmi\
 --with-unixodbc\
 --with-ldap\
 --with-ssh2\
 --with-libevent=/usr/local/libevent\
 --with-libevent-include=/usr/local/libevent/include/event2\
 --with-libevent-lib=/usr/local/libevent/lib

在這裏折騰了很長時間,自己多次嘗試,包括在官網和網上尋找答案均無結果,最終無奈之下選擇yum install libevent libevent-devel來解決問題。


3.2Zabbix-agent編譯安裝

對於Zabbix的客戶端也可以編譯安裝,也可以直接安裝已經編譯好的安裝包,在Linux下使用yum install方式來安裝,也可以像在Windows下一樣下載壓縮包後解壓縮安裝。

其中介紹下Windows下安裝過程:

按照前文提及的下載地址下載壓縮包,將其解壓到帶安裝的Windows主機的C盤下,解壓後的路徑爲:C:\zabbix_agents_3.4.0.win,在C:\zabbix_agents_3.4.0.win\bin目錄下有win32和win64兩個目錄分別對應x86和x64架構,因本人的機器爲Win7 X64,因此在命令窗口下安裝的命令爲:

cd C:\zabbix_agents_3.4.0.win\bin\win64

zabbix_agentd.exe -c C:\zabbix_agents_3.4.0.win\conf\zabbix_agentd.win.conf –i

上述命令執行成功後你會在Windows系統的服務中多了一個Zabbix Agent的服務。

啓動zabbix_agentd的命令爲:

zabbix_agentd.exe -c C:\zabbix_agents_3.4.0.win\conf\zabbix_agentd.win.conf –s


4.配置

4.1初始化Zabbix數據庫

首先,請確認MySQL已經啓動,然後登錄到MySQL。

[root@common ~]# /usr/local/mysql-5.7.18/bin/mysql -u root -p

Enter password: 


然後創建Zabbix數據庫,Zabbix的數據庫初始化文件在/root/zabbix-3.4.3/database目錄下(注意本文是將Zabbix源碼包解壓到/root/zabbix-3.4.3目錄下,如果不是此目錄請根據實際情況修改),從目錄下的文件夾名可知Zabbix支持DB2、Oracle、MySQL、PostgreSql和SQLite數據庫,當如果監控的設備數較多的話,建議還是不要使用SQLite了。

下面就來創建數據庫和初始化數據庫:

mysql> create database zabbix character set utf8 collate utf8_bin;

mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbixpassword'; flush privileges;

mysql> quit;

注意:

請將上面的SQL語句中的'zabbixpassword'更改爲實際的數據庫密碼,並牢記住這個密碼,稍後會使用這個密碼。

如果在my.cnf中配置了” skip-name-resolve”,即禁止MySQL將域名解析爲IP,那麼就需要將授權語句改爲:“grant all privileges on zabbix.* to zabbix@’127.0.0.1’  identified by 'zabbixpassword'; flush privileges;”

至此已經完成了數據庫的創建,但是還沒有初始化,下面以剛剛創建的zabbix這個MySQL賬號去完成zabbix數據庫的初始化。

/usr/local/mysql-5.7.18/bin/mysql -u zabbix -p
Enter password:
mysql> use zabbix;
mysql> source /root/zabbix-3.4.3/database/mysql/ schema.sql;
mysql> source /root/zabbix-3.4.3/database/mysql/ images.sql;
mysql> source /root/zabbix-3.4.3/database/mysql/ data.sql;


至此,完成了MySQL數據庫的初始化了,可以進行Zabbix管理系統的安裝了。


4.2Zabbix Server配置

在前面的編譯安裝過程中,我們指定了Zabbix的安裝路徑爲/usr/local/zabbix,在這個目錄下還有一些子文件夾:

etc文件夾用於存放zabbix服務器的配置文件的,主要兩個,分別是zabbix_server.conf和zabbix_agentd.conf;

sbin文件夾用於存放Zabbix的server和agent啓動文件的。

經過編譯安裝後的zabbix監聽和監控程序是不能正常運行的,需要對其進行配置。

 zabbix_server.conf文件存放了Zabbix服務器作爲服務端監聽程序的一些配置,主要有以下幾個地方需要修改:

DBName=zabbix 數據庫名稱,請根據實際情況修改

DBUser=zabbix 數據庫用戶,請根據實際情況修改

DBPassword=zabbix 數據庫密碼,請根據實際情況修改

zabbix_agentd.conf需要配置的有:

Server=127.0.0.1

ServerActive=127.0.0.1

Hostname=Zabbix server


下面是在Zabbix服務器上兩個文件的配置情況:

11_Zabbix_Server_Config.png 

需要說明的是:zabbix_server和zabbix_agentd兩個程序分別有不同的用途,可以這麼理解(實際上某些場合會有些不一樣):zabbix_server作爲服務器進程運行,接收客戶端zabbix_agentd發送過來的數據,而zabbix_agentd負責將本機的監控指標數據發送到zabbix_server進程,因此要想監控Zabbix服務器本身所在的Linux系統的性能,也需要啓動zabbix_agentd。這兩個程序分別使用的是zabbix_server.conf和zabbix_agentd.conf兩個配置文件,在非Zabbix服務器上再次部署時僅僅需要安裝和配置zabbix_agentd即可。


經過上面的配置,可以從命令行啓動zabbix_server和zabbix_agentd了。

啓動zabbix_server:

/usr/local/zabbix/sbin/zabbix_server

啓動zabbix_agentd:

usr/local/zabbix/sbin/zabbix_agentd


本人在啓動zabbix_server時報如下錯誤:

error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

經查找ibmysqlclient.so.20位於/usr/local/mysql-5.7.18/lib/目錄下,因此創建了一個鏈接:

ln -s /usr/local/mysql-5.7.18/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20

錯誤消失。


另外,在實際工作場景中手動啓動zabbix_server和zabbix_agentd畢竟不是很方便,因此可以將其註冊爲service,在編譯安裝Zabbix時的壓縮包下就存放有將其註冊爲系統service的腳本,在本篇中這個目錄是:/root/zabbix-3.4.3/misc/init.d,在這個目錄下可以找到ubuntu等系統的名字但是找不到RedHat和CentOS的名字,但是熟悉Linux的人會知道Fedora、RHEL/Red Hat Enterprise Linux及CentOS的關係,而選擇/root/zabbix-3.4.3/misc/init.d/fedora/core5下的文件。

將/root/zabbix-3.4.3/misc/init.d/fedora/core5目錄下的zabbix_server和zabbix_agentd文件拷貝到/etc/init.d/目錄下,修改其中的zabbix_server和zabbix_agentd的路徑信息,然後chmod 755 /etc/init.d/zabbix_*,並執行如下命令:

chkconfig zabbix_server on

chkconfig zabbix_agentd on

這樣zabbix_server和zabbix_agentd就可以隨着系統啓動了。

4.3安裝Zabbix系統

因爲zabbix壓縮包解壓在/root/zabbix-3.4.3,在這個目錄下有一個frontends目錄,這個目錄下包含了Zabbix的Web管理界面,可以將其複製到Web服務器目錄上:

mkdir  /usr/local/nginx-1.12.0/html/zabbix

cp -r /root/zabbix-3.4.3/frontends/php/* /usr/local/nginx-1.12.0/html/zabbix

注:在本系列第5篇講述了Nginx的安裝,在本系列的第7篇講述了Nginx與php-fpm的集成,nginx安裝在/usr/local/nginx-1.12.0/目錄下。

現在可以安裝Zabbix的Web管理系統了,爲避免虛擬機與宿主機頻繁切換麻煩,建議將虛擬機通過橋接方式接入到宿主機網絡,然後在宿主機上訪問虛擬機上的Web系統,在這裏安裝zabbix的虛擬機IP爲192.168.0.108,首先在宿主機中打開網址http://192.168.0.108/zabbix/,會看到Zabbix的歡迎界面:

01_ZabbizSetup_Index.png 

點擊下一步進行安裝環境檢查,如果沒有滿足安裝條件,則會看到錯誤信息,如下圖所示:

02_ZabbizSetup_PreRequisites_error.png 

大多數情況下都會給出如何改正的建議,按照建議去修改即可,當滿足安裝條件時看到如下界面:

03_ZabbizSetup_PreRequisites_ok.png 

點擊下一步,進行數據庫連接信息的配置,如下圖所示:

 04_ZabbizSetup_DB.png

在這裏還是提醒一下,如果在my.cnf中配置了“skip-name-resolve”,那麼就請將上面的”localhost”替換成127.0.0.1。

點擊下一步即可配置Zabbix主機信息,如下圖所示:

05_ZabbizSetup_Host.png 

點擊下一步,進行安裝前的配置信息檢查,如下圖所示:

06_ZabbizSetup_summary.png 

點擊下一步,開始安裝,如果/usr/local/nginx-1.12.0/html/zabbix/conf/文件夾權限不夠的話,可能遇到下面的提示:

07_ZabbizSetup_install.png 

遇到這種情況有幾種辦法,一種是給文件夾賦予當前web系統所使用的角色的寫的權限;一種是按照上面的提示將文件下載下來放到指定的位置。

解決了上面的問題即可完成安裝了,界面如下:

08_ZabbizSetup_finished.png 

至此,完成了Zabbix服務器的安裝了。

5.檢驗配置

在宿主機打開zabbix的首頁http://192.168.0.108/zabbix/index.php,進行登錄,注意Zabbix默認的管理賬號和對應的密碼是:Admin/zabbix(Linux中區分大小寫的,同時記得登入系統之後第一件事就是更改默認密碼),登錄進來之後界面如下:

09_Zabbix_index.png 

上面沒有任何數據,同時在最下方可以看到“zabbix server is running:The information displayed may not be current”的提示。

5.1更改密碼和系統語言

默認情況下Zabbix使用的是英文,對於大多數人來說不夠親切,可以在http://192.168.0.108/zabbix/profile.php網頁修改,同時也可以在這個界面修改自己的登錄密碼,如下圖所示:

10_Zabbix_User_Config.png 

在Language處選擇”Zh-cn”然後點擊Update按鈕,用戶界面就會變成中文了。


5.2解決中文亂碼問題

切換爲簡體中文之後,會發現在”監視中”-“圖形”界面一些文字是亂碼,需要採用如下辦法解決:

將Windows系統中的simkai.ttf這個字體文件上傳到Zabbix的Web系統目錄下,simkai.ttf這個文件在Win7中的位置爲:C:\Windows\Fonts\simkai.ttf,將在上傳到/usr/local/nginx-1.12.0/html/zabbix/fonts目錄下(這個視安裝位置而定)。

然後在命令行下切換到/usr/local/nginx-1.12.0/html/zabbix/,執行如下命令:

sed -i 's/DejaVuSans/simkai/g' ./include/defines.inc.php

至此,中文亂碼問題解決,如下圖所示:

12_Zabbix_Server_Lang.png 

5.3添加主機

首先在被監控的主機上安裝對應的agent客戶端,並配置好agentd.conf文件(參考Zabbix server上的配置)。

接着通過“配置”-“主機”-“創建主機”可以打開創建主機頁面,要填寫的信息如下圖所示:

13_Zabbix_Agent_new.png 

在接下來的操作中設置需要關聯的模板,通過設置關聯模板就決定了會監控哪些數據,如下圖所示:

14_Zabbix_Agent_template.png 

通過上述步驟完成了被監控主機的創建。

5.4模板管理

Zabbix默認提供了一些模板,但實際上這些模板不足以滿足我們靈活多變的監控需求,如果對Zabbix足夠熟練可以自己去創建模板,但是對於初次使用的人來說這個要求有些高,因此還可以從https://share.zabbix.com/下載一些已經經過別人驗證過的模板,下圖是該網頁截圖:

15_Zabbix_template_download.png 

大家可以根據分類快速找到適合自己的模板。


5.5Zabbix API

Zabbix提供了API服務,對於常見的操作和查詢均可通過API進行,在Zabbix服務器上可以通過http://localhost/zabbix/api_jsonrpc.php來訪問Zabbix API,這個API接收和響應的數據都是使用JSON的。本人之前使用C#開發過一個郵件通知系統,用於定時查詢Zabbix的狀態,如果異常就發送通知郵件,郵件格式如下:

 16_Zabbix_mail.png

這樣一來,就不需要時時刻刻監控Web頁面,有異常就會收到郵件通知了。

6.總結

本篇講述瞭如何在CentOS7中安裝Zabbix這個企業級開源IT設備監控系統,對於擁有大量需要監控的IT設備和應用的團隊來說,使用一個好的監控工具可以大大減輕運維人員的壓力,至少在我擔任某上市公司信息化副總期間,通過這個工具我基本上沒有讓運維人員向我報告過集團公司的網絡設備、服務器及網絡的異常情況,極大地方便了運維人員。不過由於時間限制,沒有來得及詳述Zabbix的更細緻用法,包括我曾經爲Zabbix寫的一個基於Zabbix API的查詢服務,遇到異常情況及時向運維人員告警的監控工具。


聲明:本文首發於本人個人微信訂閱號:zhoujinqiaoIT,其後會同時在本人的CSDN、51CTO及oschina三處博客發佈,本人會負責在此四處答疑。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章