Zabbix簡介
Zabbix 是由Alexei Vladishev創建,目前由Zabbix SIA在持續開發和支持,Zabbix 是一個企業級的分布式開源監控方案,Zabbix是一款能夠監控各種網路引數以及服務器健康性和完整性的軟體,Zabbix使用靈活的通知機制,允許用戶為幾乎任何事件配置基于郵件的告警,這樣可以快速反饋服務器的問題,基于已存盤的資料,Zabbix提供了出色的報告和資料可視化功能,這些功能使得Zabbix成為容量規劃的理想方案,官方網站:http://www.zabbix.com/
Zabbix支持主動輪詢和被動捕獲,Zabbix所有的報告、統計資訊和配置引數都可以通過基于Web的前端頁面進行訪問,基于Web的前端頁面可以確保您從任何方面評估您的網路狀態和服務器的健康性,適當的配置后,Zabbix可以在IT基礎架構監控方面扮演重要的角色,對于只有少量服務器的小型組織和擁有大量服務器的大型公司也同樣如此,
Zabbix是免費的,Zabbix是根據GPL通用公共許可證第2版撰寫和發行的,這意味著它的源代碼都是免費發行的,可供公眾任意使用,
zabbix中的名詞解釋
主機 (host):一臺你想監控的網路設備,用IP或域名表示
主機組 (host group):主機的邏輯組;它包含主機和模板,一個主機組里的主機和模板之間并沒有任何直接的關聯,通常在給不同用戶組的主機分配權限時候使用主機組,
監控項 (item):你想要接收的主機的特定資料,一個度量資料,
觸發器 (trigger):一個被用于定義問題閾值和“評估”監控項接收到的資料的邏輯運算式,當接收到的資料高于閾值時,觸發器從“OK”變成“Problem”狀態,當接收到的資料低于閾值時,觸發器保留/回傳一個“OK”的狀態,
事件 (event):單次發生的需要注意的事情,例如觸發器狀態改變或發現有監控代理自動注冊
例外 (problem):一個處在“例外”狀態的觸發器
動作 (action):一個對事件做出反應的預定義的操作,一個動作由操作(例如發出通知)和條件(當時操作正在發生)組成
升級 (escalation):一個在動作內執行操作的自定義場景; 發送通知/執行遠程命令的序列
媒介 (media):發送告警通知的手段;告警通知的途徑
通知 (notification):利用已選擇的媒體途徑把跟事件相關的資訊發送給用戶
遠程命令 (remote command):一個預定義好的,滿足一些條件的情況下,可以在被監控主機上自動執行的命令
模版 (template):一組可以被應用到一個或多個主機上的物體(監控項,觸發器,圖形,聚合圖形,應用,LLD,Web場景)的集合,模版的任務就是加快對主機監控任務的實施;也可以使監控任務的批量修改更簡單,模版是直接關聯到每臺單獨的主機上,
應用 (application):一組監控項組成的邏輯分組
web 場景 (web scenario):利用一個或多個HTTP請求來檢查網站的可用性
前端 (frontend):Zabbix提供的web界面
Zabbix API:Zabbix API允許你使用JSON RPC協議來創建、更新和獲取Zabbix物件(如主機、監控項、圖形和其他)資訊或者執行任何其他的自定義的任務
Zabbix server:Zabbix軟體實作監控的核心程式,主要功能是與Zabbix proxies和Agents進行互動、觸發器計算、發送告警通知;并將資料集中保存等
Zabbix agent:一個部署在監控物件上的,能夠主動監控本地資源和應用的程式
Zabbix proxy:一個幫助Zabbix Server收集資料,分擔Zabbix Server的負載的程式
Zabbix 主要特點
安裝與配置簡單,學習成本低 支持多語言(包括中文) 免費開源 自動發現服務器與網路設備分布式監視以及 WEB 集中管理功能 可以無 agent 監視 用戶安全認證和柔軟的授權方式 通過 WEB 界面設定或查看監視結果 email 等通知功能
Zabbix主要功能
監控CPU負載、記憶體使用、磁盤使用、網路狀態、埠監視、日志監視、插件開發自定義
Zabbix運行機制
Zabbix Server 和 Zabbix agent
Zabbix Server 可以通過 SNMP,Zabbix agent,Ping,埠監視等你方法提供對遠程服務器/網路狀態的 監視,資料收集功能,可以在運行 Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,OX X,Windows 多 平臺,
Zabbix Agent 安裝在需要被監控的目標服務器上,主要完成對硬體資訊與作業系統有關的記憶體,CPU 等你 資訊收集,
Zabbix Server 可以單獨監視遠程服務器的服務狀態,同時也可以與 Zabbix Agent 結合,可以輪詢 Zabbix Agent 主動接收監視資料(trapping 傳遞 方式),同時還可以被動接收 Zabbix Agent 發送的資料,
Zabbix運行程序圖
Zabbix 是由Alexei Vladishev創建,目前由Zabbix SIA在持續開發和支持,Zabbix 是一個企業級的分布式開源監控方案,Zabbix是一款能夠監控各種網路引數以及服務器健康性和完整性的軟體,Zabbix使用靈活的通知機制,允許用戶為幾乎任何事件配置基于郵件的告警,這樣可以快速反饋服務器的問題,基于已存盤的資料,Zabbix提供了出色的報告和資料可視化功能,這些功能使得Zabbix成為容量規劃的理想方案,官方網站:http://www.zabbix.com/
Zabbix支持主動輪詢和被動捕獲,Zabbix所有的報告、統計資訊和配置引數都可以通過基于Web的前端頁面進行訪問,基于Web的前端頁面可以確保您從任何方面評估您的網路狀態和服務器的健康性,適當的配置后,Zabbix可以在IT基礎架構監控方面扮演重要的角色,對于只有少量服務器的小型組織和擁有大量服務器的大型公司也同樣如此,
Zabbix是免費的,Zabbix是根據GPL通用公共許可證第2版撰寫和發行的,這意味著它的源代碼都是免費發行的,可供公眾任意使用,
zabbix中的名詞解釋
主機 (host):一臺你想監控的網路設備,用IP或域名表示
主機組 (host group):主機的邏輯組;它包含主機和模板,一個主機組里的主機和模板之間并沒有任何直接的關聯,通常在給不同用戶組的主機分配權限時候使用主機組,
監控項 (item):你想要接收的主機的特定資料,一個度量資料,
觸發器 (trigger):一個被用于定義問題閾值和“評估”監控項接收到的資料的邏輯運算式,當接收到的資料高于閾值時,觸發器從“OK”變成“Problem”狀態,當接收到的資料低于閾值時,觸發器保留/回傳一個“OK”的狀態,
事件 (event):單次發生的需要注意的事情,例如觸發器狀態改變或發現有監控代理自動注冊
例外 (problem):一個處在“例外”狀態的觸發器
動作 (action):一個對事件做出反應的預定義的操作,一個動作由操作(例如發出通知)和條件(當時操作正在發生)組成
升級 (escalation):一個在動作內執行操作的自定義場景; 發送通知/執行遠程命令的序列
媒介 (media):發送告警通知的手段;告警通知的途徑
通知 (notification):利用已選擇的媒體途徑把跟事件相關的資訊發送給用戶
遠程命令 (remote command):一個預定義好的,滿足一些條件的情況下,可以在被監控主機上自動執行的命令
模版 (template):一組可以被應用到一個或多個主機上的物體(監控項,觸發器,圖形,聚合圖形,應用,LLD,Web場景)的集合,模版的任務就是加快對主機監控任務的實施;也可以使監控任務的批量修改更簡單,模版是直接關聯到每臺單獨的主機上,
應用 (application):一組監控項組成的邏輯分組
web 場景 (web scenario):利用一個或多個HTTP請求來檢查網站的可用性
前端 (frontend):Zabbix提供的web界面
Zabbix API:Zabbix API允許你使用JSON RPC協議來創建、更新和獲取Zabbix物件(如主機、監控項、圖形和其他)資訊或者執行任何其他的自定義的任務
Zabbix server:Zabbix軟體實作監控的核心程式,主要功能是與Zabbix proxies和Agents進行互動、觸發器計算、發送告警通知;并將資料集中保存等
Zabbix agent:一個部署在監控物件上的,能夠主動監控本地資源和應用的程式
Zabbix proxy:一個幫助Zabbix Server收集資料,分擔Zabbix Server的負載的程式
Zabbix 主要特點
安裝與配置簡單,學習成本低 支持多語言(包括中文) 免費開源 自動發現服務器與網路設備分布式監視以及 WEB 集中管理功能 可以無 agent 監視 用戶安全認證和柔軟的授權方式 通過 WEB 界面設定或查看監視結果 email 等通知功能
Zabbix主要功能
監控CPU負載、記憶體使用、磁盤使用、網路狀態、埠監視、日志監視、插件開發自定義
Zabbix運行機制
Zabbix Server 和 Zabbix agent
Zabbix Server 可以通過 SNMP,Zabbix agent,Ping,埠監視等你方法提供對遠程服務器/網路狀態的 監視,資料收集功能,可以在運行 Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,OX X,Windows 多 平臺,
Zabbix Agent 安裝在需要被監控的目標服務器上,主要完成對硬體資訊與作業系統有關的記憶體,CPU 等你 資訊收集,
Zabbix Server 可以單獨監視遠程服務器的服務狀態,同時也可以與 Zabbix Agent 結合,可以輪詢 Zabbix Agent 主動接收監視資料(trapping 傳遞 方式),同時還可以被動接收 Zabbix Agent 發送的資料,
Zabbix運行程序圖

