1. 程式人生 > >zabbix源碼安裝流程及報錯解決方法

zabbix源碼安裝流程及報錯解決方法

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
  1. 報錯:checking for BZip2 in default path... not found configure: error: Please reinstall the BZip2 distribution

解決:# yum -y install bzip-devel
  1. 報錯: 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源碼安裝流程及報錯解決方法