zabbix源碼安裝流程及報錯解決方法
zabbix源碼安裝流程及報錯解決方法
一. zabbix的介紹
1) zabbix是什麽
zabbix是一款基於web頁面的、開源的、企業級的,支持分布式部署的監控軟件。
2)2.zabbix的作用
監控windows和Linux主機上的軟硬件狀態。
監控各網絡設備,如路由器、交換機、防火墻、f5、打印機等。
支持郵件短信微信等平臺發送告警通知。
通過web頁面及圖形展示監控數據。
3)zabbix的特性
由zabbix server和agent程序協同工作,還支持分布式監控,這時需要安裝zabbix proxy程序
zabbix分為主動監控(agent active)和被動監控:
Zabbix主動模式:Agent主動請求server獲取主動的監控項列表,並主動將監控項內需要檢測的數據提交給server/proxy,zabbix agent首先向ServerActive配置的IP請求獲取active items,獲取並提交active tiems數據值server或者proxy;
Zabbix被動模式:Server向agent請求獲取監控項的數據,agent返回數據,Server打開一個TCP連接,Server發送請求agent.ping,Agent接收到請求並且響應,Server處理接收到的數據。
監控手段(server或proxy通過什麽方式來收集監控到的數據)常用的有:
SNMP(polling,trapping)
IPMI(監控硬件狀況)
JMX(監控java應用)
自定義監測(自定義各類監控腳本監測)
靈活的閾值設定:支持自定義問題閾值,即觸發器(trigger),儲存於數據庫中。
高級的報警設置:自定義報警升級、接受者以及報警的方式,在配置中允許使用宏變量,可以通過遠程命令來實現自動化動作。
實時圖像:課通過內置的繪圖方式實現監控數據繪圖,並可以自定義視圖等。
模板:支持模板中添加組監控,並允許繼承使用。
網絡自動發現及自動註冊:自動發現主機、網卡設備、SNMP等
zabbix API:提供程序級別的訪問接口,第三方程序可以很快接入
4)zabbix系統的組成
zabbix_server : 服務端守護進程, 負責處理zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy提供的數據,並通過web界面呈現這些數據。
zabbix_agentd :客戶端守護進程,負責收集客戶端上的數據並發送給server或proxy。
zabbix_get : 服務端工具,在服務器上執行,用於手動收集客戶端的監控數據,可以用於監控測試或者排錯。
zabbix_sender: 客戶端工具,用於發送數據給server或者proxy,通常用於耗時比較長的檢查。很多檢查非常耗時間,導致zabbix超時。於是我們在腳本執行完畢之後,使用sender主動提交數據;
zabbix_proxy : 類似於server,但它只是一個中轉站,當跨地區,跨機房部署zabbix系統時,需要用到它,以將它收集到的數據發送給server。
5)zabbix的監控流程:
Zabbix監控完整流程包括:Agentd安裝在被監控的主機上,Agent負責定期收集客戶端本地各項數據,並發送到Zabbix Server端,Zabbix Server收到數據,將數據存儲到數據庫中,用戶基於Zabbix WEB可以看到數據在前端展現圖像。
二. zabbix安裝前準備zabbix3.2
1)zabbix安裝不同硬件配置環境樣例:
2)zabbix安裝需要的數據庫版本:
3)zabix安裝需要的前端軟件版本:
4)zabbix安裝需要的php擴展:
下面是我源碼安裝php的流程及編譯參數:
# wget # tar -zxf mirror # cd php-5.6.31/ # ./configure --prefix=/usr/local/php5.6 --with-config-file-path=/usr/local/php5.6/etc --with-bz2 --with-curl --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local/ --with-png-dir=/usr/local/ --with-freetype-dir=/usr/local/ --enable-gd-native-ttf --with-iconv-dir=/usr/local/ --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local/ --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath \ --with-mysql=/usr/local/mysql/ --with-apxs2=/usr/local/apache2/bin/apxs
報錯:checking for BZip2 in default path... not found configure: error: Please reinstall the BZip2 distribution
解決:# yum -y install bzip-devel
報錯: configure: error: Cannot find libmysqlclient_r under /usr/local/mysql/. Note that the MySQL client library is not bundled anymore!
其實這跟PHP沒有關系,那是因為在編譯APACHE的時候,使用--with-mpm模塊 所以就必須在編譯MYSQL的時候加上--enable-thread-safe-client.參數就行 下面是一些比較簡便的辦法:
網上主流的辦法:1. # cd /usr/local/mysql/lib/mysql/ # ln -s libmysqlclient.so.15.0.0 libmysqlclient_r.so #可是我並在/lib下並沒有mysql這個庫。所有此種方法沒有成功#最後用下面這種辦法解決: 2.# ln -s /usr/local/mysql/lib /usr/local/mysql/lib64
整合PHP和Apache:
# cp php.ini-development /usr/local/php5.6/etc/php.ini # 在apachede的主配置文件中添加下面兩條指令: AddType application/x-httpd-php .php //設置PHP文件類型 LoadModule php5_module modules/libphp5.so //加載PHP模塊 #指明index.php文件: <IfModule dir_module> DirectoryIndex index.php index.html </IfModule>
測試PHP是否加載成功:(通過瀏覽器訪問IP)
#echo "<?php phpinfo(); ?>" /usr/local/apache2/htdocs/index.php
三.安裝zabbix
1)安裝環境:
centos7 httpd2.4.27 php5.6.31 mysql5.5.20
2)安裝zabbix_server:
下載安裝zabbix:
# wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz/download # groupadd zabbix# useradd -g zabbix zabbix # tar zxf zabbix-3.2.6.tar.gz # cd zabbix-3.2.6 #./configure --prefix=/usr/local/zabbix/ --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl# make&&make install# ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/
創建zabbix數據庫並授權:
# /etc/init.d/mysqld restart # mysql -uroot -p mysql> CREATE DATABASE zabbix charset=utf8; mysql> GRANT ALL ON zabbix.* to [email protected] IDENTIFIED BY ‘jiajie‘;mysql> FLUSH PRIVILEGES; mysql> EXIT#cd zabbix-3.2.6
將Zabbix基礎SQL文件導入mysql數據至Zabbix數據庫,註意server端應該導入下面三個數據庫文件
# cd zabbix-3.2.6 # mysql -uzabbix -pjiajie zabbix<database/mysql/schema.sql # mysql -uzabbix -pjiajie zabbix<database/mysql/images.sql # mysql -uzabbix -pjiajie zabbix<database/mysql/data.sql
備份zabbix_server配置文件,並打開配置文件修改為上面設置的數據庫密碼DBPassword=jiajie
# cd /usr/local/zabbix/etc/ # cp zabbix_server.conf{,.bak}# vim zabbix_server.conf DBPassword=jiajie //數據庫授權的密碼
同時復制zabbix_server啟動腳本至/etc/init.d/下
# cd ../zabbix-3.2.6 # cp misc/init.d/tru64/zabbix_server /etc/init.d/zabbix_server # chmod o+x /etc/init.d/zabbix_server
接下來配置web端,並重啟zabbix以及mysql服務 並查看相關端口是否起來。zabbix_server的端口是10051,agent的端口是10050
# cp -a zabbix-3.2.6/frontends/php/* /usr/local/apache2/htdocs/ # /etc/init.d/mysqld restart # /etc/init.d/zabbix_server restart
然後修改PHP的配置文件,使其支持zabbix。這個上面就有說明。之後重啟httpd服務即可。
# vim /usr/local/php5.6/etc/php.ini date.timezone = PRC post_max_size =16M max_execution_time=300 max_input_time=300 always_populate_raw_post_data = -1 # /etc/init.d/httpd restart
開始安裝zabbix_web頁面,瀏覽器訪問httpd服務的IP地址即可。根據提示安裝即可。
錯誤:修改了php.ini參數依然報錯,顯然是那些參數沒有生效。這時候查看php.ini的路徑是否正確。
如果php.ini的路徑是正確。查看了php.ini的路徑是正確的,但是還是沒有生效。
這時候你可以在apache的配置文件中指明php.ini的路徑。加上PHPIniDir "/usr/local/php5.6/etc/" 這條指令即可。
重啟apache,獲取到路徑。完美解決。
配置數據庫連接,輸入數據庫名、用戶、密碼,單擊Test connection,顯示OK,單擊下一步即可。
填寫Zabbix Title顯示,可以為空,可以輸入自定義的名稱:
單擊下一步,出現需修創建zabbix.conf.php文件,執行如下命令,或者單擊“Download the configuration file”下載zabbix.conf.php文件,將該文件上傳到/usr/local/apache2/htdocs/conf,並設置可寫權限,刷新WEB頁面,最後單擊Finish即可:
登錄Zabbix WEB界面,默認用戶名和密碼為:admin/zabbix
zabbix安裝完成後,但是顯示服務沒有起來一直顯示 zabbix server is not running ,這時候查看端口和進程,沒有任何顯示。
排錯首先查看日誌和端口:
# ss -tnl|grep 10051 # ps -ef|grep zabbix
# tail -f /tmp/zabbix_server.log 54587:20170821:151740.795 [Z3001] connection todatabase ‘zabbix‘ failed: [2002] Can‘t connect to local MySQL server throughsocket ‘/var/lib/mysql/mysql.sock‘ (13) 54587:20170821:151740.795 database is down:reconnecting in 10 seconds 解決辦法:一看就是找不到mysql.sock的路徑,找到mysql.sock的路徑並打開zabbix_server的配置文 件指明DBSocket的路徑。重啟服務即可 # find / -name mysql.sock /tmp/mysql.sock # vim/usr/local/zabbix/etc/zabbix_server.conf DBSocket=/tmp/mysql.sock
3)安裝zabbix_agent端:安裝客戶端和服務端的差不多,這裏就直接給出腳本吧:
#!/bin/bash#auto install zabbix agent #by jiajie 20170822############# ZABBIX_SOFT="zabbix-3.2.6" INSTALL_DIR="/usr/local/zabbix" URL=http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz/download IP=`ifconfig ens33|sed -n ‘2p‘|awk ‘{print $2}‘` read -p "Please input zabbix_server IP:" SERVER_IP ###jump IP is rightful if [[ $SERVER_IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]];then continue else echo -e "\033[31mIP format error!\033[0m" exit 0 fi AGENT_INSTALL(){ if [ -d $INSTALL_DIR ];then echo "zabbix_agent is already install..." exit 1 else if [ ! -d /software ];then mkdir /software fi fi cd /software yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI groupadd zabbix ;useradd -g zabbix zabbix wget $URL tar -xf download cd $ZABBIX_SOFT ./configure --prefix=/usr/local/zabbix --enable-agent if [ $? -eq 0 ];then make install else echo "./configure is error,please check..." exit 2 fi ln -s $INSTALL_DIR/sbin/zabbix_* /usr/local/sbin/ cp misc/init.d/tru64/zabbix_agentd /etc/init.d/zabbix_agentd && chmod o+x /etc/init.d/zabbix_agentd #config zabbix agentdcat >$INSTALL_DIR/etc/zabbix_agentd.conf<<EOF LogFile=/tmp/zabbix_agentd.log Server=$SERVER_IP ServerActive=$SERVER_IP Hostname = $IP EOF #start zabbix agentd iptables -F setenforce 0 /etc/init.d/zabbix_agentd restart } AGENT_INSTALL
本文出自 “dianel簡單不簡單” 博客,請務必保留此出處http://dianel.blog.51cto.com/12170393/1958456
zabbix源碼安裝流程及報錯解決方法