我搞zabbix的那兩天(1)


摘要在生產環境上對服務器進行網絡參數(比如CPU、內存等)的監控是很必要的,比如當服務器網絡參數如內存不夠用、磁盤空間快要占滿時及時通知運維人員進行處理,保證服務器系統的安全。而zabbix就是這么一個非常流行且方案成熟的網監控解決方案,這篇文章主要分享我這兩天部署zabbix經驗【我搞zabbix的那兩天(2)將介紹zabbix使用及短信等告警實現】,部署過程中遇到很多問題,比如zabbix server安裝完畢,初始化web設置頁面一直進入不了,執行到配置數據庫連接信息時一直連接不了等問題,為方便說明我將按照部署順序來介紹,最后一部分將匯總本次部署遇到的問題。

我搞zabbix的那兩天(1)

我搞zabbix的那兩天(2) 

一、Zabbix簡介

1.  zabbix是一個基於WEB界面的,並提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。 zabbix能監視各種網絡參數(比如CPU 負荷,內存使用,網絡狀況,端口監視,日志監視等等指標!),保證服務器系統的安全運營;並提供柔軟的通知機制以讓運維人員能夠快速定位。

2.  zabbix通過C/S模型來收集數據,通過B/S模型模式在web端展示和進行配置。被監控端:主機設備通過安裝agent收集數據並發送給server端,網絡設備通過SNMP收集數據並發送給server端。server端:通過收集SNMP和agent發送來的數據,將數據寫入到后台數據庫中(例如:mysql,oracle),在通過web展示出來。

3.  運行環境

zabbix server 需要運行在LAMP或者是LNMP的環境下;本文介紹安裝 的是zabbix-3.2.0版本,其對應的LAMP版本要求如下:

應用名

版本號

下載地址

Zabbix

3.2.0

https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.0/

Linux(CentOS)

6.5

 

Apache

2.2.15

yum方式安裝,下面會介紹到

MySQL

5.5.29

源碼安裝

PHP

5.6.31(需5.4.X系列及以上)

yum方式升級安裝,下面會介紹到

 

二、Zabbix 的部署准備

2.1 LAMP環境准備與配置

這里的依賴包均通過yum安裝,因此需事先安裝和配置好yum,這里不做敘述。

yum -y install gcc gcc-c++ autoconf httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp-devel curl-devel

  

2.2升級PHP

php建議>=5.4,如果小於這個版本會出現以下報錯:

PHP Parse error:  syntax error, unexpected '[' in /var/www/html/zabbix/index.php on line 29我第一次安裝就是沒有升級PHP,查看apache日志一直報這個錯誤,所以這里要進行升級PHP。

2.2.1 卸載PHP5.3.3

php -V 

查看已經安裝的php的包:

yum list installed | grep php

  

可以看到如下原有的安裝包:

php-common.x86_64 0:5.3.3-38.el6   

php-gd.x86_64 0:5.3.3-38.el6        

php-ldap.x86_64 0:5.3.3-38.el6          

php-mysql.x86_64 0:5.3.3-38.el6    

php-odbc.x86_64 0:5.3.3-38.el6      

php-pdo.x86_64 0:5.3.3-38.el6           

php-pear.noarch 1:1.9.4-4.el6      

php-pecl-apc.x86_64 0:3.1.9-2.el6   

php-pecl-memcache.x86_64 0:3.0.5-4.el6  

php-pgsql.x86_64 0:5.3.3-38.el6    

php-soap.x86_64 0:5.3.3-38.el6      

php-xml.x86_64 0:5.3.3-38.el6           

php-xmlrpc.x86_64 0:5.3.3-38.el6

全都是5.3.3-38.el6版本的。

使用rpm -e --nodeps ph-xxx依次刪掉上面的5.3.3版本

2.2 安裝PHP5.6.x

現在我們就可以進行安裝5.6.x版本的PHP了。

rpm -Uvh http://download.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm;
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm;
yum install --enablerepo=remi,remi-php56 php php-opcache php-pecl-apcu 	php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-pdo php-pear php-fpm php-cli php-xml php-bcmath php-process php-gd php-common;

之后再來編輯php.ini

2.3 配置php.ini

編輯PHP相關的 /etc/php.ini 文件。(這里必須做應的修改,否則在之后的web初始化過程中會報錯。)  

vim /etc/php.ini

修改如下條目或者通過 sed 命令進行內容替換

date.timezone = Asia/Shanghai
max_execution_time = 300
post_max_size = 16M  #有時候這里會被設置32M
max_input_time=300
memory_limit = 128M
mbstring.func_overload = 2

或通過 sed 方式進行內容替換:

sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/g" /etc/php.ini
sed -i "s#max_execution_time = 30#max_execution_time = 300#g" /etc/php.ini
sed -i "s#post_max_size = 8M#post_max_size = 32M#g" /etc/php.ini
sed -i "s#max_input_time = 60#max_input_time = 300#g" /etc/php.ini
sed -i "s#memory_limit = 128M#memory_limit = 128M#g" /etc/php.ini
sed -i "/;mbstring.func_overload = 0/ambstring.func_overload = 2\n" /etc/php.ini

最后開啟httpd並設置開機自啟動

chkconfig httpd on
service httpd start

2.3 MySQL數據庫的准備

開啟mysql並設置開機自啟動:

#chkconfig mysqld on

#service mysqld start

添加mysql數據庫的 zabbix用戶,並設置密碼:

先用root身份登入mysql中,並執行以下命令

mysql>use mysql

mysql>insert into mysql.user(Host,User,Password) values("localhost","zabbix",password("zabbix"));

mysql>flush privileges;

2.4 為zabbix創建用戶

groupadd zabbix -g 506
useradd -g zabbix -u 506 -m zabbix  

PS:這里將zabbix用戶的UID與GID均設置為506。

三、Zabbix Server安裝

3.1 tar包下載

下載地址:

https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.0/

 

3.2編譯安裝

 

tar xvf zabbix-3.2.0.tar.gz
./configure --prefix=/usr/local/zabbix --enable-server --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl
make
make install

  

3.3 檢查zabbix是否添加到系統服務

#cat /etc/services | grep zabbix

如果看到如下信息則代表已經添加成功,或者可以自行手動添加到 /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 Trappe

 

3.4建立zabbix所需的數據庫

root身份等人到mysql數據庫中,並執行以下命令建立zabbix數據庫:

mysql>create database zabbix character set utf8;

mysql>grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';

mysql>flush privileges;

而后在下載的源文件中存在一個database/mysql 子目錄,中間存放在建 zabbix數據庫結構的SQL腳本文件。先進入到zabbix源文件所在的 目錄,並執行以下語句:

l mysql -u zabbix -p zabbix < ./database/mysql/schema.sql

l mysql -u zabbix -p zabbix < ./database/mysql/images.sql

l mysql -u zabbix -p zabbix < ./database/mysql/data.sql

PS:以上三條指令將目的執行sql腳本,構建zabbix數據庫的結構,每 次都要輸入mysql中zabbix賬戶的密碼

3.5 創建zabbix的的日志文件和連接

