監控工具之——zabbix

   本節我們來認識下一款比較具有代表性的監控工具——zabbix。來看下摘自百度百科的介紹:

 zabbix(音同 zbix)是一個基於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等平臺上。

 

開源的監控工具

比較著名的幾個

         cacti:寫一些腳本到agent端採集一些數據,通過PHP(即時繪製)可以展示直觀的結果

         nagios:有強大報警功能,只關心數據是否異常         

         zabbix:是一個能夠實現各種強大的數據採集功能,並且能夠提供良好的報警功能的工具

 

zabbix的介紹

zabbix的工作機制:在各被監控的節點上安裝觸發器,當某些數據超出閾值是可以觸發某個事件,可以是執行某個腳本,也可以是執行報警等操作。

wKioL1Q_e83wHBAFAAMP5QICb1M762.jpg

注意:server端採集數據有2中方式:主動和被動

       主動模式下又分爲

          server端 每個一定時間到agent端採集數據

          通過get來執行腳本或命令到agent端拉取數據

       被動模式爲

          agent端通過sender發送數據給server端

 

  zabbix架構中的組件:

     zabbix-server:C語言

     zabbix-agent:C語言

     zabbix-database:MySQL,PostgreSQL(PGsql),Oracle、DB2,SQLite    

     zabbix-web :GUI 用於實現設定和展示

     zabbix-proxy:分佈式監控環境中的專用組件

       wKiom1Q_Lv2SerdFAAESn5VYaX4149.jpg

zabbix 的邏輯架構

wKiom1Q_MFuRCtu2AAF3r6eY93Q286.jpg

  架構講解:通常我們的監控從添加host開始,而該host(主機)可以屬於一個hostgroup(主機組),當然,在添加host時,我們必然要添加一些我們需要的items(監控項),而這些items上的數據肯定是從agent端的主機上採集來的數據(根據採集方式不同,因此分爲了zabbix poller到agent端拉取,以及agent端直接推送到server端 ,因此有2個方向),當然host也可以直接使用template(模板),上面定義各個選項(包含graphs(數據生產的圖像)、trigger(觸發器)、items等等),好了下面從items往下走,定義了items之後我們必然會給這些採集到數據設定一個合理的範圍值,即閾值,而這就是trigger(觸發器),一旦超出了閾值之後,就會產生events(事件),而我們就可以根據這些event來定義相應的action(處理動作)了,這些動作可以是執行一些腳本、命令(例如發現數據異常可以通過命令完成遠程agent服務重啓等),也可以是發送信息、Email通知運維人員等。當然有些時候當服務器處於維護升級時,數據可能就會異常,而這些異常是運維人員知道的,無需報警的,因此這就是這裏的maintenance(維護)的意義了,maintenance可以定義維護時間內,而在這段時間內是不發送警報。

好了,這是我的大概理解,可能講的不是那麼好,見諒。

 

 

 zabbix常用的術語
主機(host):要監控的網絡設備,可由IP或者DNS名稱指定
主機組(host group):主機的邏輯容器,可以包含主機和模板,但同一個組內的主機和模板不能相互連接
監控項(item):一個特定監控指標的相關的數據,這些數據來自於被監控的對象
觸發器(trigger):一個表達式,用於評估某監控對象的某特定item內所收到的數據是否在合理範圍內,即閾值;接收到的數據大於閾值時,觸發器狀態將從OK轉變爲problem,當數據再次迴歸合理範圍時,狀態也會相應變回OK
事件(event):即發生的一個值得關注的事情,當trigger狀態發生改變時自動產生事件
動作(action):指對於某特定事件實現定義的處理方法
報警升級(escalation):發送報警或執行遠程命令的自定義方案,如每隔幾分鐘發一次警報,總共發送幾次
媒介(media):發送通知的手段,如Email、jabber、SMS等
通知(notification):通過選定的媒介向用戶發送的有關某事件的信息
遠程命令(remote command):預定義的命令,可以在被監控主機處於某特定條件下時自動執行
模板(template):用於快速定義被監控主機的預設條目集合,通常包含了item、trigger、graph、screen、application以及low-level Discovery rule;
應用程序(application):一組item的集合
web場景(web scenario):用於檢測web站點可用性的一個或多個http請求
前端(frontend):zabbix的web接口

 

zabbix啓動的進程 

wKioL1Q_en7CDeheAAIxKq0yVFo822.jpg

housekeeper:負責清理過期的數據

poller:拉去數據

httppoller:監控web頁面的專業拉取數據用的

discoverer:發現資源的

alerter:報警用的

watchdog:負責監視所有的進程的狀態的,一旦某個進程關閉,watchdog將會通知zabbix重新啓動該進程

pinger:使用ping探測主機是否在線用的

timer:計時器

secalator:報警升級

nodewatcher:監控各節點的

db_config_syncer:數據庫配置同步

db_data_syncer:數據庫數據同步

 

實驗:利用zabbix實現agent主機監控

實驗中我們會通過2種模型來演示:

 server-agent模型

server-proxy-agent模型

 

 實驗前提:

已經安裝好lamp環境

server:172.16.6.30  node3

