Zabbix是一個企業級的分佈式開源監控解決方案。它可以監控各類服務器的健康型、網絡的穩定性以及各類應用系統的可靠性。當監控出現異常時,Zabbix經過靈活i的告警策咯,能夠爲任何事件配置基於郵件、短信、微信等告警機制。而這全部的一切,均可以經過Zabbix提供的Web界面進行配置和操做,基於Web的前端頁面還提供了出色的報告和數據可視化功能。這些功能和特性使運維人員能夠很是輕鬆的搭建一套功能強大的運維監控管理平臺。php
Zabbix的運行架構圖以下:html
從圖中能夠看出Zabbix主要有幾個組件,分別是:前端
Zabbix Server是Zabbix的核心組件,是全部配置信息、統計信息和操做數據的核心存儲器。它主要負責接收客戶端發送的報告信息,同時,全部配置、統計數據及配置操做數據均由其組織進行;java
主要用於存儲數據,全部配置信息和Zabbix收集到的數據都被存儲在數據庫中。經常使用的數據庫有Oracle、Mysql等;mysql
這是Zabbix提供的GUI接口,一般與Zabbix Server運行在同一臺物理服務器上;nginx
這是一個可選組件,經常使用於分佈監控環境中,代理Server能夠代替Zabbix server收集性能和可用性數據,彙總後同一發往Zabbix Server端;web
Zabbix Agent部署在被監控主機上,可以主動監控本地資源和應用程序,並負責收集數據發送Zabbix Server端或Zabbix Proxy端;sql
根據功能和用途,默認狀況下zabbix包含5個進程,以下:數據庫
zabbix_agentd是Zabbix Agent監控代理端守護進程,此進程主要用於收集客戶端數據,例如:CPU、內存、硬盤、網絡使用狀況等信息;vim
Zabbix提供的一個工具,一般在Zabbix server或Zabbix Proxy端執行用來獲取遠程客戶端信息,其實就是Zabbix Server去Zabbix Agent拉取數據的過程。此工具經常使用排錯;
Zabbix提供的一個工具,用於發送數據給Zabbix server或Zabbix Proxy,實際上是Zabbix Agent主動發送數據到Zabbix Server的過程,一般用於耗時較長的檢查或有大量主機須要監控的場景;
Zabbix Proxy的代理守護進程,功能相似於Zabbix server,惟一不一樣的是它只是一箇中轉站,它須要把收集到的數據提交到Zabbix Server上或等待Zabbix server主動收集;
Zabbix 2.0版本後引入的一個功能,主要用於監控JAVA應用環境,相似於Zabbix_agentd進程。須要注意的是,它只能主動去推送數據,而不能夠等待zabbix server或zabbix proxy來拉取數據。它的數據最終會給到zabbix server或zabbix proxy上;
Zabbix server是整個Zabbix系統的核心進程。其餘進程所收集到的數據最終都會被提交到Zabbix Server上進行統一的處理。
在Zabbix監控提供系統中,有一些經常使用的術語,下面開始簡單介紹如下:
表示要監控的一臺服務器或網絡設備,能夠經過IP或主機名來指定;
主機的邏輯組:包含主機和模板,但同一個主機組內的主機和模板沒有任何直接的關係;主機組一般在給用戶或用戶組指派監控權限時使用;
表示一個監控的具體對象,例如監控服務器的CPU負載、磁盤空間等。item是Zabbix進程數據收集的核心,相對某個監控對象,每一個item都由「key」來標識;
用於評估某監控對象接收到的數據是否在合理範圍內;若是接收的數據大於閾值時,觸發器的狀態將從「OK」變爲「Problem」;當接收到數據低於閾值時,又將狀態變爲「OK」狀態;
一組監控組成的邏輯集合;
指對於監控中出現的問題事先定義的處理方法。例如發送通知、什麼時候執行操做,執行的頻率等;
表示發送通知的手段,告警通知的途徑。例如Email、郵件等;
一組能夠被應用到一個或多個主機上的實體集合,一個模板一般包含了應用集、監控項、觸發器、圖形、聚合圖形、自動發現機制、Web場景等幾個項目;模板能夠直接鏈接到某個主機;
模板時學習Zabbix的一個難點和重點,爲了實現批量、自動化監控,一般會將具備相同特徵的監控項彙總到模板中,而後在主機中直接引用便可,實現快速監控部署。
Zabbix的安裝部署很是簡單,官方提供四種安裝途徑,分別是二進制RPM包安裝、源碼安裝、容器安裝、虛擬機鏡像安裝。根據學習方式和運維經驗。推薦使用源碼安裝zabbix server,經過RPM包安裝Zabbix_agent。
Zabbix web端是基於Apache或Nginx服務和PHP腳本語言進行構建的,要求Apache的版本爲1.3.12以上的版本、PHP的版本爲5.4.0以上的版本,同時對PHP擴展包也有要求,例如GD要求2.0以上的版本、libXML要求2.6.15以上的版本。
Zabbix的數據存儲支持多種數據庫,好比Mysql、Oracle、PostgreSQL等,本次採用Mysql數據庫。Zabbix對Mysql的要求必須是5.0.3以上的版本,同時須要InnoDB引擎。
本次使用nginx最新穩定版本1.14.1。
[root@zabbix ~]# yum -y install zlib pcre pcre-devel openssl openssl-devel [root@zabbix ~]# wget http://nginx.org/download/nginx-1.14.1.tar.gz [root@zabbix ~]# useradd -s /sbin/nologin www [root@zabbix ~]# useradd -s /sbin/nologin www [root@zabbix ~]# tar zxf nginx-1.14.1.tar.gz -C /usr/src [root@zabbix ~]# cd /usr/src/nginx-1.14.1/ [root@zabbix nginx-1.14.1]# ./configure --prefix=/usr/local/nginx --user=www --group=www \ --with-http_stub_status_module --with-http_ssl_module --with-pcre \ --with-http_gzip_static_module && make && make install [root@zabbix nginx-1.14.1]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
[root@zabbix ~]# wget https://repo.mysql.com/mysql57-community-release-el7.rpm [root@zabbix ~]# rpm -ivh mysql57-community-release-el7.rpm [root@zabbix ~]# yum -y install mysql mysql-server mysql-devel [root@zabbix ~]# systemctl start mysqld [root@zabbix etc]# ss -lnt | grep 3306 LISTEN 0 80 :::3306 :::*
yum安裝mysql數據庫後,會隨機生成一個臨時的密碼,能夠經過如下命令進行查看:
[root@zabbix ~]# grep password /var/log/mysqld.log 2020-01-24T14:35:59.600458Z 1 [Note] A temporary password is generated for root@localhost: G#rbsu9r_Z6y [root@zabbix ~]# mysql -u root -pG#rbsu9r_Z6y mysql> set global validate_password_policy=0; mysql> set global validate_password_length=6; mysql> set password=password('123456'); //更改密碼爲123456
[root@zabbix ~]# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel openldap openldap-devel [root@zabbix ~]# wget https://www.php.net/distributions/php-7.2.3.tar.gz [root@zabbix ~]# tar zxf php-7.2.3.tar.gz -C /usr/src [root@zabbix ~]# cd /usr/src/php-7.2.3/ [root@zabbix php-7.2.3]# ./configure --prefix=/usr/local/php7 --enable-fpm \ --with-fpm-user=www --with-fpm-group=www --with-pdo-mysql=mysqlnd \ --with-mysqli=mysqlnd --with-zlib --with-curl --with-gd --with-gettext \ --enable-bcmath --enable-sockets --with-jpeg-dir \ --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring \ --enable-xml --enable-session --enable-ftp --enable-pdo --enable-tokenizer \ --enable-zip && make && make install [root@zabbix php-7.2.3]# cp php.ini-production /usr/local/php7/lib/php.ini [root@zabbix php-7.2.3]# cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/ [root@zabbix php-7.2.3]# vim /usr/local/php7/lib/php.ini post_max_size = 16M max_execution_time = 300 memory_limit = 128M max_input_time = 300 date.timezone = Asia/Shanghai [root@zabbix php-7.2.3]# vim /usr/local/nginx/conf/nginx.conf location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; include fastcgi_params; } [root@zabbix etc]# cp php-fpm.conf.default php-fpm.conf [root@zabbix etc]# cp php-fpm.d/www.conf.default php-fpm.d/www.conf [root@zabbix etc]# systemctl daemon-reload [root@zabbix etc]# systemctl start php-fpm [root@zabbix etc]# nginx [root@zabbix etc]# ss -lnt | grep 9000 LISTEN 0 128 127.0.0.1:9000 *:* [root@zabbix etc]# ss -lnt | grep 80 LISTEN 0 128 *:80 *:* LISTEN 0 80 :::3306 :::*
[root@zabbix ~]# yum -y install net-snmp net-snmp-devel curl curl-devel libevent libevent-devel [root@zabbix ~]# groupadd zabbix [root@zabbix ~]# useradd -g zabbix zabbix [root@zabbix ~]# wget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.0/zabbix-4.0.0.tar.gz [root@zabbix ~]# tar zxf zabbix-4.0.0.tar.gz -C /usr/src [root@zabbix ~]# cd /usr/src/zabbix-4.0.0/ [root@zabbix zabbix-4.0.0]# ./configure --prefix=/usr/local/zabbix --with-mysql \ --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy \ --with-libxml2 && make && make install [root@zabbix zabbix-4.0.0]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/ [root@zabbix zabbix-4.0.0]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/
zabbix serve須要mysql數據庫的支持!
[root@zabbix ~]# mysql -u root -p123456 mysql> create database zabbix character set utf8 collate utf8_bin; mysql> grant all privileges on zabbix.* to zabbix@'192.168.1.%' identified by 'zabbix'; mysql> flush privileges; [root@zabbix ~]# cd /usr/src/zabbix-4.0.0/database/mysql/ [root@zabbix mysql]# mysql -u root -p123456 mysql> source schema.sql; mysql> source images.sql; mysql> source data.sql; //導入zabbix源碼包下對應的MySQL的sql語句
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf ListenPort=10051 LogFile=/tmp/zabbix_server.log DBHost=192.168.1.10 DBName=zabbix DBUser=zabbix DBPassword=zabbix ListenIP=0.0.0.0 StartPollers=5 StartTrappers=10 StartDiscoverers=10 AlertScriptsPath=usr/local/zabbix/share/zabbix/alertscripts [root@zabbix ~]# cp /usr/src/zabbix-4.0.0/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server [root@zabbix ~]# cp /usr/src/zabbix-4.0.0/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd [root@zabbix ~]# chmod +x /etc/init.d/zabbix_server [root@zabbix ~]# chmod +x /etc/init.d/zabbix_agentd [root@zabbix ~]# chkconfig zabbix_server on [root@zabbix ~]# chkconfig zabbix_agentd on [root@zabbix ~]# /etc/init.d/zabbix_server start //啓動過程當中,若是由於libmysqlclient.so這個文件報錯,致使沒法啓動,需進行如下操做 [root@zabbix ~]# find / -name libmysqlclient.so /usr/lib64/mysql/libmysqlclient.so [root@zabbix ~]# echo "/usr/lib64/mysql" >> /etc/ld.so.conf [root@zabbix ~]# ldconfig [root@zabbix ~]# /etc/init.d/zabbix_server start [root@zabbix ~]# ss -lnt | grep 10051 LISTEN 0 128 *:10051 *:*
開啓另外一臺服務器部署zabbix agent,zabbix agent採用RPM包的方式進行安裝!
[root@agent ~]# wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm [root@agent ~]# rpm -ivh zabbix-agent-4.0.0-2.el7.x86_64.rpm [root@agent ~]# vim /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log Server=192.168.1.10 StartAgents=3 ServerActive=192.168.1.10 Hostname=192.168.1.8 Include=/etc/zabbix/zabbix_agentd.d/*.conf UnsafeUserParameters=1 //啓用agent端自定義item功能,設置參數爲1,表示啓用!可使用UserParameter指令 [root@agent ~]# systemctl start zabbix-agent
需在zabbix server端進行操做!
[root@zabbix ~]# cp -r /usr/src/zabbix-4.0.0/frontends/php/ /usr/local/nginx/html/zabbix
客戶端訪問測試:
解決方法以下:
[root@zabbix ~]# ps -ef | grep php [root@zabbix ~]# chown -R www:www /usr/local/nginx/html/zabbix/
修改完成以後,刷新web頁面,如圖:
[root@zabbix ~]# zabbix_get -s 192.168.1.8 -p 10050 -k "system.uptime" //-s:指定zabbix agent端的IP地址; //-p:指定zabbix agent端的監聽端口; //-k:指定監控項; //若是有輸出結果,則表示zabbix server能夠獲取zabbix agent的數據,配置成功!
本地使用的windows系統,建議進行以下操做:控制面板→字體→楷體。將字體下載並上傳到zabbix server上。
[root@zabbix ~]# ls | grep SIMKAI.TTF SIMKAI.TTF [root@zabbix ~]# sed -i 's/DejaVuSans/simkai.ttf/g' /usr/local/nginx/html/zabbix/include/defines.inc.php [root@zabbix ~]# mv SIMKAI.TTF /usr/local/nginx/html/zabbix/fonts/simkai.ttf //避免出現中文亂碼的問題
至此,zabbix監控平臺已經搭建完成!