mkdir /var/log/zabbix
chown zabbix.zabbix /var/log/zabbix
ln -s /usr/local/zabbix/etc /etc/zabbix
ln -s /usr/local/zabbix/bin/* /usr/bin/
ln -s /usr/local/zabbix/sbin/* /usr/sbin/

3.6 拷貝與配置zabbix啟動文件

cp misc/init.d/fedora/core/zabbix_* /etc/init.d/
chmod 755 /etc/init.d/zabbix_*
sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#g" /etc/init.d/zabbix_server
sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#g" /etc/init.d/zabbix_agentd

3.7 配置zabbix_server.conf服務端文件

編輯並修改 /etc/zabbix/etc/zabbix_server.conf 文件,並修改如下條目:

DBHost=IP #當前服務器IP
DBName=zabbix #數據庫名稱
DBUser=zabbix #數據庫用戶
DBPassword=zabbix #數據庫密碼(先前設置了zabbix數據庫密碼為zabbix

或者用 sed 方式替換文件內容:

sed -i "s/DBUser\=root/DBUser\=zabbix/g"   /etc/zabbix/etc/zabbix_server.conf
sed -i "/# DBPassword=/aDBPassword=zabbix\n" /etc/zabbix/etc/zabbix_server.conf
sed-i "s#tmp/zabbix_server.log#var/log/zabbix/zabbix_server.log#g" /etc/zabbix/etc/zabbix_server.conf

  

3.8 配置 zabbix_agentd.conf 文件

(這里是為了監控 server 本身, 如對其他服務器進行監控,配置文件相類似)

PS:這里放的的是zabbix_agentd.conf是客戶端配置文件,這里是為了演示,因此這里配置這個文件的目的就是為了能夠實現對本地服務器的監控。該文件需要修改如下四個條目:

Server=127.0.0.1 #此處添加服務端的 ip,如服務器不為本機,則需要填寫遠端 zabbix_server 的 ip 地址
ServerActive=127.0.0.1 #此處修改為服務端的 ip,這里應該修改為該服務器對外的ip地址
/tmp/zabbix_agentd.log #修改日志路徑
UnsafeUserParameters=0 #默認是不啟用自定義腳本功能的,要自定義 key ,需開啟,設置為1
Include=/etc/zabbix/zabbix_agentd.conf.d/ #自定義的 agent d 配置文件可以寫在這個目錄下面

利用sed 方式內容替換的執行命令如下:

 

sed -i "s/Server\=127.0.0.1/Server\=127.0.0.1,192.168.1.89/g" /etc/zabbix/etc/zabbix_agent.conf 
sed -i "s/ServerActive\=127.0.0.1/ServerActive\=192.168.1.89:10051/g" /etc/zabbix/etc/zabbix_agent.conf 
sed -i "s#tmp/zabbix_agentd.log#var/log/zabbix/zabbix_agentd.log#g" /etc/zabbix/etc/zabbix_agentd.conf
sed -i "#UnsafeUserParameters=0#aUnsafeUserParameters=1\n" /etc/zabbix//etc/zabbix_agentd.conf

 

3.9 拷貝PHP網頁文件到Apache中

cp -r ./frontends/php/ /var/www/html/zabbix
chown -R apache.apache /var/www/html/zabbix

3.10 開啟zabbix

/etc/init.d/zabbix_server start
/etc/init.d/zabbix_agent start 

至此,zabbix的安裝完成。

 

四、進入Web頁面設置zabbix

 

瀏覽器中輸入地址:http://ip/zabbix,則可看到如下初始化歡迎界面。

 

PS:其中ip代表本地服務器對外開放的ip地址

點擊next

PS: PHP字符串函數重載必須禁用

編輯/etc/php.ini修改mbstring.func_overload= 1再點擊Next step”操作即可。

接下來是進行數據庫的連接配置,依次填入數據庫的連接信息之后,點擊Next step”按鈕,

一直報Cannot connect to the Database...Error connecting to database:Permission defined

剛開始判斷是防火牆未開啟端口或者是數據庫沒有給zabbix用戶授予遠程連接的權限導致,於是檢查了防火牆並沒有開啟,排除防火牆原因,繼續授予了zabbix遠程連接權限,如下:

然后還是連接不了,又根據錯誤提示權限不夠,推斷可能是zabbix配置文件沒有權限,於是授予配置文件權限:chown -R zabbix:zabbix /etc/zabbix/*,發現依然連接不了。

后面想了一下,可能是selinux訪問控制策略導致,於是使用setenforce 0命令暫時關閉SELinux

再點擊Next step”,發現是可以了到下一步了

這是安裝完后匯總的信息

 

 

看到這張圖,說明已經安裝成功了點擊Finish按鈕后進入zabbix的管理操作登陸界面

點擊Finish按鈕后進入zabbix的管理操作登陸界面

填寫完賬號和密碼后登陸zabbix的管理操作界面,如下:

至此,zabbix server 基本安裝結束。

五、問題匯總

 

5.1 安裝好zabbix server后發現頁面訪問出現問題。

 

查看more /var/log/httpd/error_log錯誤日志發現

 

PHP Parse error:  syntax error, unexpected '[' in /var/www/html/zabbix/index.php on line 29

 

這是由於PHP版本<5.4,升級PHP即可,查看本文“2.2 升級PHP

 

5.2 web頁面配置數據庫連接不上

 

如圖:

確保服務器防火牆開放了數據庫端口;

確保數據庫開放了zabbix用戶遠程連接用戶的權限,使用如下命令:

mysql>grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';

mysql>show grants for zabbix;

如果前兩項都沒問題,確保SELinux是否關閉。使用setenforce 0命令

5.3部署好后,出現數據庫連接問題:XXXX/mysql.sock找不到

檢查連接數據IP是否正確,比如localhost為連接訪問頁面所在的主機的數據庫,及當前操作的Windows電腦。

 

IP一般填服務器的內網IP即可。

 

檢查zabbix_agentd.conf文件中Server=IP,此處IP為服務端的IP地址,內網外網全部寫上都好分隔。

 

檢查zabbix_server.conf文件中DB相關設置,包括IP,端口,sock地址等信息是否與當前數據庫安裝信息一致。

 

學習本就是一個不斷模仿、練習、再到最后面自己原創的過程。

雖然可能從來不能寫出超越網上通類型同主題博文,但為什么還是要寫?
於自己而言,博文主要是自己總結。假設自己有觀眾,畢竟講是最好的學(見下圖)。

於讀者而言,筆者能在這個過程get到知識點,那就是雙贏了。
當然由於筆者能力有限,或許文中存在描述不正確,歡迎指正、補充!
感謝您的閱讀。如果本文對您有用,那么請點贊鼓勵。

  

 

 

 

 

  

 

  

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM