在企業網絡運維過程當中,管理員必須隨時關注各服務器和網絡的運行狀況,以便及時發現問題,儘量減小故障的發生。當網絡中的設備,服務器等數量較多時,爲了更加方便、快捷地得到各類監控信息,一般會藉助於一些集中監測軟件。php
博文大綱:前端
1、Zabbix概述、工做原理及重要組件;
2、Zabbix安裝;
3、配置Zabbix監控系統監控網絡設備;java
要想實時地瞭解服務器的運行情況而且能在出現問題時及時解決,利用監控軟件是一個很好的途徑。就目前而言,有服務器的地方必然少不了監控系統。現有的監控軟件有不少,可是Zabbix能夠靈活的監控服務器資源,而且集Cacti和Nagio二者的優勢於一身且功能更增強大,實現企業級分佈式監控,因此在市場上應用很是普遍!node
Zabbix是一個基於Web界面的企業級開源監控套件,提供分佈式系統監控與網絡監視功能。具備主機的性能監控、網絡設備性能監控、數據庫性能監控、多種告警方式、詳細報表、圖表的繪製等功能。監測的對象能夠是Linux或Windows服務器,也能夠是路由器、交換機等網絡設備,經過SNMP(簡單網絡管理協議)、Zabbix、Agent、PING、端口監視等方法提供對遠程網絡服務器等監控、數據收集等功能,並提供通知機制使系統管理員能夠快速定位、解決系統中存在的各類問題。目前Zabbix最新版本爲Zabbix 3.4.官方網站是http://www.zabbix.com 。mysql
Zabbix是免費的。Zabbix遵循GPL(通用公共許可證)版本2,這意味着它的源代碼是能夠自由分佈的。Zabbix的商業版本是由Zabbix公司提供支持的。世界上不少大小不一樣的組織機構都依懶於Zabbix做爲本身的一個主要的監控平臺。尤爲是如今不少互聯網企業都在使用它。linux
Zabbix是一個高度集成的網絡監控解決方案,具體描述如圖:web
zabbix主要由如下幾個重要的組件構成,具體做用以下:sql
- Zabbix Server:負責接收Agent發送報告信息的核心組件,全部的配置、數據統計、數據操做都由它組織進行;
- Database strongage:負責存儲全部的配置信息以及收集的數據;
- Web interface:是zabbix的GUI接口,一般強開下與Zabbix Server運行在同一臺主機上;
- Proxy:屬於可選組件,經常使用於分佈式監控環境中,代理Server收集部分數據,而後轉發到Server,能夠減輕Server的壓力;
- Agent:部署在被監控的主機(客戶端)上,負責收集被監控端主機的數據,如CPU、內存、數據庫等數據,而後發送到Server端或Proxy端。
默認狀況下,Zabbix包含五個程序,另外還有一個是可選的,須要另外安裝。數據庫
各個程序各自的特色及做用以下:vim
- zabbix_agentd:客戶端守護進程,此進程用於收集被監控端的數據,如CPU負載、內存、硬盤使用狀況等;
- zabbix_get:zabbix工具是單獨使用的命令。zabbix_get是在server或者proxy端執行獲取遠程客戶端信息的命令。主要用於排錯。例如:在server端獲取不到客戶端的內存數據時,咱們可使用zabbix_get獲取客戶端的內容的方式來作故障排查;
- zabbix_sender:用於發送數據給server或者Proxy,一般用於耗時比較常的檢查。不少檢查很是耗時間,致使zabbix超時。因而咱們在腳本執行完畢以後,可使用sender主動提交數據;
- zabbix_server:zabbix服務器端守護進程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、
zabbix_java_gateway的數據最終都是提交到server。數據並不都是主動提交給zabbix_server的,也有被動提交數據的,及server主動去獲取數據;- zabbix_proxy:zabbix代理守護進程。功能相似於server,惟一不一樣的是它只是一箇中轉站,須要把收集到的數據主動(或被動)地提交到server上;
- zabbix_java_gateway:在zabbix2.0以後引入的一個功能。顧名思義:Java網關,相似agentd,但目前只用於Java方面,須要特別注意的是,它只能主動去獲取數據,而不能被動獲取數據。它的數據最終會提交到server或者proxy。
在實際生產環境中,Zabbix根據網絡環境,監控規模等外界因素分爲三種架構,如圖:
server-client架構是Zabbix的最簡單的架構,監控機和被監控機之間不通過任何代理,直接在zabbix server和zabbix agentd之間進行數據交互,適用於網絡比較簡單,設備比較少的監控環境;
master-node-client架構是Zabbix最複雜的監控架構,適用於跨網絡、跨機房、設備較多的大型環境。每一個node同時也是一個server端。node下面能夠接proxy,也能夠直接接client。node有本身的配置文件和數據庫。其要作的是將配置信息和監控數據項master同步。當master發生故障或損壞,node能夠保證架構的完整性;
proxy是server、client之間溝通的一個橋樑,proxy自己沒有前端,並且其自己並不存放數據,只是將agentd發來的數據暫時存放,然後在提交給server。該架構常常是和master-node-client架構作比較的架構,通常適用於跨機房、跨網絡的中型網絡架構的監控;
Zabbix提供兩種安裝方式:YUM安裝與編譯安裝。須要注意的是,因爲Centos官方YUM源中並不提供Zabbix軟件包以及相關依懶包,所以,若是想用YUM安裝Zabbix須要經過Zabbix官方源或第三方的YUM源實現。
Zabbix服務器須要LAMP環境或LNMP環境,如下實驗部署環境採用YUM安裝的LAMP環境爲例,詳細介紹Zabbix監控服務器的部署方法。
爲何是安裝MariaDB不是MySQL呢?
由於Centos 7 系統光盤中默認提供的數據庫不是MySQL而是MariaDB,所以在LAMP架構中使用MariaDB來充當「M」的角色,其他的組件仍是保持原有的Apache與PHP。MariaDB是MySQL數據庫源碼的一個分支版本,與MySQL在大多數方面是兼容的!
[root@localhost ~]# yum -y install mariadb-server mariadb //安裝MariaDB數據庫及MariaDB客戶端工具 [root@localhost ~]# systemctl start mariadb //啓動MariaDB數據庫 [root@localhost ~]# mysqladmin -u root password "password123" //爲MariaDB數據庫管理員設置密碼 [root@localhost ~]# mysql -u root -ppassword123 //登陸MariaDB數據庫 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 5.5.52-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> //登陸成功
由於安裝Zabbix時會安裝不少依懶包,其中包括httpd與PHP相關依懶包,因此直接安裝Zabbix便可!無須在單獨安裝httpd與PHP。使用YUM安裝Zabbix可使用Zabbix官方源或者第三方提供的YUM源,這裏以第三方提供的YUM爲例!
安裝Zabbix所需軟件包網盤連接:https://pan.baidu.com/s/1mnOHhY7EVmmMnONFetMUUg
提取碼:b2sd
建議在Windows系統解壓完成,將其中的YUM所需軟件包上傳到Linux服務器便可!
[root@localhost ~]# mount /dev/cdrom /mnt [root@localhost ~]# cp /mnt/* /a [root@localhost ~]# cd /a [root@localhost a]# createrepo . //由於自己自帶的只有軟件包,並無其須要用到的依賴關係文件,因此須要本身手動生成! [root@localhost ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent //安裝Zabbix及其所需服務(若是使用官方源的話,直接YUM安裝便可)! //zabbix-agent這個服務是被監控端安裝的
由於安裝Zabbix Web時須要數據庫,因此要在MariaDB中手動建立庫名爲Zabbix的數據庫,並受權給zabbix用戶使用,以增長數據庫的安全性。
[root@localhost ~]# mysql -u root -ppassword123 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 4 Server version: 5.5.52-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; Query OK, 1 row affected (0.01 sec) MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'password@456'; Query OK, 0 rows affected (0.00 sec) //登陸數據庫建立數據庫、並授予權限
導入數據庫SQL腳本文件
[root@localhost ~]# zcat /usr/share/doc/zabbix-server-mysql-3.4.1/create.sql.gz |mysql -u zabbix -ppassword@456 zabbix
編寫Zabbix server配置文件,指定數據庫的名稱能、用戶和密碼。
[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf …………………… //省略部份內容 DBHost=localhost //去掉註釋 DBName=zabbix //不變 DBUser=zabbix //不變 DBPassword=password@456 //去掉註釋
編輯Zabbix agent的配置文件,必須指定zabbix server的IP地址,在每檯安裝了agent的主機上都要配置。
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf …………………… //省略部份內容 Server=127.0.0.1 //客戶端被動等待指定服務器來查詢數據 ServerActive=127.0.0.1 //客戶端主動提交數據到指定服務器 Hostname=linux-server001 //修改 //由於本機就是zabbix server,因此指定的地址就是本機便可!
編輯Apache服務器針對Zabbix的前端配置文件,設置時區與當前系統時區一致便可!內容以下:
[root@localhost ~]# vim /etc/httpd/conf.d/zabbix.conf php_value date.timezone Asia/Shanghai //去掉註釋,修改便可!
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0 //建議關閉防火牆與SELinux [root@localhost ~]# systemctl restart zabbix-server.service [root@localhost ~]# systemctl restart zabbix-agent.service [root@localhost ~]# systemctl restart httpd
能夠在本地訪問,也可在客戶端訪問,均可以!
爲了加強安全性,須要修改Zabbix服務器默認用戶Admin的初始密碼,操做以下:
安裝Zabbix後,當顯示語言爲中文時,可能會出現中文亂碼的狀況。主要是由字體致使的問題,若是須要解決,須要下載合適的字體,並將其上傳到Zabbix服務器上。
下載標準中文字體,將其上傳到Zabbix服務器的文檔根目錄中;中文字體(simkai.ttf)也在剛纔的網盤鏈接的壓縮包中。具體操做,以下:
[root@localhost ~]# cp simkai.ttf /usr/share/zabbix/fonts/ [root@localhost ~]# ls /usr/share/zabbix/fonts/ graphfont.ttf simkai.ttf
執行如下命令,修改PHP界面指定的字體文件,將本來的grapfont更改成simkai,而後刷新界面便可正常顯示中文。
[root@localhost ~]# vim /usr/share/zabbix/include/defines.inc.php
…………………… //省略部份內容
define('ZBX_GRAPH_FONT_NAME', 'simkai');
zabbix服務器搭建完成!!!
企業網絡環境中採用Zabbix來做爲監控服務器,監控對象爲網絡中的各類服務器及網絡設備,服務器有Linux服務器、Windows服務器,交換機採用GNS3模擬器來模擬,橋接3塊網卡分別鏈接Zabbix服務器、Linux服務器和Windows服務器,具體的實驗拓補圖以下:
案例實施步驟:
網絡設備通常支持SNMP協議來作監控,因此首先要在交換機上配置IP地址,並開啓SNMP,主要是設置共同體的值,本次案例使用GNS3模擬器,用路由器來代替交換機。具體操做以下:
R1(config)#int r f0/0 - 15 R1(config-if-range)#no sh R1(config)#int vlan 1 R1(config-if)#ip add 192.168.1.100 255.255.255.0 R1(config-if)#no sh //給vlan設置IP地址 R1(config)#no ip routing //關閉路由功能 R1(config)#snmp-server community centos ro //設置被服務器查詢的只讀共同體 R1(config)#snmp-server enable traps //容許發送trap消息 R1(config)#snmp-server host 192.168.1.1 centos //設置發送trap消息的共同體
在Zabbix服務器上添加網絡設備,操做以下:
交換機的名稱稍後便會更新成功的!
交換機檢測完成!!!
若是但願監控Linux服務器,可使用agent的方式,即在Linux服務器上安裝Zabbix的agent。agent軟件包也在zabbix軟件包中,並修改其配置文件。
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0 //關閉防火牆與SELinux [root@localhost ~]# rpm -ivh zabbix-agent-3.2.6-1.el7.x86_64.rpm //安裝agent軟件包 [root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf //編寫agentd服務器的配置文件 ………………………… //省略部份內容 Server=192.168.1.1 //用於客戶端被動等待指定服務器來查詢數據 ServerActive=192.168.1.1 //用於客戶端主動提交數據到指定服務器 Hostname=linux-server001 //能夠自定義,但必須與Zabbix Web上配置一致, //不然Zabbix主動監控將沒法工做。 [root@localhost ~]# systemctl start zabbix-agent.service //啓動agent服務 [root@localhost ~]# netstat -anpt | grep 10050 tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 43876/zabbix_agentd tcp6 0 0 :::10050 :::* LISTEN 43876/zabbix_agentd //agent服務默認端口是10050
在Zabbix服務器上添加Linux主機,操做以下:
Windows服務器32位操做系統便選擇32位的軟件包;64位便選擇64位的軟件包,Zabbix軟件包中都有。
在C盤中新建文件夾,命名爲zabbix,將所需的軟件及配置文件移進去,修改配置文件,修改的內容以下:
Server=192.168.1.1
ServerActive=192.168.1.1
Hostname=windows-server001
修改完成以後,建議關閉防火牆,以避免出現錯誤!
接下來在命令行完成如下操做:
C:\Users\Administrator>cd \zabbix C:\zabbix>zabbix_agentd.exe -c zabbix_agentd.win.conf -i zabbix_agentd.exe [1368]: service [Zabbix Agent] installed successfully zabbix_agentd.exe [1368]: event source [Zabbix Agent] installed successfully //安裝agent C:\zabbix>zabbix_agentd.exe -c zabbix_agentd.win.conf -s zabbix_agentd.exe [1504]: service [Zabbix Agent] started successfully //指定agent配置文件啓動agent 經常使用的選項有:「-c」指定配置文件;「-i」安裝;「-s」啓動;「-x」中止;「-d」卸載!
在Zabbix服務器上添加Windows主機操做以下:
Zabbix自帶的默認模板裏包含了不少監控項,也能夠根據業務需求自定義監控項。
以監控httpd進程爲例,介紹如何在Zabbix自定義監控項。
如下操做均在客戶端執行,命令以下:
[root@localhost ~]# vim check_httpd.sh //本身手動編寫腳本,內容以下: #!/bin/bash A=`ps -ef | grep httpd | grep -v grep` if [ -n "$A" ] then echo '1' else echo '0' fi [root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf //修改agent服務的配置文件,修改如下內容 UnsafeUserParameters=1 //去掉註釋並改成1 [root@localhost ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_httpd.conf //本身建立Userparameter_httpd.conf文件 UserParameter=check_httpd,sh /root/check_httpd.sh //格式爲Userparameter=<鍵值>,<命令>
便可登陸Zabbix服務器,
關於Zabbix的配置就先接受這麼多,之後有新的問題,會實時更新的!!!
———————— 本文至此結束,感謝閱讀 ————————