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

1.前言php

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


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則有適應各類操做系統的版本。java


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


2.準備ios

Zabbix相關的資源下載頁面爲https://www.zabbix.com/download,能夠在此安裝我的須要下載。nginx

2.1zabbix服務器端web

提供了針對各類類型操做系統的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.gzsql

2.2zabbix Linux客戶端數據庫

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

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支持DB二、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三處博客發佈,本人會負責在此四處答疑。

相關文章
相關標籤/搜索