首先,大家應該瞭解一下,什麼是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的原理及各部分的作用
下面介紹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 ”,會出現如下圖所示的界面。
PHP提示的各項參數都滿足後,可以繼續往下進行,單擊“Next”按鈕。如果提示參數不通過,修改php.ini配置文件,並重啓Web(httpd)服務。
配置數據庫連接的各項參數如下圖所示:
測試結果爲OK後,單擊“Next”按鈕進行下一步操作,如下圖所示:
下圖中的這些配置信息將會寫入/${PATH}/zabbix/conf/zabbix.conf.php文件中。
進入如下圖所示的登錄界面,默認賬戶是admin,密碼是zabbix,登陸成功的頁面如下圖。
Zabbix是支持多語言的,可以爲每個用戶配置不同的語言環境。單擊菜單欄Administration——》Users——》User name——》Language修改用戶的語言(雖然Zabbix支持中文,但本人並不推薦讀者使用中文界面,原因是中文界面的翻譯不準確,會誤導讀者,故本人使用英文界面講解)。
另外,在個人用戶設置中,可以開啓聲音告警的提示信息和前端消息的聲音提示。
如果提示不能正常運行,分別檢查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; ?>
安裝成功後,請務必禁用Guset賬戶,防止非法訪問。
另:關於zabbix-server初始配置時的幾種常見故障及處理方法,我將會在下次詳細列出,以及Zabbix-Agent的配置方法一同