zabbix企業級分佈式監控系統--zabbix-server和zabbix-agent的配置過程

首先,大家應該瞭解一下,什麼是zabbix?

       Zabbix是一個分佈式監控系統,支持多種採集方式和採集客戶端,有專用的Agent(代理),也可以支持SNMP、IPMI、JMX、Telnet、SSH等多種協議,它將採集到的數據存放到數據庫,然後對其進行分析整理,達到條件觸發告警。其靈活的擴展性和豐富的功能是其他監控系統不能比的。相對來說,他的總體功能做得非常優秀,其界面也很簡潔美觀。

       在國內,BAT的部分業務、豆瓣、58同城、PPTV、搜狐、Letv、人人、網易、小米、360等公司都在使用Zabbix。

       Zabbix適合中小型企業、大中型企業的用戶使用。單個Server節點可以支持上萬臺設備,每秒可以處理1.5萬次請求,理論上可以支持5萬臺設備。

       Zabbix自身的定位是中型企業和大型企業,如果在特大型環境中使用,需要解決大併發、大壓力的問題,這對使用者提出了更高的要求。

       Zabbix的通用架構是C/S架構,分佈式架構爲C/P/S或C/N/S,Zabbix-Server將採集到的數據持久地存儲到數據庫中,用前端的UI友好地展示給用戶。

       下面是Zabbix的架構圖,可以更直觀的幫助初學者理解Zabbix的原理及各部分的作用

wKiom1ZBdT2ySZ_tAACKFpQ_Shc032.png

下面介紹Zabbix的安裝和配置

       安裝環境描述:Zabbix服務器的運行環境爲Linux(Unix)+PHP+Web Service+Database,這裏的Web Service可以爲Nginx、Apache,Database可以爲MySQL、Oracle、PostgreSQL等。

       其次,還有一點需要注意的是時間同步。Zabbix-Server對時間的精準要求比較高,時間對數據的計算等都有影響,因此,最好設置NTP自動同步時間。也可以用crontab進行同步(實際的生產環境中不推薦這麼做),如下所示,使用crontab進行時間同步。

*/30    *    *    *    *     /usr/sbin/ntpdate    pool.ntp.org

       最後一點,部署環境的考慮。Zabbix-Server儘量部署在覈心業務所在的機房,要求到各分節點的網絡穩定。另外,要考慮到網絡流量的問題,做好安全策略。

(一)Zabbix-Server服務器端的安裝

       注意:下面以CentOS6.5_X64爲例介紹如何安裝Zabbix-Server服務器端。本例採用的是RPM包安裝方式,這也是我比較推薦的方式,該方式較簡介。源碼安裝的方式我會在在下次文章中介紹。

       準備好CentOS6.5_X64系統,配置IP地址,確保與互聯網連接正常。進入系統,測試網路,方法如下:

[root@zabbix-server ~]# ping -c 4 www.baidu.com
PING www.a.shifen.com (119.75.218.70) 56(84) bytes of data.
64 bytes from 119.75.218.70: icmp_seq=1 ttl=54 time=3.31 ms
64 bytes from 119.75.218.70: icmp_seq=2 ttl=54 time=6.31 ms
64 bytes from 119.75.218.70: icmp_seq=3 ttl=54 time=10.5 ms
64 bytes from 119.75.218.70: icmp_seq=4 ttl=54 time=4.16 ms

--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 12023ms
rtt min/avg/max/mdev = 3.313/6.078/10.530/2.793 ms

        1. 安裝Zabbix官方源和epel源,如下所示:

[root@zabbix-server ~]# rpm -ivh http://repo.zabbix.com/zabbix/2.0/rhel/6/x86_64/zabbix-release-2.0-1.el6.noarch.rpm
[root@zabbix-server ~]# rpm -ivh  http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

注意:由於軟件版本更新,以上鍊接可能會失效,請讀者下載並安裝相應的版本。

        2. 安裝服務器端(注意:由於服務器端也是需要監控的,股這裏也一併安裝Zabbix-Agent,如下所示。)

[root@zabbix-server ~]# yum -y install zabbix zabbix-get zabbix-server zabbix-web-mysql zabbix-web  zabbix-agent

        安裝可以看到,yum方式安裝並沒有自動安裝mysql-server。

        注意:由於RHEL系統(Cent OS不存在這個問題)缺少php-bcmath和php-mbstring這兩個包,會導致Web頁面的安裝提示缺少組件,所以讀者可以在Cent OS源中下載這兩個包安裝即可(注意與系統版本對應)。

http://vault.centos.org/

        3. 安裝MySQL數據庫服務,命令如下:

[root@zabbix-server ~]# yum -y install mysql-server

