天天看點

監控之Zabbix

what is Zabbix?

        zabbix是一個基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。支援多種采集方式和采集用戶端,有專門的Agent(代理)(zabbix-agent支援linux、Unix、windows、Aix、Bsd和Solaris的監控),也可以支援SNMP、IPMI、JMX、Telnet、SSH等多種協定,它将采集到的資料存放到資料庫,然後對其進行分析整理,達到條件觸發告警。其靈活的擴充性和豐富的功能是其他監控系統不可相比的。

監控系統的基本原理

        一個監控系統往往需要對實體硬體和應用軟體的性能、參數進行資料彙集,實作集中管理和統一分析。一個監控系統構成分為監控伺服器端程式、資料存儲、被采集節點等子產品,需要對采集的資料進行分析和處理,判斷是否有異常情況,是否滿足報警條件。這裡涉及到告警條件設定問題?通常是根據實際的經驗值、業務需求來設定告警門檻值。達到告警條件時,則發送告警資訊給管理人員,然而,有些故障是我們希望通過自動處理的,等到程式無法判斷的時候,在去通知管理人員。

        監控系統的采集可以分為兩種:主動監控和被動監控。一個理想的監控系統,其采集端支援的采集方式應該越多,其擴充能力越強,進而适應不同的場景需求。

        兩種資料采集模式介紹

                在大多數監控系統中都支援這兩種模式。被動模式對伺服器的開銷比較大,适合小規模的監控環境;主動模式對伺服器的開銷較小,适合大規模的監控環境。采集資料得協定方式可以分為兩種:專用用戶端采集和共用協定采集(其中協定包括snmp、ssh、telnet等)

常見的監控系統性能采集名額

監控項目 詳細内容
主機監控 cpu、記憶體、磁盤剩餘空間/使用率 I/O、SWAP使用率、系統UP時間、程序數、負載
網卡監控 ping的往返時間及包成功率、網卡流量,包括流入/流出量和錯誤的資料包數
檔案監控 監控檔案大小,Hash值,比對查詢、字元串存在與否
URL監控 檢測指定URL通路過程中傳回碼、下載下傳時間及檔案大小,支援内容比對
應用程式 端口和記憶體使用率、CPU使用率、服務狀态、請求數、并發連接配接數、消息隊列的位元組資料、Client事物處理數、service狀态等
資料庫 檢測資料庫中指定表空間、資料庫的遊标數、Session數、事務數、死鎖數、緩沖池命中率、庫Cache命中率、目前連接配接數、程序的記憶體使用率等
日志 錯誤日志比對、特定字元串比對
硬體 溫度、風扇轉速、電壓等

Zabbix安裝

        zabbix運作環境為LNMP環境或LAMP環境,其中資料庫可以是mysql,可以是oracle、postgresql等。zabbix大體依賴兩個條件:1)硬體條件  2)軟體條件。其中硬體條件包括1.硬體配置;官網有推薦最低硬體配置要求,如有需要可以自行查找資料了解。2.磁盤容量大小;zabbix-server的資料庫大小取決于NVPS(Number of processed values persecond),NVPS從總體上反映了處理速度,與監控項的數目、監控類型、取值間隔、History的保留時間和Trends的保留時間有直接關系。這裡可以自行參照《zabbix企業級分布式監控系統》p22有詳細介紹。其中軟體條件包括:1.zabbix支援的作業系統平台如Linux、Unix、windows等,2.資料庫和web環境等相關版本要求。3.zabbix監控中涉及的協定所用到的軟體,如通過IPMI協定可以對硬體進行監控,這就需要安裝OpenIPMI工具。4.時間同步。不管是監控還是做叢集對時間精準度要求都很高。在監控中時間對資料的計算是有影響等。是以需要最好時間同步,如搭建時間伺服器,或同步外網的時間伺服器,做好時間同步。

一、yum安裝LAMP

1.1安裝主程式

# yum -y install httpd php mysql mysql-server php-mysql      

注:目前mysql高版本已經更名為mariadb,是以安裝指令變為yum install mariadb 

