您好,登錄后才能下訂單哦!
一、zabbix運行架構
Zabbix是一個企業級的分布式開源監控解決方案。它能夠監控各種服務器的健康性、網絡的穩定性以及各種應用系統的可靠性。當監控出現異常時,Zabbix通過靈活的告警策略,可以為任何事件配置基于郵件、短信、微信等告警機制。而這所有的一切,都可以通過Zabbix提供的web界面進行配置和操作,基于web的前端頁面還提供了出色的報告和數據可視化功能。這些功能和特性使我們運維人員可以非常輕松的搭建一套功能強大的運維監控管理平臺。
Zabbix的運行架構如下:
從上面的運行架構圖可以看到,Zabbix主要有幾個組件構成,分別如下:
1、Zabbix Server
Zabbix Server是Zabbix的核心組件,是所有配置信息、統計信息和操作數據的核心存儲器。它主要負責接收客戶端發送的報告和信息,同時,所有配置、統計數據及配置操作數據均由其組織進行。
2、Zabbix Database Storage
主要用于存儲數據,所有配置信息和Zabbix收集到的數據都被存儲在數據庫中。可以使用MySQL、oracle、SQLite等。
3、Zabbix Web界面
這是Zabbix提供的GUI接口,通常(但不一定)與Zabbix Server運行在同一臺物理機器上。
4、Zabbix Proxy 代理服務器
這是一個可選組件,常用于分布式監控環境中,代理Server可以替Zabbix收集新能和可用性數據,匯總后統一發往Zabbix Server端。
5、Zabbix Agent 監控代理
Zabbix Agent部署在被監控的主機上,能夠主動監控本地資源和應用程序,并負責收集數據發往Zabbix Server端或Zabbix Proxy端。
二、Zabbix監控術語
在Zabbix監控系統中,有一些常用的術語,下面是簡單的介紹。
1、主機(host)
表示要監控的一臺服務器或者網絡設備,可以通過IP或主機名指定。
2、主機組(host group)
主機的邏輯組:它包含主機和模板,但同一個主機組內的主機和模板沒有任何直接的關聯;主機組通常在給用戶或用戶組指派監控權限時使用。
3、監控項(item)
表示一個監控的具體對象,例如監控服務器的CPU負載、磁盤空間等,item是Zabbix進行數據收集的核心,相對某個監控對象,每個item都由“key”來標識。
4、觸發器(trigger)
其實就是一個監控閾值表達式,用于評估某監控對象接收到的數據是否在合理范圍內;如果接收的數據大于閾值時,觸發器的狀態將從“OK”轉變為“Problem”,當接收到的數據低于閾值時,又轉變為“OK”狀態。
5、應用集(Applications)
一組監控項組成的邏輯集合。
6、動作(action)
指對于監控中出現的問題事先定義的處理方法,例如發送通知、何時執行操作、執行的頻率等等。
7、報警媒介類型(media)
表示發送通知的手段,告警通知的途徑,如Email、Jabber或SMS等。
8、模板(template)
一組可以被應用到一個或多個主機上的實現集合,一個模板通常包含了應用集、監控項、觸發器、圖形、聚合圖形、自動發現規則、web場景等幾個項目;模板可以直接鏈接到某個主機。
模板是學習zabbix的一個難點和重點,為了實現批量、自動化監控,通常會將具有相同特征的監控項匯總到模板中,然后在主機中直接引用即可,實現快速監控部署。
三、部署Zabbix監控平臺
Zabbix的監控平臺部署比較簡單,前提是準備好LNMP或LAMP環境
我這里將從部署LNMP環境開始配置。
注:我這里將所有服務部署在同一臺服務器上,僅僅是一個簡單的監控架構,并沒有部署 zabbix proxy等。
Zabbix官方的相關鏈接:
Zabbix 4.2 配置文檔:https://www.zabbix.com/documentation/4.2/manual/it_services
所需軟件包:https://pan.baidu.com/s/1UzzoFUuR84U2ccDf1qW2UQ
提取碼:grhh
1、部署Nginx
[root@zabbix /]# mkdir /zabbix # 個人習慣,可忽略
[root@zabbix /]# cd zabbix/
[root@zabbix zabbix]# rz # shangchaun上傳所需源碼包
[root@zabbix zabbix]# tar zxf nginx-1.14.0.tar.gz
[root@zabbix zabbix]# cd nginx-1.14.0/
[root@zabbix nginx-1.14.0]# yum -y install pcre-devel openssl-devel zlib-devel
[root@zabbix zabbix]# cd nginx-1.14.0/
[root@zabbix nginx-1.14.0]# useradd -s /sbin/nologin -M www
[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 /]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@zabbix /]# vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
location / {
root html;
index index.php index.html index.htm; #添加index.php
}
#注意刪除下面段落的注釋符號
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf; #修改此行
}
[root@zabbix /]# netstat -anput |grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 46551/nginx: master
[root@zabbix /]# cat > /usr/local/nginx/html/index.php << EOF # 創建測試文件
> <?php
> phpinfo();
> ?>
> EOF
2、部署PHP
[root@zabbix /]# yum -y install libxml2-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel # 安裝依賴包
[root@zabbix /]# cd /zabbix/
[root@zabbix zabbix]# tar zxf libmcrypt-2.5.7.tar.gz
[root@zabbix zabbix]# cd libmcrypt-2.5.7/
[root@zabbix libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install # 編譯并安裝
[root@zabbix libmcrypt-2.5.7]# cd ..
[root@zabbix zabbix]# tar zxf php-5.6.27.tar.gz
[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
[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 /]# service php-fpm start # 啟動php
Starting php-fpm done
[root@zabbix /]# netstat -anput | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 60347/php-fpm: mast
客戶端訪問定義的php頁面:
3、安裝及配置MySQL數據庫
[root@zabbix ~]# sh mysql.sh # 執行腳本,等待一會出現如下提示表示安裝成功
Starting MySQL. SUCCESS!
mysql: [Warning] Using a password on the command line interface can be insecure.
[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.171.%' identified by '123.com';
mysql> exit
4、部署zabbix服務
[root@zabbix zabbix]# tar zxf fping-3.12.tar.gz
[root@zabbix zabbix]# tar zxf zabbix-3.2.1.tar.gz
[root@zabbix zabbix]# cd 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 libssh3-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 zabbix-3.2.1]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/
[root@zabbix zabbix-3.2.1]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
#導入zabbix數據到MySQL,注意導入的順序,如果導入后返回提示信息,可忽略,是因為導入的命令將密碼展示在了終端
[root@zabbix zabbix-3.2.1]# pwd
/zabbix/zabbix-3.2.1
[root@zabbix zabbix-3.2.1]# cd database/mysql/
[root@zabbix mysql]# mysql -u zabbix -p123.com -h localhost zabbix < schema.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix mysql]# mysql -u zabbix -p123.com -h localhost zabbix < images.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix mysql]# mysql -u zabbix -p123.com -h localhost zabbix < data.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix mysql]# chown -R zabbix:zabbix /usr/local/zabbix/
5、優化zabbix并啟動
#修改zabbix配置文件
[root@zabbix /]# sed -i 's/# ListenPort=10051/ListenPort=10051/g' /usr/local/zabbix/etc/zabbix_server.conf
[root@zabbix /]# 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 /]# 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 /]# sed -i 's/# DBHost=localhost/DBHost=localhost/g' /usr/local/zabbix/etc/zabbix_server.conf
[root@zabbix /]# sed -i 's/# DBPassword=/DBPassword=123.com/g' /usr/local/zabbix/etc/zabbix_server.conf[root@zabbix /]# sed -i 's/# DBSocket=\/tmp\/mysql.sock/DBSocket=\/usr\/local\/mysql\/mysql.sock/g' /usr/local/zabbix/etc/zabbix_server.conf
[root@zabbix /]# sed -i 's/# DBPort=3306/DBPort=3306/g' /usr/local/zabbix/etc/zabbix_server.conf
[root@zabbix /]# sed -i 's/# FpingLocation=\/usr\/sbin\/fping/FpingLocation=\/usr\/local\/sbin\/fping/g' /usr/local/zabbix/etc/zabbix_server.conf
[root@zabbix /]# sed -i 's/# LogSlowQueries=0/LogSlowQueries=3000/g' /usr/local/zabbix/etc/zabbix_server.conf
#如果數據庫名稱和數據庫用戶沒有和我創建的一樣,那么還需要更改以下兩項
#DBName=zabbix #數據庫名稱
#DBUser=zabbix #登錄數據庫的用戶名
[root@zabbix /]# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf
[root@zabbix /]# ldconfig # 刷新上面更改的配置
[root@zabbix /]# mkdir /usr/local/zabbix/logs
[root@zabbix /]# chown -R zabbix:zabbix /usr/local/zabbix/
[root@zabbix /]# cd /zabbix/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 core]# /etc/init.d/zabbix_server start #啟動zabbix,也可以執行“zabbix-server”來啟動
Reloading systemd: [ OK ]
Starting zabbix_server (via systemctl): [ OK ]
[root@zabbix core]# netstat -anput | grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 74199/zabbix_server
[root@zabbix core]# cd /zabbix/zabbix-3.2.1/frontends/
[root@zabbix frontends]# cp -r php/ /usr/local/nginx/html/zabbix
6、client訪問nginx代理以便配置zabbix
訪問Nignx服務器的IP/zabbix即可,它會自動跳轉到下面的頁面:
上述所顯示報錯大概是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 /]# service php-fpm restart # 重啟服務
Gracefully shutting down php-fpm . done
Starting php-fpm done
又報錯,提示無法創建配置文件,讓我們手動下載配置文件并上傳到指定的目錄,那就點擊下載
[root@zabbix /]# ls /usr/local/nginx/html/zabbix/conf/zabbix.conf.php
/usr/local/nginx/html/zabbix/conf/zabbix.conf.php
輸入zabbix用戶名及密碼進行登錄(默認用戶名:admin,密碼:zabbix):
7、解決后續制作圖表的中文亂碼問題
[root@zabbix ~]# cd /usr/local/nginx/html/zabbix/fonts/ #切換至該目錄
[root@zabbix fonts]# rz
[root@zabbix fonts]# ls
DejaVuSans.ttf simkai.ttf
[root@zabbix fonts]# sed -i 's/DejaVuSans/simkai/g' /usr/local/nginx/html/zabbix/include/defines.inc.php
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。