摘要:在生產環境上對服務器進行網絡參數(好比CPU、內存等)的監控是很必要的,好比當服務器網絡參數如內存不夠用、磁盤空間快要佔滿時及時通知運維人員進行處理,保證服務器系統的安全。而zabbix就是這麼一個很是流行且方案成熟的網監控解決方案,這篇文章主要分享我這兩天部署zabbix經驗【我搞zabbix的那兩天(2)將介紹zabbix使用及短信等告警實現】,部署過程當中遇到不少問題,好比zabbix server安裝完畢,初始化web設置頁面一直進入不了,執行到配置數據庫鏈接信息時一直鏈接不了等問題,爲方便說明我將按照部署順序來介紹,最後一部分將彙總本次部署遇到的問題。php
我搞zabbix的那兩天(1)html
我搞zabbix的那兩天(2) node
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方式升級安裝,下面會介紹到 |
這裏的依賴包均經過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
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
開啓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;
groupadd zabbix -g 506 useradd -g zabbix -u 506 -m zabbix
PS:這裏將zabbix用戶的UID與GID均設置爲506。
下載地址:
https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.0/
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
#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
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帳戶的密碼
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/
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
編輯並修改 /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
(這裏是爲了監控 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
cp -r ./frontends/php/ /var/www/html/zabbix chown -R apache.apache /var/www/html/zabbix
/etc/init.d/zabbix_server start /etc/init.d/zabbix_agent start
至此,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 基本安裝結束。
查看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」
如圖:
確保服務器防火牆開放了數據庫端口;
確保數據庫開放了zabbix用戶遠程鏈接用戶的權限,使用以下命令:
mysql>grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
mysql>show grants for zabbix;
若是前兩項都沒問題,確保SELinux是否關閉。使用setenforce 0命令
檢查鏈接數據IP是否正確,好比localhost爲鏈接訪問頁面所在的主機的數據庫,及當前操做的Windows電腦。
IP通常填服務器的內網IP便可。
檢查zabbix_agentd.conf文件中Server=IP,此處IP爲服務端的IP地址,內網外網所有寫上都好分隔。
檢查zabbix_server.conf文件中DB相關設置,包括IP,端口,sock地址等信息是否與當前數據庫安裝信息一致。
學習本就是一個不斷模仿、練習、再到最後面本身原創的過程。
雖然可能歷來不能寫出超越網上通類型同主題博文,但爲何仍是要寫?
於本身而言,博文主要是本身總結。假設本身有觀衆,畢竟講是最好的學(見下圖)。於讀者而言,筆者能在這個過程get到知識點,那就是共贏了。
固然因爲筆者能力有限,或許文中存在描述不正確,歡迎指正、補充!
感謝您的閱讀。若是本文對您有用,那麼請點贊鼓勵。