Zabbix 支持多種網路方式下的監控,可以通過分布式的部署和安裝監控代理 Zabbix,通過 C/S 模式采集資料,通過 B/S 模式在 Web 端展示和配置!Agent 監控埠 10050
服務端安裝 Zabbix Server 和 Zabbix Agent 兩個服務,客戶端只安裝 Zabbix Agent 一個服務,監控原理 就是 Zabbix Agent 服務將從系統中獲取的相關資料傳送給 Zabbix Server,然后 Zabbix Server 服務獎資料分 析之后以 PHP 頁面展示出來!
Zabbix部署
硬體環境準備
|
角色 |
主機名/域名 |
IP地址 |
服務 |
備注 |
|
服務器 |
Server |
192.168.1.10/24 |
|
|
軟體環境準備
|
軟體名稱 |
型別 |
版本 |
備注 |
|
CentOS |
作業系統 |
7.0或以上版本 |
|
服務器網路配置、主機名、防火墻以及selinux狀態如下

#首先給節點做hosts的IP映射
[root@zabbix-server ~]# vim /etc/hosts
192.168.1.10 zabbix-server
#添加yum在線源和epel源
[root@zabbix-server ~]# yum -y install wget
[root@zabbix-server ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#在機器上安裝ntpdate,然后做NTP時間同步服務器
[root@zabbix-server ~]# yum -y install ntpdate
[root@zabbix-server ~]# ntpdate ntp1.aliyun.com
7 Apr 00:31:45 ntpdate[7470]: step time server 120.25.115.20 offset -28792.199899 sec
[root@zabbix-server ~]# date
2020年 04月 07日 星期二 00:31:50 CST
#中心計劃任務每五分鐘執行一次更新阿里時間服務器
[root@zabbix-server ~]# crontab -e
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com > /dev/null 2>&1
#準備部署zabbix服務,安裝一些zabbix必要的組件和服務
[root@zabbix-server ~]# yum -y install httpd mariadb mariadb-devel mariadb-server php-mbstring php-bcmath php-gd php-xmlrpc php-ldap php-xml libevent libevent-devel net-snmp net-snmp-devel libxml2 libxml2-devel libcurl-devel
#測驗是否安裝成功
[root@zabbix-server ~]# echo $?
0
#后期有可能用到tomcat,所以要部署JDK環境
[root@zabbix-server ~]# ls
anaconda-ks.cfg jdk-8u60-linux-x64.tar.gz
[root@zabbix-server ~]# tar xf jdk-8u60-linux-x64.tar.gz
[root@zabbix-server ~]# mv jdk1.8.0_60/ /usr/local/java
[root@zabbix-server ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java
export CLASSPATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@zabbix-server ~]# . /etc/profile.d/java.sh
[root@zabbix-server ~]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
#原始碼安裝zabbix服務端
[root@zabbix-server ~]# ls
anaconda-ks.cfg zabbix-3.4.3.tar.gz
[root@zabbix-server ~]# tar xf zabbix-3.4.3.tar.gz -C /usr/local/src/
[root@zabbix-server ~]# cd /usr/local/src/zabbix-3.4.3/
[root@zabbix-server zabbix-3.4.3]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --enable-java && make -j2 && make install
[root@zabbix-server zabbix-3.4.3]# echo $?
0
#啟動mariadb和加入開機自啟動
[root@zabbix-server ~]# systemctl start mariadb
[root@zabbix-server ~]# systemctl enable mariadb
#重置mariadb資料庫,設定密碼為123123
[root@zabbix-server ~]# mysql_secure_installation
# 進入mariadb資料庫,創建zabbix用戶和資料庫
[root@zabbix-server ~]# mysql -uroot -p123123
MariaDB [(none)]> create database zabbix character set utf8;
MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
#此步驟是為zabbix授權192.168.1.10否則無法啟動server端
MariaDB [(none)]> grant all on zabbix.* to [email protected] identified by 'zabbix';
MariaDB [(none)]> flush privileges;
#把zabbix自帶的資料匯入mysql的zabbix資料庫
[root@zabbix-server zabbix-3.4.3]# cd database/
[root@zabbix-server database]# ls
ibm_db2 Makefile.am mysql postgresql
Makefile Makefile.in oracle sqlite3
[root@zabbix-server database]# mysql -uzabbix -pzabbix zabbix < mysql/schema.sql
[root@zabbix-server database]# mysql -uzabbix -pzabbix zabbix < mysql/images.sql
[root@zabbix-server database]# mysql -uzabbix -pzabbix zabbix < mysql/data.sql
#登陸mysql資料庫查看是否匯入成功
[root@zabbix-server ~]# mysql -uroot -p123123
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> show databases;
結果發現已經有好多資料被匯入進來了!
#創建zabbix用戶
[root@zabbix-server ~]# useradd -M -s /sbin/nologin zabbix
[root@zabbix-server ~]# chown -R zabbix:zabbix /usr/local/zabbix/
[root@zabbix-server ~]# cd /usr/local/zabbix/
#創建一個放日志的目錄,并且加入zabbix用戶和用戶組
[root@zabbix-server zabbix]# mkdir log
[root@zabbix-server zabbix]# ll -d log/
drwxr-xr-x 2 root root 6 4月 7 01:36 log/
[root@zabbix-server zabbix]# chown -R zabbix:zabbix log/
#備份zabbix組態檔,并配置
[root@zabbix-server ~]# cd /usr/local/src/zabbix-3.4.3/conf
#原始碼裝的zabbix需要從原始碼包里邊復制組態檔出來
[root@zabbix-server conf]# mkdir -pv /usr/local/zabbix/etc/
[root@zabbix-server conf]# mv zabbix_server.conf /usr/local/zabbix/etc/
[root@zabbix-server conf]# mv zabbix_agentd.conf /usr/local/zabbix/etc/
[root@zabbix-server conf]# cd /usr/local/zabbix/etc/
[root@zabbix-server etc]# ls
zabbix_agentd.conf zabbix_server.conf
zabbix_agentd.conf.d zabbix_server.conf.d
[root@zabbix-server etc]# cp -p zabbix_server.conf zabbix_server.conf.bak
[root@zabbix-server etc]# cp -p zabbix_agentd.conf zabbix_agentd.conf.bak
#過濾#號注釋和空行簡化組態檔
[root@zabbix-server etc]# egrep -v "^#|^$" zabbix_server.conf.bak > zabbix_server.conf
[root@zabbix-server etc]# vim zabbix_server.conf
LogFile=/usr/local/zabbix/log/zabbix_server.log //指定zabbix日志位置
DBHost=192.168.1.10 //指定資料庫主機
DBName=zabbix //指定資料庫名為zabbix
DBUser=zabbix //指定用戶為zabbix
DBPassword=zabbix //指定密碼為zabbix
PidFile=/usr/local/zabbix/log/zabbix_server.pid //指定zabbix的pid檔案位置
DBSocket=/var/lib/mysql/mysql.sock //指定mysql的sock檔案
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf //指定包含的組態檔
[root@zabbix-server etc]# egrep -v "^#|^$" zabbix_agentd.conf.bak > zabbix_agentd.conf
[root@zabbix-server etc]# vim zabbix_agentd.conf
LogFile=/usr/local/zabbix/log/zabbix_agentd.log
Server=127.0.0.1,192.168.1.10
ServerActive=192.168.1.10
Hostname=zabbix-server
PidFile=/usr/local/zabbix/log/zabbix_agentd.pid
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
#為zabbix啟動腳本創建軟鏈接
[root@zabbix-server ~]# ln -s /usr/local/zabbix/sbin/* /usr/local/bin/
#移動zabbix的網站原始碼到Apache訪問目錄
[root@zabbix-server ~]# mv /usr/local/src/zabbix-3.4.3/frontends/php/ /var/www/html/zabbix
#給apache加入用戶和用戶組
[root@zabbix-server ~]# chown -R apache:apache /var/www/html/zabbix/
[root@zabbix-server ~]# vim /etc/php.ini
211 short_open_tag = On
384 max_execution_time = 300
394 max_input_time = 300
672 post_max_size = 32M
846 extension=bcmath.so
878 date.timezone = Asia/Shanghai
#編輯一下Apache的組態檔
[root@zabbix-server ~]# vim /etc/httpd/conf/httpd.conf
ServerName www.example.com:80
DirectoryIndex index.html index.php
AddType application/x-httpd-php .php
#添加PHP相關組件
[root@zabbix-server html]# yum install php php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
#啟動Apache服務,并加入開機自啟
[root@zabbix-server ~]# systemctl start httpd
[root@zabbix-server ~]# systemctl enable httpd
#啟動zabbix的server端和agent端
[root@zabbix-server ~]# zabbix_server
[root@zabbix-server ~]# zabbix_agentd
#查看Apache是否啟動
[root@zabbix-server ~]# netstat -antup|grep 80
tcp 0 36 192.168.1.10:22 192.168.1.2:5468 ESTABLISHED 7409/sshd: root@pts
tcp6 0 0 :::80 :::* LISTEN 35146/httpd
#查看server端
[root@zabbix-server ~]# netstat -antup|grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 7408/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 7408/zabbix_server
#查看agent端
[root@zabbix-server ~]# netstat -antup|grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 35167/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 35167/zabbix_agentd
#網頁訪問http://192.168.1.10/zabbix安裝zabbix








zabbix切換中文界面


配置郵箱報警
#配置163郵箱開始獲取授權碼

#下載mailx郵件服務和dos2unix防止亂碼
[root@zabbix-server ~]# yum -y install mailx dos2unix
[root@zabbix-server ~]# mail -V
12.5 7/5/10
[root@zabbix-server ~]# vim /etc/mail.rc
//末尾添加這四段配置
1 set bsdcompat
2 set from=88888888@163.com smtp=smtp.163.com
3 set smtp-auth-user=88888888@163.com smtp-auth-password=WLJKHGXGOIDZJWGBF //163郵箱申請的授權碼
4 set smtp-auth=login
#測驗給自己發一封郵件
[root@zabbix-server ~]# echo "test mail"|mail -s "test" [email protected]
效果如下:

#編輯zabbix_server.conf參考郵件腳本
[root@zabbix-server ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
[root@zabbix-server ~]# cd /usr/local/zabbix/share/zabbix/alertscripts/
[root@zabbix-server alertscripts]# vim mail.sh
1 #!/bin/bash
2
3 #Author:GaoHongYu
4
5 #QQ:1061767621
6
7 #Time:2020-04-12 16:23:02
8
9 #Name:mail.sh
10
11 #Version:V1.0
12
13 bt=$2
14
15 sjr=$1
16
17 FILE=/tmp/mailtmp.txt
18
19 echo "$3" > $FILE
20
21 /usr/bin/dos2unix -k $FILE
22
23 /bin/mail -s "$bt" "$sjr" <$FILE
[root@zabbix-server alertscripts]# chmod 777 mail.sh
[root@zabbix-server alertscripts]# chown zabbix:zabbix mail.sh
[root@zabbix-server alertscripts]# touch /tmp/mailtmp.txt
[root@zabbix-server alertscripts]# chmod 777 /tmp/mailtmp.txt
[root@zabbix-server alertscripts]# chown zabbix:zabbix /tmp/mailtmp.txt
#測驗腳本能否使用
[root@zabbix-server alertscripts]# ./mail.sh [email protected] "test" "test"
效果如下:

#zabbix中添加報警型別
//添加三個腳本引數
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}





故障告警:
故障{TRIGGER.STATUS},服務器名:{HOSTNAME1}發生: {TRIGGER.NAME}故障!
告警主機:{HOSTNAME}
告警主機IP地址:{HOST.IP}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警資訊: {TRIGGER.NAME}
告警專案:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢復操作:
恢復{TRIGGER.STATUS}, 服務器名:{HOSTNAME1}: {TRIGGER.NAME}已恢復!
告警主機:{HOSTNAME}
告警主機IP地址:{HOST.IP}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警資訊: {TRIGGER.NAME}
告警專案:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
確認操作:
確認{TRIGGER.STATUS}, 服務器名:{HOSTNAME1}: {TRIGGER.NAME}已確認!
告警主機:{HOSTNAME}
告警主機IP地址:{HOST.IP}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警資訊: {TRIGGER.NAME}
告警專案:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}


測驗報警
測驗報警這里就不演示步驟了,直接上效果!

小編撰寫不易,希望轉載注明出處,如需要更深入的交流探討,可以來博客小站交流:www.krzyw.cn
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/24782.html
標籤:其他
下一篇:今天我想學什么,