1.2 安裝apache擴充

# yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql      

1.3 安裝php擴充

# yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath      

1.4 安裝mysql擴充

# yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql      

1.5 apache設定首頁

# vim httpd.conf
增加DirectoryIndex index.php       #php目錄索引      

1.6 開機啟動

# service httpd start
# chkconfig httpd on
# service mysqld start
# chkconfig mysqld on      

1.7 設定mysql資料庫root帳号密碼。

# mysqladmin -u root password 'fanshine'      

 二、Zabbix 安裝

(1)zabbix-server伺服器端安裝

2.1 yum安裝zabbix需要的其他元件

# yum -y install net-snmp-devel curl-devel      

2.2 添加zabbix使用者

# groupadd zabbix           添加zabbix組            
# useradd zabbix -g zabbix   建立zabbix使用者并将其加入到zabbix組      

2.3 下載下傳并解壓軟體

#wget http://prdownloads.sourceforge.net/zabbix/zabbix-2.0.21.tar.gz
# tar zxvf zabbix-2.0.21.tar.gz -C /usr/src
# cd /usr/src/zabbix-2.0.21      

2.4 為zabbix建立資料庫并添加使用者

# mysql -u root -p fanshine
# mysql> CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;  #建立一個資料庫叫zabbix 
# mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix123';
#給zabbix這個資料庫授權,隻允許zabbix這個使用者通過本地登入,zabbix使用者的密碼為zabbix123mysql> flush privileges;      

2.5 将zabbix源碼包中的資料導入到建立的zabbix資料庫

注:導入也要嚴格按照順序來。

# shell>mysql -u zabbix -p 'zabbix123' zabbix < /usr/src/zabbix-2.0.3/database/mysql/schema.sql      

 #這個是zabbix的資料庫表結構,要先導入。 

# shell>mysql -u zabbix -p 'zabbix123' zabbix < /usr/src/zabbix-2.0.3/database/mysql/images.sql      
# shell>mysql -u zabbix -p'zabbix123' zabbix < /usr/src/zabbix-2.0.3/database/mysql/data.sql      

2.6 編譯安裝

./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-ssh2      

同時安裝server和agent,并支援将資料放入mysql資料中,可使用類似如下配置指令:

./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-ssh2

如果僅安裝server,并支援将資料放入mysql資料中,可使用類似如下配置指令:

./configure --enable-server --with-mysql --with-net-snmp --with-libcurl

如果僅安裝proxy,并支援将資料放入mysql資料中,可使用類似如下配置指令:

./configure --prefix=/usr --enable-proxy --with-net-snmp --with-mysql --with-ssh2

如果僅安裝agent,可使用類似如下配置指令:

./configure --enable-agent

注意:在編譯時報錯資訊及解決如下:

checking for SSH2 support... no

configure: error: SSH2 library not found

解決辦法:

yum -y install libssh2-devel      

上面一個報錯解決了,繼續./configure,又出現如下錯誤:

checking for LDAP support... no

configure: error: Invalid LDAP directory - unable to find ldap.h

yum -y install openldap openldap-devel      

而後編譯安裝zabbix即可:

# make && make install 

2.7  為zabbix server添加端口

[root@Centos ~] vim /etc/services   [zabbix預設已設定好]
添加如下資訊
zabbix-agent    10050/tcp                       # Zabbix Agent
zabbix-agent    10050/udp                       # Zabbix Agent
zabbix-trapper  10051/tcp                       # Zabbix Trapper
zabbix-trapper  10051/udp                       # Zabbix Trapper      

2.8  配置檔案目錄軟連接配接

# ls /usr/local/zabbix/etc
zabbix_agent.conf    zabbix_agentd.conf    zabbix_proxy.conf    zabbix_server.conf
zabbix_agent.conf.d  zabbix_agentd.conf.d  zabbix_proxy.conf.d  zabbix_server.conf.d
# ln -s /usr/local/zabbix/etc /etc/zabbix      

2.9 更改配置檔案中資料庫相關的使用者名密碼

# vim /etc/zabbix/zabbix_server.conf      

修改以下三項:

  DBName=zabbix

  DBUser=zabbix

  DBPassword=zabbix123

注:DBPassword 預設是被注釋掉的

# vim /etc/zabbix/zabbix_agentd.conf      

  Hostname=zabbix server

  ServerActive=192.168.6.242:10051

2.10 拷貝相應的web程式到相關WEB服務目錄下

# cp -r /usr/src/zabbix-2.0.21/frontends/php/ /var/www/html/zabbix/
# chown -R zabbix.zabbix /var/www/html/zabbix      

2.11拷貝zabbix服務端和用戶端啟動腳本到/etc/init.d目錄下.

# cp /usr/src/zabbix-2.0.21/misc/init.d/fedora/core5/zabbix_server /etc/init.d
# cp /usr/src/zabbix-2.0.21/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d      

2.11 修改啟動腳本

# vim /etc/init.d/zabbix_server
 BASEDIR=/usr/local/zabbix/  修改zabbix_server實際位置      
# service zabbix_server start
Starting Zabbix Server:              [  OK  ]      
# vim /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix/      
# service zabbix_agentd start
Starting Zabbix Agent:               [  OK  ]      
[root@Centos zabbix-2.0.21]#chkconfig zabbix_server on
[root@Centos zabbix-2.0.21]#chkconfig zabbix_agentd on      

注:也可以直接啟動

/usr/local/zabbix/sbin/zabbix_server   #啟動server服務
/usr/local/zabbix/sbin/zabbix_agentd   #啟動agent服務      
檢視zabbix服務是否啟動
[root@Centos zabbix-2.0.21]# netstat -tnlp | grep zabbix
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      2120/zabbix_agentd  
tcp        0      0 0.0.0.0:10051               0.0.0.0:*                   LISTEN      2044/zabbix_server  
tcp        0      0 :::10050                    :::*                        LISTEN      2120/zabbix_agentd  
tcp        0      0 :::10051                    :::*                        LISTEN      2044/zabbix_server      

2.12 修改PHP配置檔案php.ini内容

# vim /etc/php.ini
date.timezone = Asia/Shanghai
post_max_size = 32M
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
mbstring.func_overload = 2      
# service httpd restart
Stopping httpd:       [  OK  ]
Starting httpd:       [  OK  ]      

三、浏覽器安裝

(1)浏覽器打開剛安裝的zabbix  http://192.168.137.100/zabbix/php

監控之Zabbix

點選next,進入下一步:

監控之Zabbix
監控之Zabbix
監控之Zabbix
監控之Zabbix

注:如果出現fail提示,下載下傳zabbix.conf.php配置檔案并copy到/var/www/html/zabbix/php/conf下.

點選Finish,進入登入:預設賬号和密碼為:Admin   zabbix

監控之Zabbix

之後登入到zabbix首頁:

監控之Zabbix

注意:登入後發現一個報錯:zabbbix server is not  running:the information displayed may not be current

關閉selinux,編輯selinux檔案設定:

SELINUX=disabled

或臨時通過指令關閉

setenforce 0

(2)zabbix-agent用戶端安裝

2.11 下載下傳并解壓軟體

# wget http://prdownloads.sourceforge.net/zabbix/zabbix-2.0.21.tar.gz
# tar zxvf zabbix-2.0.21.tar.gz -C /usr/src
# cd /usr/src/zabbix-2.0.21      

2.12 編譯安裝

編譯安裝隻需要指定agent就可以:

 # cd zabbix-2.0.21
 # ./configure --enable-agent
 # make && make install      

2.13 複制agent啟動腳本

 # cp /usr/src/zabbix-2.0.21/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/      

2.14 編輯配置檔案

  # vi /usr/local/etc/zabbix_agentd.conf
  修改:
  Server=127.0.0.1,172.17.0.2
  Hostname=zabbix-server
  ServerActive=172.17.0.2:10051      

參數說明:

Server:被動模式,允許哪台伺服器連接配接agent。

ServerActive:主動模式,向哪台伺服器傳送資料。