agent:172.16.6.50   node5

proxy:    172.16.6.40  node4

 

 

 server-agent模型

zabbix 安裝

這裏我使用的是rpm安裝

下載網頁如下

wKioL1Q_LQLwe0fcAAN22VZwKh8999.jpg

 

這裏我已經下載好了

[root@node3 ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog  zabbix-2.4
[root@node3 ~]# cd zabbix-2.4/
[root@node3 zabbix-2.4]# ls
zabbix-2.4.0-1.el6.x86_64.rpm
zabbix-agent-2.4.0-1.el6.x86_64.rpm
zabbix-get-2.4.0-1.el6.x86_64.rpm
zabbix-java-gateway-2.4.0-1.el6.x86_64.rpm
zabbix-proxy-2.4.0-1.el6.x86_64.rpm
zabbix-proxy-mysql-2.4.0-1.el6.x86_64.rpm
zabbix-proxy-pgsql-2.4.0-1.el6.x86_64.rpm
zabbix-proxy-sqlite3-2.4.0-1.el6.x86_64.rpm
zabbix-release-2.4-1.el6.noarch.rpm
zabbix-sender-2.4.0-1.el6.x86_64.rpm
zabbix-server-2.4.0-1.el6.x86_64.rpm
zabbix-server-mysql-2.4.0-1.el6.x86_64.rpm
zabbix-server-pgsql-2.4.0-1.el6.x86_64.rpm
zabbix-web-2.4.0-1.el6.noarch.rpm
zabbix-web-japanese-2.4.0-1.el6.noarch.rpm
zabbix-web-mysql-2.4.0-1.el6.noarch.rpm
zabbix-web-pgsql-2.4.0-1.el6.noarch.rpm
這裏我用node3當做server端
[root@node3 zabbix-2.4]# yum -y install zabbix-2.4.0-1.el6.x86_64.rpm zabbix-server-2.4.0-1.el6.x86_64.rpm zabbix-server-mysql-2.4.0-1.el6.x86_64.rpm zabbix-agent-2.4.0-1.el6.x86_64.rpm zabbix-get-2.4.0-1.el6.x86_64.rpm zabbix-sender-2.4.0-1.el6.x86_64.rpm zabbix-web-2.4.0-1.el6.noarch.rpm zabbix-web-mysql-2.4.0-1.el6.noarch.rpm

 

創建數據庫並授權

mysql> create database zabbix;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on zabbix.* to 'zbxuser'@'172.16.%.%' identified by 'zbxpass';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on zabbix.* to 'zbxuser'@'localhost' identified by 'zbxpass';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on zabbix.* to 'zbxuser'@'127.0.0.1' identified by 'zbxpass';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on zabbix.* to 'zbxuser'@'node3.mwj.com' identified by 'zbxpass';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 模板導入數據庫

[root@node3 ~]# cd /usr/share/doc/zabbix-server-mysql-2.4.0/create/
[root@node3 create]# ls
data.sql  images.sql  schema.sql
[root@node3 create]# mysql zabbix <schema.sql 
[root@node3 create]# mysql zabbix <images.sql 
[root@node3 create]# mysql zabbix <data.sql

 修改server端配置數據庫信息

[root@node3 create]# vim /etc/zabbix/zabbix_server.conf

 wKiom1Q_VHjS-iuKAAEHO5myyEI013.jpg

 

啓動server服務

[root@node3 create]# service zabbix-server start
Starting Zabbix server:                                    [  OK  ]

 

使用瀏覽器打開

wKiom1Q_Wf-ifZANAANBjWUumwo634.jpg

注意配置之前需要修改PHP配置文件中的時區,否則會出錯

[root@node3 ~]# vim /etc/php.ini
[Date]
; Defines the default timezone used by the date functions
;http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone =Asia/Shanghai             啓用時區

修改完了別忘了重啓httpd

[root@node3 ~]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

 

查看下監聽端口

     MySQL3306     httpd80         zabbix-server 10051

wKioL1Q_ZxSCnRHGAAFc10hFPwg778.jpg

 

注意這裏配置必須與之前授權的一致

wKiom1Q_W03gbY8RAANDoiGEVRk383.jpg

 

注意登錄界面上有默認的登錄賬號密碼admin(zabbix)

wKiom1Q_W_igCs2XAAJjRtGv3nM603.jpg

 

OK

wKiom1Q_ZqmDaUIIAATpOI0gEZM346.jpg 

接下來配置agent端

先安裝agent客戶端

[root@node5 ~]# cd zabbix-2.4/
[root@node5 zabbix-2.4]# ls
zabbix-2.4.0-1.el6.x86_64.rpm               
zabbix-proxy-mysql-2.4.0-1.el6.x86_64.rpm    
zabbix-server-2.4.0-1.el6.x86_64.rpm        
zabbix-web-mysql-2.4.0-1.el6.noarch.rpm
zabbix-agent-2.4.0-1.el6.x86_64.rpm         
zabbix-proxy-pgsql-2.4.0-1.el6.x86_64.rpm    
zabbix-server-mysql-2.4.0-1.el6.x86_64.rpm  
zabbix-web-pgsql-2.4.0-1.el6.noarch.rpm
zabbix-get-2.4.0-1.el6.x86_64.rpm           
zabbix-proxy-sqlite3-2.4.0-1.el6.x86_64.rpm  
zabbix-server-pgsql-2.4.0-1.el6.x86_64.rpm
zabbix-java-gateway-2.4.0-1.el6.x86_64.rpm  
zabbix-release-2.4-1.el6.noarch.rpm          
zabbix-web-2.4.0-1.el6.noarch.rpm
zabbix-proxy-2.4.0-1.el6.x86_64.rpm         
zabbix-sender-2.4.0-1.el6.x86_64.rpm         
zabbix-web-japanese-2.4.0-1.el6.noarch.rpm
[root@node5 zabbix-2.4]# yum -y install 
zabbix-2.4.0-1.el6.x86_64.rpm 
zabbix-agent-2.4.0-1.el6.x86_64.rpm 
zabbix-sender-2.4.0-1.el6.x86_64.rpm

 修改配置文件

[root@node5 zabbix-2.4]# vim /etc/zabbix/zabbix_agentd.conf
修改以下3項
Server=172.16.6.30                 指向服務器端
ServerActive=172.16.6.30           主動模式指向的服務器  
 Hostname=node5.mwj.com            全局唯一的主機名

啓動服務

[root@node5 zabbix-2.4]# service zabbix-agent start
Starting Zabbix agent:                                     [  OK  ]
[root@node5 zabbix-2.4]# ss -tnl
確保10050端口監聽
LISTEN    0     128                      :::10050                   :::*     
LISTEN    0     128                      *:10050                    *:*

 

然後就可以用web接口直接添加主機了

wKiom1Q_hUvw669sAARAdCyhHqc584.jpg

填完相關的信息還可以選定模板

wKiom1Q_ht3yvjMdAAOebfnF7bc121.jpg

模板有很多,適合的就行,這裏我選了個linux操作系統的監控項

wKioL1Q_h8WhR5wbAAIPpzoRj1M053.jpg

 選完添加完成就可以添加主機了

wKioL1Q_iSGz4rx4AAYeozsoPGA216.jpg

 

 zabbix 的代理模式

代理端安裝proxy包

[root@node4 zabbix-2.4]# yum install zabbix-2.4.0-1.el6.x86_64.rpm zabbix-proxy-2.4.0-1.el6.x86_64.rpm zabbix-proxy-mysql-2.4.0-1.el6.x86_64.rpm

創建代理數據庫並授權

mysql> create database zabbix_proxy;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on zabbix_proxy.* to 'zabbix'@'127.0.0.1' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on zabbix_proxy.* to 'zabbix'@'node4.mwj.com' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on zabbix_proxy.* to 'zabbix'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;

數據庫初始化

[root@node4 ~]# cd /usr/share/doc/zabbix-proxy-mysql-2.4.0/create/

[root@node4 create]# mysql zabbix_proxy < schema.sql

 

修改配置文件

[root@node4 ~]# vim /etc/zabbix/zabbix_proxy.conf

注意:在代理模式下也分爲主動模式和被動模式

### Option: ProxyMode

#       Proxy operating mode

#       0 - proxy in the active mode

#       1 - proxy in the passive mode

#

# Mandatory: no

# Default:

# ProxyMode=0                 默認工作爲主動模式
Server=172.16.6.30            注意服務器指向監控端
Hostname=node4.mwj.com
DBName=zabbix_proxy           注意,這裏的數據庫並不是server端的數據庫
DBUser=zabbix                 而是在proxy端暫時存儲數據的數據庫
DBPassword=123456
ConfigFrequency=60         zabbix proxy 想服務器檢索配置數據信息的頻率,在被動模式下該參數將被忽略
DataSenderFrequency=5         zabbix proxy發送收集的數據給zabbix server的頻率

啓動服務

[root@node4 ~]# service zabbix-proxy start

Starting Zabbix proxy:                                     [  OK  ]

 

啓動之後就可以到監控端添加了

注意添加是的代理名稱一定要與代理端配置文件中的主機名保持一致

wKioL1RDYmKAEcL_AAIMUD0m2Fc539.jpg

wKiom1RDYhvB8vp2AAIq5zWL4Wc963.jpg

 

添加完之後修改被監控的agent端的配置文件

[root@node5 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.16.6.40                server指向proxy主機
Hostname=node5.mwj.com
 修改完之後重啓服務
[root@node5 ~]# service zabbix-agent restart
Shutting down Zabbix agent:                                [  OK  ]
Starting Zabbix agent:                                     [  OK  ]

 

到監控端添加主機

尤其注意的是最下面的一個選項:monitored by proxy

這一項一定要選擇剛剛的創建的那個代理主機

wKiom1RDYqbjsXLwAAHITfLxPTM725.jpg

 

創建完成之後等待一段時間後就可以看到主機監控成功了

wKiom1RDY0jRpq4pAALpBxLSFDI427.jpg

並且監控到的數據也可以顯示了。

 

好的,那麼本節關於監控的內容就講到這裏,再見!

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