zabbix是一個基於WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。它能監視各種網絡參數,保證服務器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。
zabbix由2部分構成,zabbix server與可選組件zabbix agent。zabbix server可以通過SNMP,zabbix agent,ping,端口監視等方法提供對遠程服務器/網絡狀態的監視,數據收集等功能。zabbix agent需要安裝在被監視的目標服務器上,它主要完成對硬件信息或與操作系統有關的內存,CPU等信息收集。zabbix server可以單獨監視遠程服務器的服務狀態;同時也可以與zabbix agent配合,可以輪詢zabbix agent主動接收監視數據(agent方式),同時還可被動接收zabbix agent發送的數據。
一、搭建Zabbix監控環境
要想搭建一個Zabbix的工作環境,需要從服務器入手。與服務器通信,管理員需要使用一個Zabbix前端界面,與Zabbix服務器和數據庫進行通信。三個關鍵(界面、服務器和數據庫)可以安裝在同一台服務器上,但是如果你擁有一個更大更復雜的環境,將它們安裝在不同的主機上也是一個選項。Zabbix服務器能夠直接監控到同一網絡中的設備,如果其他網絡的設備也需要被監控,那還需要一台Zabbix代理服務器。
【部署環境說明】:
1、環境准備(在zabbix server上)
(1)安裝LAMP環境:由於zabbix界面是php寫的,所以這里顯示需要安裝LAMP開發環境,mysql5.6已經安裝,直接用yum安裝apache簡單省事。
[root@monitor ~]# yum install httpd php -y
(2)開啟相關服務,主要httpd,mysqld
[root@monitor ~]# chkconfig httpd on
[root@monitor ~]# /etc/init.d/httpd start
(3)安裝zabbix server需要的依賴包
[root@monitor ~]# yum install gcc net-snmp-devel mysql-devel curl-devel perl-DBI php-gd php-mysql php-bcmath php-mbstring php-xml -y
(4)創建zabbix運行賬戶
[root@monitor ~]# groupadd zabbix
[root@monitor ~]# useradd -r -g zabbix -s /sbin/nologin zabbix
2、安裝zabbix server(192.168.245.133)
[root@monitor software]# tar zxvf zabbix-2.4.6.tar.gz [root@monitor software]#cd zabbix-2.4.6 [root@monitor zabbix-2.4.6]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl [root@monitor zabbix-2.4.6]# make install
3、安裝fping
用於同時ping多台主機。下載地址:http://www.fping.org/dist/
[root@monitor software]# tar zxvf fping-3.13.tar.gz [root@monitor software]# cd fping-3.13 [root@monitor fping-3.13]# ./configure && make install [root@monitor fping-3.13]# chown root.zabbix /usr/local/sbin/fping [root@monitor fping-3.13]# chmod 4710 /usr/local/sbin/fping
4、配置zabbix
zabbix server配置與啟動大概需要以下幾個步驟:
(1)創建zabbix數據庫和mysql用戶
mysql> create database zabbix character set utf8; Query OK, 1 row affected (0.22 sec)
mysql> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
Query OK, 0 rows affected (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
(2)導入zabbix數據庫初始化數據
[root@monitor software]# cd /home/software/zabbix-2.4.6/database/mysql/ [root@monitor mysql]# /data/mysql/bin/mysql -uzabbix -pzabbix zabbix <schema.sql [root@monitor mysql]# /data/mysql/bin/mysql -uzabbix -pzabbix zabbix <images.sql [root@monitor mysql]# /data/mysql/bin/mysql -uzabbix -pzabbix zabbix <data.sql
注意:以上導入的順序不能亂。
(3)編輯zabbix配置文件
編輯zabbix server的配置文件/usr/local/zabbix/etc/zabbix_server.conf,修改參數如下:
ListenPort=10051 #zabbix server監聽的端口 LogFile = /usr/local/zabbix/logs/zabbix_server.log #日志所在路徑 PidFile = /usr/local/zabbix/logs/zabbix_server.pid #pid所在目錄 DBHost = 192.168.245.133 #數據庫所在ip,默認是localhost,如果是localhost那么會根據DBSocket的socke連接mysql,開始我用localhost,報錯提示老是用/var/lib/mysql/mysql.sock連接,下面我配置的是/tmp/mysql.sock DBName = zabbix #數據庫名字,默認是zabbix DBUser = zabbix #數據庫用戶,默認是zabbix,我們上面授權的也是zabbix用戶 DBPassword = zabbix #默認數據庫密碼 DBPort = 3306 #默認數據庫端口 DBSocket = /tmp/mysql.sock # sock 文件所在目錄 FpingLocation = /usr/local/sbin/fping #fping命令路徑
(4)配置zabbix服務
從安裝目錄復制zabbix相關腳本到/etc/init.d下
[root@monitor core5]# cp /home/software/zabbix-2.4.6/misc/init.d/fedora/core5/zabbix_* /etc/init.d/ [root@monitor core5]# chmod +x /etc/init.d/zabbix_* [root@monitor core5]# mkdir -p /usr/local/zabbix/logs [root@monitor core5]# chown -R zabbix.zabbix /usr/local/zabbix/ [root@monitor core5]# vim /etc/init.d/zabbix_server ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server" #必須是zabbix的安裝目錄 [root@monitor core5]# vim /etc/services #確保有以下配置 zabbix-agent 10050/tcp #Zabbix Agent zabbix-agent 10050/udp #Zabbix Agent zabbix-trapper 10051/tcp #Zabbix Trapper zabbix-trapper 10051/udp #Zabbix Trapper
(5)啟動和停止zabbix
[root@monitor logs]# /etc/init.d/zabbix_server start Starting Zabbix Server: [ OK ] [root@monitor logs]# /etc/init.d/zabbix_server stop Stopping Zabbix Server: [ OK ]
(6)配置zabbix server開機自動啟動
[root@monitor logs]# chkconfig --add zabbix_server [root@monitor logs]# chkconfig --level 35 zabbix_server on
5、配置zabbix web
(1)將zabbix web文件復制到apache web目錄中
[root@monitor html]# mkdir -p /var/www/html/zabbix
[root@monitor php]# cp -r /home/software/zabbix-2.4.6/frontends/php/* /var/www/html/zabbix
(2)apache配置
[root@monitor html]# vim /etc/httpd/conf/httpd.conf ServerName 192.168.245.133:80 #開啟該參數並改為本機ip地址
(3)php配置
/etc/php.ini配置必須如下,否則web界面安裝zabbix時會失敗。
[root@monitor html]# vim /etc/php.ini date.timezone = Asia/Shanghai max_execution_time = 300 post_max_size = 32M max_input_time = 300
(4)重新啟動apache
[root@monitor html]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
(5)在瀏覽器輸入http://192.168.245.133/zabbix進行安裝,步驟如下截圖:
當然以上這些步驟完全可以手工創建zabbix.conf.php來代替。配置完成后使用默認的用戶admin,以及密碼zabbix即可登錄zabbix。
6、進行漢化zabbix
在界面上點擊Administration=》 Users =》 Admin =》Language =》Chinese(zh_CN),重新刷下瀏覽器即可。
到此為止,zabbix服務器端就完成了。下面我們進行配置安裝客戶端
7、Agent端的安裝與配置
上面我們已經安裝完成服務端,但是還沒有安裝客戶端,也就是我們真正想監控的server。對於客戶端安裝和服務端沒有區別,只是在編譯的時候只需要--enable-agent參數就行了。
(1)安裝agent軟件
[root@node1 zabbix-2.4.6]# groupadd zabbix [root@node1 zabbix-2.4.6]# useradd -r -g zabbix -s /sbin/nologin zabbix [root@node1 software]# tar zxvf zabbix-2.4.6.tar.gz [root@node1 software]# cd zabbix-2.4.6 [root@node1 zabbix-2.4.6]# ./configure --prefix=/usr/local/zabbix --enable-agent && make && make install [root@node1 zabbix-2.4.6]# cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
(2)配置zabbix agent
[root@node2 zabbix-2.4.6]# mkdir /usr/local/zabbix/logs -p [root@node1 zabbix-2.4.6]# chown -R zabbix.zabbix /usr/local/zabbix/ [root@node1 zabbix-2.4.6]# vim /usr/local/zabbix/etc/zabbix_agentd.conf LogFile=/usr/local/zabbix/logs/zabbix_agentd.log PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid EnableRemoteCommands=0 Server=192.168.245.133 #服務端ip ListenPort=10050 StartAgents=8 ServerActive=192.168.245.133 #服務端ip Timeout=30 Hostname=node1 #主機名可以自己給,后面可以根據這個主機名添加自動發現主機 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/ UnsafeUserParameters=1
(3)配置zabbix agent系統服務啟動腳本(一定要修改,否則啟動報錯not install)
[root@node1 zabbix-2.4.6]# vim /etc/init.d/zabbix_agentd ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"
(4)如果有設置防火牆,則開啟端口10050
#查看是否開啟防火牆 [root@node1 zabbix-2.4.6]# service iptables status iptables:未運行防火牆。 #如果開啟了則需要執行下面命令來添加10050端口 [root@node1 zabbix-2.4.6]# iptables -A INPUT -p tcp --dport 10050 -j ACCEPT [root@node1 zabbix-2.4.6]# /etc/init.d/iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
(5)啟動zabbix agent
[root@node1 zabbix-2.4.6]# /etc/init.d/zabbix_agentd start 正在啟動 Zabbix Agent: [確定] [root@node1 zabbix-2.4.6]# netstat -nltp | grep 10050 tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 42035/zabbix_agentd [root@node1 zabbix-2.4.6]# netstat -nltp | grep mysqld tcp 0 0 :::3306 :::* LISTEN 31803/mysqld
tcp 0 0 :::3307 :::* LISTEN 23078/mysql
(6)配置開機自啟動
[root@node2 sbin]# chkconfig --add zabbix_agentd [root@node2 sbin]# chkconfig --level 35 zabbix_agentd on
(7)測試zabbix agent是否正常工作(在zabbix server--192.168.245.133上做如下操作)
[root@monitor bin]# /usr/local/zabbix/bin/zabbix_get -s 192.168.245.129 -p 10050 -k agent.ping 1 [root@monitor bin]# /usr/local/zabbix/bin/zabbix_get -s 192.168.245.131 -p 10050 -k agent.ping 1
我們看到返回1表示正常工作了,返回0表示不正常。
zabbix_get用法:
[root@monitor bin]# ./zabbix_get --help Zabbix get v2.4.6 (revision 54796) (10 August 2015) usage: zabbix_get [-hV] -s <host name or IP> [-p <port>] [-I <IP address>] -k <key> Options: -s --host <host name or IP> Specify host name or IP address of a host -p --port <port number> Specify port number of agent running on the host. Default is 10050 -I --source-address <IP address> Specify source IP address -k --key <key of metric> Specify key of item to retrieve value for -h --help Display help information -V --version Display version number Example: zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"
到這里,我們就把整個mysql集群機器都部署了zabbix了,下一章我們就開始真正的mysql數據庫監控之旅吧。