我搞zabbix的那兩天(1)

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

我搞zabbix的那兩天(1)html

我搞zabbix的那兩天(2) node

1、Zabbix簡介

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

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

3.  運行環境linux

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

應用名web

版本號sql

下載地址數據庫

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方式升級安裝,下面會介紹到

 

2、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。

3、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的安裝完成。

 

4、進入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、問題彙總

 

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到知識點,那就是共贏了。
固然因爲筆者能力有限,或許文中存在描述不正確,歡迎指正、補充!
感謝您的閱讀。若是本文對您有用,那麼請點贊鼓勵。

相關文章
相關標籤/搜索