修改MySQL配置文件如下(*星號標記部分很重要)

[root@zabbix-server ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8    *
innodb_file_per_table=1      *

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

啓動服務。

[root@zabbix-server ~]# chkconfig mysqld on
[root@zabbix-server ~]# service mysqld start

查看服務是否啓動成功,如下所示:

[root@zabbix-server ~]# ps -ef | grep mysql
root       1199      1  0 09:56 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql      1307   1199  0 09:56 ?        00:00:29 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root       4503   2691  0 14:09 pts/4    00:00:00 grep mysql
[root@zabbix-server ~]# netstat -nlput | grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      1307/mysqld

        3.1 創建Zabbix的數據庫

設置MySQL的root用戶密碼。

[root@zabbix-server ~]# mysqladmin -uroot password admin
[root@zabbix-server ~]# mysql -uroot -padmin
mysql> create database zabbix character set utf8; 
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> flush privileges;

        注意:這裏容易出現的問題是創建Zabbix的數據庫字符集不爲utf,這會導致Web界面切換到中文環境時出現亂碼。

        3.2 導入Zabbix-Server的數據庫

[root@zabbix-server ~]# mysql -uzabbix -pzabbix
mysql> use zabbix;
mysql> source /usr/share/doc/zabbix-server-mysql-2.0.15/create/schema.sql;

需要注意的是,如果安裝Zabbix-Proxy,只導入schema.sql即可,無須導入下面的SQL,否則Zabbix-Proxy無法正常工作。

mysql> source /usr/share/doc/zabbix-server-mysql-2.0.15/create/p_w_picpaths.sql;
mysql> source /usr/share/doc/zabbix-server-mysql-2.0.15/create/data.sql;
mysql> show tables;

        3.3 配置 Zabbix_server.conf

配置zabbix_server.conf文件如下。

3.3.1 修改參數。

[root@zabbix-server ~]# egrep -v "(^#|^$)" /etc/zabbix/zabbix_server.conf 
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost                                     *可修改
DBName=zabbix                                        *默認
DBUser=zabbix                                        *默認
DBPassword=zabbix                                    *需修改
DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306                                          *默認
StartPollers=5                                       *
StartIPMIPollers=10
StartPollersUnreachable=10
StartTrappers=10
StartPingers=10
StartDiscoverers=10
SNMPTrapperFile=/var/log/snmptt/snmptt.log
ListenIP=127.0.0.1
MaxHousekeeperDelete=500
CacheSize=256M                                        *
StartDBSyncers=40
HistoryCacheSize=128M
TrendCacheSize=128M
HistoryTextCacheSize=128M
Timeout=30
TrapperTimeout=300
UnreachablePeriod=45
UnavailableDelay=60
UnreachableDelay=15
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
FpingLocation=/usr/sbin/fping
LogSlowQueries=10000
StartProxyPollers=50
ProxyConfigFrequency=3600

以上參數只需關注*星號標記的部分,這部分爲性能參數,需根據實際情況進行調整。默認只需修改DBPassword=zabbix 即可。

[root@zabbix-server ~]# mkdir /etc/zabbix/alertscripts    /etc/zabbix/externalscripts

3.3.2 啓動Zabbix-Server服務

[root@zabbix-server ~]# service zabbix-server start
[root@zabbix-server ~]# service httpd start
[root@zabbix-server ~]# chkconfig zabbix-server on
[root@zabbix-server ~]# chkconfig httpd on

        3.4 防火牆、Selinux和權限的設置

1) 防火牆設置

[root@zabbix-server ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10051 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 10050 -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 10050 -j ACCEPT
[root@zabbix-server ~]# service iptables restart

上述代碼中,10050是Agent的端口,Agent採用被動方式,Server主動連接Agent的10050端口;10051是Server的端口,Agent採用主動或Trapper方式,會連接Server的10051端口。

2) Selinux的設置

如果開啓Selinux,安裝時提示不能寫入文件,出文件權限不是Web用戶外,還有一個原因是Selinux默認不允許寫入文件,設置語句如下:

[root@zabbix-server ~]# chcon -R -t httpd_sys_content_rw_t  /usr/share/zabbix/conf
[root@zabbix-server ~]# setsebool -P httpd_can_network_connect=true
[root@zabbix-server ~]# semanage  port -a -t http_port_t  -p tcp 10051

如果讀者對Selinux不是特別熟悉,可以選擇關閉Selinux。在實際的生產環境中,大部分用戶也是選擇關閉Selinux的。

[root@zabbix-server ~]# setenforce 0  #設置爲警告模式,只給出提示,不會阻止操作,不用重啓
                                      #服務器即生效
