博文大綱:
1、zabbix運行架構
2、Zabbix監控術語
3、部署Zabbix監控平臺php
Zabbix是一個企業級的分佈式開源監控解決方案。它可以監控各類服務器的健康性、網絡的穩定性以及各類應用系統的可靠性。當監控出現異常時,Zabbix經過靈活的告警策略,能夠爲任何事件配置基於郵件、短信、微信等告警機制。而這全部的一切,均可以經過Zabbix提供的web界面進行配置和操做,基於web的前端頁面還提供了出色的報告和數據可視化功能。這些功能和特性使咱們運維人員能夠很是輕鬆的搭建一套功能強大的運維監控管理平臺。html
Zabbix的運行架構以下:前端
從上面的運行架構圖能夠看到,Zabbix主要有幾個組件構成,分別以下:java
Zabbix Server是Zabbix的核心組件,是全部配置信息、統計信息和操做數據的核心存儲器。它主要負責接收客戶端發送的報告和信息,同時,全部配置、統計數據及配置操做數據均由其組織進行。mysql
主要用於存儲數據,全部配置信息和Zabbix收集到的數據都被存儲在數據庫中。可使用MySQL、oracle、SQLite等。nginx
這是Zabbix提供的GUI接口,一般(但不必定)與Zabbix Server運行在同一臺物理機器上。web
這是一個可選組件,經常使用於分佈式監控環境中,代理Server能夠替Zabbix收集新能和可用性數據,彙總後統一發往Zabbix Server端。sql
Zabbix Agent部署在被監控的主機上,可以主動監控本地資源和應用程序,並負責收集數據發往Zabbix Server端或Zabbix Proxy端。數據庫
在Zabbix監控系統中,有一些經常使用的術語,下面是簡單的介紹。vim
表示要監控的一臺服務器或者網絡設備,能夠經過IP或主機名指定。
主機的邏輯組:它包含主機和模板,但同一個主機組內的主機和模板沒有任何直接的關聯;主機組一般在給用戶或用戶組指派監控權限時使用。
表示一個監控的具體對象,例如監控服務器的CPU負載、磁盤空間等,item是Zabbix進行數據收集的核心,相對某個監控對象,每一個item都由「key」來標識。
其實就是一個監控閾值表達式,用於評估某監控對象接收到的數據是否在合理範圍內;若是接收的數據大於閾值時,觸發器的狀態將從「OK」轉變爲「Problem」,當接收到的數據低於閾值時,又轉變爲「OK」狀態。
一組監控項組成的邏輯集合。
指對於監控中出現的問題事先定義的處理方法,例如發送通知、什麼時候執行操做、執行的頻率等等。
表示發送通知的手段,告警通知的途徑,如Email、Jabber或SMS等。
一組能夠被應用到一個或多個主機上的實現集合,一個模板一般包含了應用集、監控項、觸發器、圖形、聚合圖形、自動發現規則、web場景等幾個項目;模板能夠直接連接到某個主機。
模板是學習zabbix的一個難點和重點,爲了實現批量、自動化監控,一般會將具備相同特徵的監控項彙總到模板中,而後在主機中直接引用便可,實現快速監控部署。
Zabbix的監控平臺部署比較簡單,前提是準備好LNMP或LAMP環境。
我這裏將從部署LNMP環境開始配置。
注:我這裏將全部服務部署在同一臺服務器上,僅僅是一個簡單的監控架構,並無部署 zabbix proxy等。
Zabbix官方的相關連接:
在進行下面的部署操做以前,請先下載我提供的各類源碼包,並上傳至Zabbix服務器。
#解包 [root@zabbix ~]# tar zxf pcre-8.39.tar.gz -C /usr/src [root@zabbix ~]# tar zxf nginx-1.14.0.tar.gz -C /usr/src [root@zabbix ~]# tar zxf zlib-1.2.8.tar.gz -C /usr/src #安裝依賴及nginx [root@zabbix ~]# yum -y install openssl-devel pcre-devel [root@zabbix ~]# cd /usr/src/nginx-1.14.0/ [root@zabbix nginx-1.14.0]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/src/pcre-8.39 --with-zlib=/usr/src/zlib-1.2.8 --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www && make && make install #建立運行用戶及命令優化 [root@zabbix nginx-1.14.0]# useradd -M -s /sbin/nologin www [root@zabbix nginx-1.14.0]# cd [root@zabbix ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ [root@zabbix ~]# vim /usr/local/nginx/conf/nginx.conf #編輯nginx配置文件 server { listen 80; location / { root html; index index.php index.html index.htm; #添加index.php } #注意刪除下面段落的註釋符號 location ~ \.php$ { root html; fastcgi_pass 192.168.20.2:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi.conf; #修改此行 } [root@zabbix ~]# nginx #啓動nginx #編寫php首頁文件 [root@zabbix ~]# cat > /usr/local/nginx/html/index.php << EOF > <?php > phpinfo(); > ?> > EOF
#安裝依賴 [root@zabbix ~]# yum -y install libxml2-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel #解包 [root@zabbix ~]# tar zxf php-5.6.27.tar.gz -C /usr/src/ [root@zabbix ~]# tar zxf libmcrypt-2.5.7.tar.gz -C /usr/src #編譯安裝libmcrypt [root@zabbix ~]# cd /usr/src/libmcrypt-2.5.7 [root@zabbix libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install #編譯安裝PHP [root@zabbix libmcrypt-2.5.7]# cd ../php-5.6.27/ [root@zabbix php-5.6.27]# ./configure --prefix=/usr/local/php5.6 --with-config-file-path=/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-gd --with-iconv --with-libxml-dir=/usr --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-zlib --with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl && make && make install #優化PHP配置文件 [root@zabbix php-5.6.27]# cp php.ini-production /etc/php.ini [root@zabbix php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm [root@zabbix php-5.6.27]# chmod +x /etc/init.d/php-fpm [root@zabbix php-5.6.27]# chkconfig --add php-fpm [root@zabbix php-5.6.27]# chkconfig php-fpm on [root@zabbix php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf [root@zabbix php-5.6.27]# cd #優化其配置文件並啓動 [root@zabbix ~]# sed -i 's/pm.max_children = 5/pm.max_children = 50/g' /usr/local/php5.6/etc/php-fpm.conf [root@zabbix ~]# sed -i 's/pm.start_servers = 2/pm.start_servers = 5/g' /usr/local/php5.6/etc/php-fpm.conf [root@zabbix ~]# sed -i 's/pm.min_spare_servers = 1/pm.min_spare_servers = 5/g' /usr/local/php5.6/etc/php-fpm.conf [root@zabbix ~]# sed -i 's/pm.max_spare_servers = 3/pm.max_spare_servers = 35/g' /usr/local/php5.6/etc/php-fpm.conf [root@zabbix ~]# systemctl start php-fpm [root@zabbix ~]# netstat -anpt | grep 9000
客戶端訪問定義的php頁面,以下:
#解包 [root@zabbix ~]# tar zxf fping-3.12.tar.gz -C /usr/src [root@zabbix ~]# tar zxf zabbix-3.2.1.tar.gz -C /usr/src #安裝fping命令 [root@zabbix ~]# cd /usr/src/fping-3.12/ [root@zabbix fping-3.12]# ./configure && make && make install [root@zabbix fping-3.12]# cd ../zabbix-3.2.1/ [root@zabbix zabbix-3.2.1]# useradd -M -s /sbin/nologin zabbix [root@zabbix zabbix-3.2.1]# chown zabbix:zabbix /usr/local/sbin/fping [root@zabbix zabbix-3.2.1]# yum -y install net-snmp net-snmp-devel curl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel OpenIPMI-devel libssh2-devel [root@zabbix zabbix-3.2.1]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-openipmi && make && make install #--enable-java:方便後續監控 tomcat 程序所用 #--with-openipmi:用戶能夠利用 IPMI 監視服務器的物理特徵,如溫度、電壓、風扇工做狀態、電源供應等。 [root@zabbix ~]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/ [root@zabbix ~]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
若是須要自定義安裝MySQL數據庫,能夠參考博文:基於centos7搭建MySQL數據庫
我這裏爲了方便,採用腳本的方式快速安裝一個MySQL數據庫,如若須要,能夠下載使用(注:該腳本安裝後的MySQL的root密碼爲「123」)。
#上傳我提供的包後,執行如下命令 [root@zabbix ~]# sh mysql.sh #等待些許時間後,出現如下提示,則表示數據庫部署成功 Starting MySQL. SUCCESS! mysql: [Warning] Using a password on the command line interface can be insecure. #建立zabbix庫及用戶 [root@zabbix ~]# mysql -uroot -p123 #登陸MySQL mysql> create database zabbix character set utf8; mysql> grant all on zabbix.* to zabbix@'localhost' identified by '123.com'; mysql> grant all on zabbix.* to zabbix@'192.168.20.%' identified by '123.com'; mysql> exit #導入zabbix數據到MySQL,注意導入的順序,若是導入後返回提示信息,可忽略,是由於導入的命令將密碼展現在了終端 [root@zabbix ~]# cd /usr/src/zabbix-3.2.1/database/mysql/ [root@zabbix mysql]# mysql -u zabbix -p123.com -h localhost zabbix < schema.sql [root@zabbix mysql]# mysql -u zabbix -p123.com -h localhost zabbix < images.sql [root@zabbix mysql]# mysql -u zabbix -p123.com -h localhost zabbix < data.sql [root@zabbix ~]# chown -R zabbix:zabbix /usr/local/zabbix/
#修改zabbix配置文件 [root@zabbix mysql]# sed -i 's/# ListenPort=10051/ListenPort=10051/g' /usr/local/zabbix/etc/zabbix_server.conf [root@zabbix mysql]# sed -i 's/LogFile=\/tmp\/zabbix_server.log/LogFile=\/usr\/local\/zabbix\/logs\/zabbix_server.log/g' /usr/local/zabbix/etc/zabbix_server.conf [root@zabbix mysql]# sed -i 's/# PidFile=\/tmp\/zabbix_server.pid/PidFile=\/usr\/local\/zabbix\/logs\/zabbix_server.pid/g' /usr/local/zabbix/etc/zabbix_server.conf [root@zabbix mysql]# sed -i 's/# DBHost=localhost/DBHost=localhost/g' /usr/local/zabbix/etc/zabbix_server.conf [root@zabbix mysql]# sed -i 's/# DBPassword=/DBPassword=123.com/g' /usr/local/zabbix/etc/zabbix_server.conf [root@zabbix mysql]# sed -i 's/# DBSocket=\/tmp\/mysql.sock/DBSocket=\/usr\/local\/mysql\/mysql.sock/g' /usr/local/zabbix/etc/zabbix_server.conf [root@zabbix mysql]# sed -i 's/# DBPort=3306/DBPort=3306/g' /usr/local/zabbix/etc/zabbix_server.conf [root@zabbix mysql]# sed -i 's/# FpingLocation=\/usr\/sbin\/fping/FpingLocation=\/usr\/local\/sbin\/fping/g' /usr/local/zabbix/etc/zabbix_server.conf [root@zabbix mysql]# sed -i 's/# LogSlowQueries=0/LogSlowQueries=3000/g' /usr/local/zabbix/etc/zabbix_server.conf #若是數據庫名稱和數據庫用戶沒有和我建立的同樣,那麼還須要更改如下兩項 #DBName=zabbix #數據庫名稱 #DBUser=zabbix #登陸數據庫的用戶名 [root@zabbix mysql]# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf [root@zabbix mysql]# ldconfig #刷新上面的更改 [root@zabbix ~]# mkdir /usr/local/zabbix/logs [root@zabbix zabbix]# chown -R zabbix:zabbix /usr/local/zabbix [root@zabbix ~]# cd /usr/src/zabbix-3.2.1/misc/init.d/fedora/core [root@zabbix core]# cp zabbix_agentd /etc/init.d/ [root@zabbix core]# cp zabbix_server /etc/init.d/ [root@zabbix core]# sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_server [root@zabbix core]# sed -i 's/PIDFILE=\/tmp\/$BINARY_NAME.pid/PIDFILE=\/usr\/local\/zabbix\/logs\/$BINARY_NAME.pid/g' /etc/init.d/zabbix_server [root@zabbix logs]# /etc/init.d/zabbix_server start #啓動zabbix,也能夠執行「zabbix-server」來啓動 #若是腳本啓動沒有報錯,但端口也沒在監聽,能夠先使用腳本stop一下,再start [root@zabbix logs]# netstat -anpt | grep 10051 tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 89911/zabbix_server #準備zabbix的網頁文件 [root@zabbix ~]# cd /usr/src/zabbix-3.2.1/frontends/ [root@zabbix frontends]# cp -r php/ /usr/local/nginx/html/zabbix
訪問Nignx服務器的IP/zabbix便可,它會自動跳轉到下面的頁面:
哦吼,好像有些報錯信息,以下:
上述的報錯信息大概是php的配置項不符合其要求,那麼就改一下php的配置文件咯!以下:
#更改php配置文件 [root@zabbix ~]# sed -i 's/post_max_size = 8M/post_max_size =16M/g' /etc/php.ini [root@zabbix ~]# sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /etc/php.ini [root@zabbix ~]# sed -i 's/max_input_time = 60/max_input_time = 300/g' /etc/php.ini [root@zabbix ~]# sed -i 's/;date.timezone =/date.timezone = Asia\/Shanghai/g' /etc/php.ini [root@zabbix ~]# sed -i 's/;always_populate_raw_post_data = -1/always_populate_raw_post_data = -1/g' /etc/php.ini [root@zabbix ~]# systemctl restart php-fpm #重啓php服務
刷新瀏覽器頁面,以下(所有爲「OK」):
輸入相應的信息,數據庫監聽IP及端口等信息:
這裏保持默認,單擊下一步:
確認無誤後,單擊下一步:
哦吼,又報錯,提示沒法建立配置文件,讓咱們手動下載配置文件並上傳到指定的目錄,那就點擊下載咯。
#自行將下載的配置文件上傳到這個目錄下 [root@zabbix ~]# ls /usr/local/nginx/html/zabbix/conf/zabbix.conf.php /usr/local/nginx/html/zabbix/conf/zabbix.conf.php
而後刷新頁面以下,單擊「finish」完成:
輸入zabbix用戶名及密碼進行登陸(默認用戶名:admin,密碼:zabbix):
更改默認語言爲中文:
[root@zabbix ~]# cd /usr/local/nginx/html/zabbix/fonts/ #切換至該目錄 [root@zabbix fonts]# rz #上傳我提供的simkai.ttf文件,也能夠從咱們的windows字體中找該文件 [root@zabbix fonts]# ls #確認「simkai.ttf」在該目錄下 DejaVuSans.ttf simkai.ttf #修改如下文件 [root@zabbix fonts]# sed -i 's/DejaVuSans/simkai/g' /usr/local/nginx/html/zabbix/include/defines.inc.php
通過上述配置,在之後製做圖表時,就不會出現中文亂碼的狀況了。
———————— 本文至此結束,感謝閱讀 ————————