[root@zabbix-server ~]# getenforce    #獲取當前Selinux的運行狀態

直接關閉Selinux的方法。

[root@zabbix-server ~]# vim /etc/selinux/config
SELINUX=disabled

注意:此種方法需要重啓服務器才能生效。

3) php.ini配置文件的設置

[root@zabbix-server ~]# vim /etc/php.ini
date.timezone = Asia/Shanghai
max_execution_time = 300
post_max_size = 16M
max_input_time = 300
memory_limit = 128M
mbstring.func_overload = 2

在LAMP環境中,也可以按下述方式配置PHP參數,比修改php.ini更方便。而在Zabbix的官方RPM中,這一步已經配置過了,所以無須修改。

[root@zabbix-server ~]# vim /etc/httpd/conf.d/zabbix.conf
<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    php_value date.timezone  Asia/Chongqing    *
    php_value max_execution_time 300           *
    php_value memory_limit 128M                *
    php_value post_max_size 16M                *
    php_value upload_max_filesize 2M           *
    php_value max_input_time 300               *
</Directory> 
[root@zabbix-server ~]# service httpd restart

如果在後面配置Web時提示任何參數不滿足安裝配置要求,修改對應的參數後重啓Httpd即可。

        3.5 配置Web界面

打開瀏覽器,輸入“http://IP地址/zabbix ”,會出現如下圖所示的界面。

wKioL1ZBpT_AV-6cAAMB866cJyU824.jpg

wKioL1ZBpmnhALClAAN9sKd34SU886.jpg


        PHP提示的各項參數都滿足後,可以繼續往下進行,單擊“Next”按鈕。如果提示參數不通過,修改php.ini配置文件,並重啓Web(httpd)服務。

        配置數據庫連接的各項參數如下圖所示:


wKiom1ZBpiKAoo5bAAMbPKaM9jI460.jpg

   

        測試結果爲OK後,單擊“Next”按鈕進行下一步操作,如下圖所示:


wKiom1ZBpiOyNwRhAALNmz0WJPI053.jpg


        下圖中的這些配置信息將會寫入/${PATH}/zabbix/conf/zabbix.conf.php文件中。


wKioL1ZBpmuRIr2HAAMCtbbXtO0284.jpg

wKioL1ZBpmyDY6wHAAKQUqh_qb4672.jpg


進入如下圖所示的登錄界面,默認賬戶是admin,密碼是zabbix,登陸成功的頁面如下圖。


wKioL1ZBpmyQVAO-AAD_DQlwsgc388.jpg


        Zabbix是支持多語言的,可以爲每個用戶配置不同的語言環境。單擊菜單欄Administration——》Users——》User name——》Language修改用戶的語言(雖然Zabbix支持中文,但本人並不推薦讀者使用中文界面,原因是中文界面的翻譯不準確,會誤導讀者,故本人使用英文界面講解)。

        另外,在個人用戶設置中,可以開啓聲音告警的提示信息和前端消息的聲音提示。


wKioL1ZBr-zQOjpnAANl_N00QK0859.jpg


       如果提示不能正常運行,分別檢查zabbix_server.conf中的各項配置文件、Selinux、Iptables等。

       配置文件請檢查一下文件的正確配置參數。

       ①/etc/zabbix/zabbix_server.conf中的參數。

DBHost=X.X.X.X                       #數據庫的IP地址
DBName=zabbix                        #數據庫的名稱
DBUser=zabbix                        #數據庫的用戶
DBPassword=zabbix                        #數據庫的密碼

       ②/usr/share/zabbix/conf/zabbix.conf.php中的配置。

<?php
// Zabbix GUI configuration file
global $DB;

$DB["TYPE"]                     = 'MYSQL';
$DB["SERVER"]                   = '192.168.1.1';
$DB["PORT"]                     = '3306';
$DB["DATABASE"]                 = 'zabbix';
$DB["USER"]                     = 'zabbix';
$DB["PASSWORD"]                 = 'zabbix';
// SCHEMA is relevant only for IBM_DB2 database
$DB["SCHEMA"]                   = '';

$ZBX_SERVER                     = '192.168.1.1';
$ZBX_SERVER_PORT                = '10051';
$ZBX_SERVER_NAME                = 'my-zabbix-monitor';

$IMAGE_FORMAT_DEFAULT   = IMAGE_FORMAT_PNG;
?>

wKiom1Z069HTtiUaAAJmutI0Dq8776.png

          安裝成功後,請務必禁用Guset賬戶,防止非法訪問。

另:關於zabbix-server初始配置時的幾種常見故障及處理方法,我將會在下次詳細列出,以及Zabbix-Agent的配置方法一同



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