一、環(huán)境準(zhǔn)備
centos7.5 系統(tǒng)服務(wù)器3臺、 一臺作為監(jiān)控服務(wù)器, 兩臺臺作為被監(jiān)控節(jié)點, 配置好yum源、 防火墻關(guān)閉、 各節(jié)點時鐘服務(wù)同步、 各節(jié)點之間可以通過主機名互相通信。
| 主機名 | ip | 服務(wù) |
|---|---|---|
| zabbix-server | 192.168.94.141 | zabbix-server |
| zabbix-agent1 | 192.168.94.142 | zabbix-agent |
| zabbix-agent2 | 192.168.94.143 | zabbix-agent |
所有機器關(guān)閉防火墻和selinux
[root@zabbix-master ~]# systemctl stop firewalld && setenforce 0(修改配置文件關(guān)閉)
[root@zabbix-agent1 ~]# systemctl stop firewalld && setenforce 0
[root@zabbix-agent2 ~]# systemctl stop firewalld && setenforce 0
# 必要時可永久關(guān)閉或開啟相應(yīng)的端口
二、Zabbix的安裝
1)更新yum倉庫
我們?nèi)ス倬W(wǎng)下載一個包zabbix-release-4.4-1.el7.noarch.rpm,本地安裝至我們的虛擬機,這樣,我們本地就有了新的yum源,可以直接安裝zabbix服務(wù):
下載安裝官方y(tǒng)um源
[root@zabbix-server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
[root@zabbix-server ~]# yum clean all
[root@zabbix-server ~]# yum makecache fast
已加載插件:fastestmirror
正在清理軟件源: base extras updates zabbix zabbix-non-supported
更新yum倉庫:
[root@zabbix-server ~]# yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
zabbix-non-supported 4/4
repo id repo name status
base base 9,363
epel epel 11,349
zabbix/x86_64 Zabbix Official Repository - x86_64 80
zabbix-non-supported/x86_64 Zabbix Official Repository non-supported - 4
repolist: 20,796
安裝:
[root@zabbix-server ~]# yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-proxy-mysql zabbix-java-gateway zabbix-nginx-conf
#如果上面安裝報錯
[root@zabbix-server ~]# vim /etc/yum.repo.d/zabbix.repo #更換國內(nèi)源
[zabbix]
name=Zabbix Official Repository - $basearch
#baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/7/$basearch/
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/ # 這里我們換成阿里云的yum源
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
#baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/ #換了上面Zabbix的安裝源地址,其組件地址也要記得換!
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
[root@zabbix-server ~]# yum clean all
[root@zabbix-server ~]# yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-proxy-mysql zabbix-java-gateway zabbix-nginx-conf
或者(官方)
[root@zabbix-server ~]# yum-config-manager --enable rhel-7-server-optional-rpms
2)安裝設(shè)置數(shù)據(jù)庫:
1、創(chuàng)建 mariadb.repo
[root@zabbix-server ~]# vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
2、yum 安裝最新版本 mariadb
[root@zabbix-server ~]# yum -y install mariadb mariadb-server
修改配置文件:/etc/my.cnf.d/server.cnf
[root@zabbix-server ~]# vim /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve = ON #跳過主機名解析
innodb_file_per_table = ON #
innodb_buffer_pool_size = 256M #緩存池大小
max_connections = 2000 #最大連接數(shù)
log-bin = master-log #開啟二進制日志
[root@zabbix-server ~]# systemctl start mariadb
[root@zabbix-server ~]# systemctl enable mariadb
3、創(chuàng)建數(shù)據(jù)庫并授權(quán)賬號
MariaDB [(none)]> create database zabbix character set 'utf8'; # 創(chuàng)建zabbix數(shù)據(jù)庫
MariaDB [(none)]> grant all on zabbix.* to 'zabbix'@'192.168.94.%' identified by "123";
# 注意授權(quán)網(wǎng)段
MariaDB [(none)]> flush privileges;
4、導(dǎo)入表
首先,查看一下,zabbix-server-mysql這個包提供了什么:
[root@zabbix-server ~]# rpm -ql zabbix-server-mysql | grep sql
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-4.4.4
/usr/share/doc/zabbix-server-mysql-4.4.4/AUTHORS
/usr/share/doc/zabbix-server-mysql-4.4.4/COPYING
/usr/share/doc/zabbix-server-mysql-4.4.4/ChangeLog
/usr/share/doc/zabbix-server-mysql-4.4.4/NEWS
/usr/share/doc/zabbix-server-mysql-4.4.4/README
/usr/share/doc/zabbix-server-mysql-4.4.4/create.sql.gz #生成表的sql文件
我們來使用這個文件生成我們所需要的表:
[root@zabbix-server ~]# cd /usr/share/doc/zabbix-server-mysql-4.4.4/
[root@zabbix-server zabbix-server-mysql-4.4.4]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@zabbix-server zabbix-server-mysql-4.4.4]# gzip -d create.sql.gz
[root@zabbix-server zabbix-server-mysql-4.4.4]# ls
AUTHORS ChangeLog COPYING create.sql NEWS README
[root@zabbix-server zabbix-server-mysql-4.4.4]# head create.sql
CREATE TABLE `users` (
`userid` bigint unsigned NOT NULL,
`alias` varchar(100) DEFAULT '' NOT NULL,
`name` varchar(100) DEFAULT '' NOT NULL,
`surname` varchar(100) DEFAULT '' NOT NULL,
`passwd` varchar(32) DEFAULT '' NOT NULL,
`url` varchar(255) DEFAULT '' NOT NULL,
`autologin` integer DEFAULT '0' NOT NULL,
`autologout` varchar(32) DEFAULT '15m' NOT NULL,
`lang` varchar(5) DEFAULT 'en_GB' NOT NULL,
我們查看表頭發(fā)現(xiàn)沒有創(chuàng)建數(shù)據(jù)庫的命令,這也正是我們剛剛手動創(chuàng)建數(shù)據(jù)庫的原因。
然后,我們直接把這個表導(dǎo)入至我們的數(shù)據(jù)庫即可:
[root@zabbix-server zabbix-server-mysql-4.4.4]# mysql -uzabbix -p123 -h 192.168.94.141 zabbix < create.sql
導(dǎo)入以后,進入數(shù)據(jù)庫查看一下:
[root@zabbix-server ~]# mysql -uzabbix -p123 -h192.168.94.141
MariaDB [(none)]> use zabbix
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
| alerts |
| application_discovery |
| application_prototype |
......
| users_groups |
| usrgrp |
| valuemaps |
| widget |
| widget_field |
+----------------------------+
149 rows in set (0.001 sec)
可以看出來,數(shù)據(jù)已經(jīng)導(dǎo)入成功了。
三、配置 server 端
數(shù)據(jù)庫準(zhǔn)備好了以后,就要去修改server端的配置文件了。
[root@zabbix-server ~]# cd /etc/zabbix/
[root@zabbix-server zabbix]# ls
web zabbix_java_gateway.conf zabbix_server.conf
zabbix_agentd.conf zabbix_java_gateway_logback.xml
zabbix_agentd.d zabbix_proxy.conf
[root@zabbix-server zabbix]# cp zabbix_server.conf{,.bak}
[root@zabbix-server zabbix]# vim zabbix_server.conf
ListenPort=10051 #默認(rèn)監(jiān)聽端口
SourceIP=192.168.94.141 #發(fā)采樣數(shù)據(jù)請求的IP
為什么要設(shè)置SourceIP,由于我們的客戶端可能一個主機多個IP,我們又不能允許任意的IP都能從我們這里讀取數(shù)據(jù),就會有一個驗證方式,而該方式是基于識別SourceIP來實現(xiàn)的。

日志,默認(rèn)用文件記錄,也可以發(fā)送給我們的rsyslog日志記錄系統(tǒng),如果我們選擇默認(rèn),則日志存放在LogFile=/var/log/zabbix/zabbix_server.log中,也可以自己設(shè)置。

日志的滾動。默認(rèn)值為1,表示滾動。我們設(shè)為0則表示不滾動。當(dāng)數(shù)據(jù)特別多的時候,我們也可以設(shè)置成為1,然后在Maximum size of log file in MB設(shè)置當(dāng)數(shù)據(jù)文件最大到多少時會自動滾動。

日志的級別。一共有6個級別。我們可以根據(jù)自己的需要來設(shè)置級別。其中0表示輸出最少的信息,5表示輸出最詳細的信息,默認(rèn)值為3,設(shè)置為3的話就表示,0、1、2、3四個級別都顯示。考慮到生產(chǎn)系統(tǒng)中的壓力時,這里的信息,如果沒有必要的話,越簡單越好,只要在出錯的時候,我們可以依據(jù)其進行排錯即可。
數(shù)據(jù)庫相關(guān)的設(shè)置:
DBHost=192.168.94.141 #數(shù)據(jù)庫對外的主機
DBName=zabbix #數(shù)據(jù)庫名稱
DBUser=zabbix #數(shù)據(jù)庫用戶
DBPassword=123 #數(shù)據(jù)庫密碼
DBPort=3306 #數(shù)據(jù)庫啟動端口
補充:可以使用grep -i "^####" zabbix_server.conf來查看配置文件中有哪些大段,也可以使用grep -i "^###" zabbix_server.conf來查看配置文件中每一段中的配置項有哪些
開啟服務(wù):
[root@zabbix-server zabbix]# systemctl start zabbix-server.service
確認(rèn)一下我們的端口有沒有開啟:
[root@zabbix-server zabbix]# ss -lnta | grep 10051
LISTEN 0 128 *:10051 *:*
LISTEN 0 128 :::10051 :::*
如果查到的端口沒有開啟,就要去檢查一下配置文件有沒有出問題。
至此,server端的進程啟動已經(jīng)ok了,接下來就可以使用web GUI來打開接口進行設(shè)定了
四、配置 web GUI
查看web GUI的配置文件在哪里:
[root@zabbix-server ~]# rpm -ql zabbix-web | less
/etc/httpd/conf.d/zabbix.conf
/etc/zabbix/web
/etc/zabbix/web/maintenance.inc.php
/etc/zabbix/web/zabbix.conf.php
/usr/share/doc/zabbix-web-4.4.4
/usr/share/doc/zabbix-web-4.4.4/AUTHORS
/usr/share/doc/zabbix-web-4.4.4/COPYING
/usr/share/doc/zabbix-web-4.4.4/ChangeLog
/usr/share/doc/zabbix-web-4.4.4/NEWS
/usr/share/doc/zabbix-web-4.4.4/README
/usr/share/zabbix
/usr/share/zabbix/actionconf.php
/usr/share/zabbix/adm.gui.php
/usr/share/zabbix/adm.housekeeper.php
/usr/share/zabbix/adm.iconmapping.php
/usr/share/zabbix/adm.images.php
/usr/share/zabbix/adm.macros.php
……
可以看出,有一個/etc/httpd/conf.d/zabbix.conf文件,這個配置文件就是幫我們做映射的文件,我們可以去看一看這個文件:
Alias /zabbix /usr/share/zabbix #我們訪問的時候要在主機后加上/zabbix來訪問我們這個服務(wù)

時區(qū)是一定要設(shè)置的,這里被注釋掉是因為,我們也可以在php的配置文件中設(shè)置時區(qū),如果我們在php配置文件中設(shè)置時區(qū),則對所有的php服務(wù)均有效,如果我們在zabbix.conf中設(shè)置時區(qū),則僅對zabbix服務(wù)有效。所以,我們?nèi)hp配置文件中設(shè)置我們的時區(qū):
[root@zabbix-server ~]# vim /etc/php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shanghai
接下來,啟動httpd服務(wù):
[root@zabbix-server ~]# systemctl start httpd.service
[root@zabbix-server ~]# ss -nutl | grep :80
tcp LISTEN 0 128 :::80 :::*
五、瀏覽器訪問并進行初始化設(shè)置
我們使用瀏覽器訪問192.168.94.141/zabbix,第一次訪問時需要進行一些初始化的設(shè)置,我們按照提示操作即可:






點擊Finish以后,我們就會跳轉(zhuǎn)到登錄頁面,使用默認(rèn)的賬號密碼登錄即可:
默認(rèn)賬號:admin
默認(rèn)密碼:zabbix

登陸進來就可以看到我們的儀表盤了:

切換中文:


六、配置 agent 端
當(dāng)我們把監(jiān)控端配置啟動以后,我們需要來設(shè)置一下我們的監(jiān)控端,我們在被監(jiān)控的主機安裝好agent,設(shè)置好他的server,并把他添加到server端,就能將其納入我們的監(jiān)控系統(tǒng)中去了。
1)安裝 zabbix
同樣的,我們先來安裝zabbix。下載包,注釋epel源,安裝所需的包。具體步驟如下:
下載安裝官方y(tǒng)um源
[root@zabbix-agent1 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
[root@zabbix-agent1 ~]# yum clean all
[root@zabbix-agent1 ~]# yum makecache fast
已加載插件:fastestmirror
正在清理軟件源: base extras updates zabbix zabbix-non-supported
# yum 下載
[root@zabbix-agent1 ~]# yum install zabbix-agent zabbix-sender -y
安裝完成以后,修改配置文件。
2)修改配置文件
先查一下包內(nèi)有什么:
[root@zabbix-agent1 ~]# rpm -ql zabbix-agent
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.d
/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
/usr/lib/systemd/system/zabbix-agent.service
/usr/lib/tmpfiles.d/zabbix-agent.conf
/usr/sbin/zabbix_agentd
/usr/share/doc/zabbix-agent-4.4.4
/usr/share/doc/zabbix-agent-4.4.4/AUTHORS
/usr/share/doc/zabbix-agent-4.4.4/COPYING
/usr/share/doc/zabbix-agent-4.4.4/ChangeLog
/usr/share/doc/zabbix-agent-4.4.4/NEWS
/usr/share/doc/zabbix-agent-4.4.4/README
/usr/share/man/man8/zabbix_agentd.8.gz
/var/log/zabbix
/var/run/zabbix
對配置文件做一個備份,然后去修改配置文件:
[root@zabbix-agent1 ~]# cd /etc/zabbix/
[root@zabbix-agent1 zabbix]# ls
zabbix_agentd.conf zabbix_agentd.d
[root@zabbix-agent1 zabbix]# cp zabbix_agentd.conf{,.bak}
[root@zabbix-agent1 zabbix]# vim zabbix_agentd.conf



重點需要修改的仍然是GENERAL PARAMETERS段:

是否允許別人執(zhí)行遠程操作命令,默認(rèn)是禁用的,打開的話會有安全風(fēng)險。
Server=192.168.94.141 #指明服務(wù)器是誰
ListenPort=10050 #自己監(jiān)聽的端口
ListenIP=0.0.0.0 #自己監(jiān)聽的地址,0.0.0.0表示本機所有地址
StartAgents=3 #優(yōu)化時使用的
ServerActive=192.168.94.141 #主動監(jiān)控時的服務(wù)器
Hostname=agent1 #自己能被server端識別的名稱
修改完成之后,我們保存退出。然后就可以啟動服務(wù)了:
[root@zabbix-agent1 zabbix]# systemctl start zabbix-agent
[root@zabbix-agent1 zabbix]# netstat -lntp | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 15909/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 15909/zabbix_agentd
agent2同樣操作,但是主機名不能一樣
接著,就可以去server端添加了。
七、監(jiān)控過程詳解
1)修改密碼


2)創(chuàng)建主機及主機群組
先定義一個主機群組:


然后就可以去添加主機了:


當(dāng)然,上面有很多選擇卡,有一個加密:

添加完成后,就能在列表中看到這個主機了

再把agent2也添加進來

3)監(jiān)控項(items)
創(chuàng)建模板 > 創(chuàng)建應(yīng)用集 > 創(chuàng)建監(jiān)控項
① 首先我們創(chuàng)建一個模板

給模板取一個名字綁定群組

創(chuàng)建好了之后就會出現(xiàn)在列表里

② 創(chuàng)建應(yīng)用集
點擊應(yīng)用集

創(chuàng)建應(yīng)用集

給應(yīng)用集取一個名字,一般根據(jù)功能取易識別的就好

好了,現(xiàn)在就是在agent模板下,建立了一個CPU應(yīng)用集

③ 創(chuàng)建監(jiān)控項
點擊監(jiān)控項


任何一個被監(jiān)控項,如果想要能夠被監(jiān)控,一定要在zabbix-server端定義了能夠連接至zabbix-agent端,并且能夠獲取命令?;蛘咴赼gent端定義了能夠讓server端獲取命令。一般都是內(nèi)建的命令,都對應(yīng)的有其名字,被我們稱之為key。
image.png
關(guān)于key值,我們可以直接在網(wǎng)頁上設(shè)置(服務(wù)器自動執(zhí)行),也可以使用命令行命令(手動執(zhí)行)來獲?。?br>[root@zabbix-server ~]# zabbix_get -s 192.168.94.142 -p 10050 -k "system.cpu.intr"
在我們的agent端,也可以使用命令來查看intr的速率變化:
這里定義了一個不帶參數(shù)的監(jiān)控項"system.cpu.intr"


設(shè)置完以后,點擊添加,即可加入,并會自動跳轉(zhuǎn)至下圖頁面:

然后點擊配置,主機回到下面這個頁面,去給主機綁定我們剛才創(chuàng)建好的模板

④ 綁定模板
點擊agent1


然后點擊更新,等待5秒,我們可以看到,我們agent1節(jié)點后面的選項已經(jīng)有變成綠色的了:

我們也可以回到我們的儀表盤,可以看到,我們的監(jiān)控項有一個處于啟用狀態(tài):

那么,我們的數(shù)據(jù)在哪里呢?可以點擊最新數(shù)據(jù),把我們的主機群組添加進來,應(yīng)用一下,就可以看到下面的狀態(tài)了:


可以看到,我們還有一個圖形頁面,點進去則可以看圖形的分布:

然后我們發(fā)現(xiàn)切換中文之后,下面有些字體亂碼

事實上,我們關(guān)注的指標(biāo)有很多種,我們一一添加進來即可。
剛剛我們定義的監(jiān)控項是很簡單的,指定一個key即可,但是有些監(jiān)控項是帶有參數(shù)的,這樣一來,我們的監(jiān)控項就有更多的靈活性。接下來,我們來簡單說明一個需要帶參數(shù)的監(jiān)控項:
⑤ 定義一個帶參數(shù)的監(jiān)控項
這一次我們定義的監(jiān)控項,不綁定模板,不指定應(yīng)用集,也就是說它只是針對某一個主機設(shè)定的監(jiān)控項



圖中的[]就是需要參數(shù)的意思,里面的值即為參數(shù),帶<>為不可省略的。我們就以這個例子來說明:
if表示是接口名;<mode>表示是那種模式,包括但不限于:packets(包)、bytes(字節(jié))、errors(錯誤)、dropped(丟包)、overuns等等(上述內(nèi)容通過ifconfig查看)
我們來設(shè)置一下這個監(jiān)控值:


同樣的,我們也可以通過命令行來查看:
[root@zabbix-server ~]# zabbix_get -s 192.168.94.143 -p 10050 -k "net.if.in[ens32,packets]"
1739
我們發(fā)現(xiàn)agent2也亮了起來

接著我們?nèi)ゲ榭匆幌聢D形


⑥ 快速定義類似指標(biāo)
如果我們想要定義一個類似的指標(biāo),我們可以直接選擇克隆,然后簡單的修改一點點參數(shù)即可。
就以我們剛剛定義的net.if.in[ens33,packets]為例,如果我們想要在定義一個out的進行如下操作即可:

只需要修改這兩個地方就可以


然后點擊添加,就可以看到列表中就有了我們剛才添加的監(jiān)控項

我們來到 檢測中 ---> 最新數(shù)據(jù),可以看到,我們定義的監(jiān)控項都已經(jīng)有值了:


⑦ 刪除監(jiān)控項
如果有一個監(jiān)控項,我們用不上了,就可以刪除掉。但是如果你直接刪除的話,默認(rèn)數(shù)據(jù)是會留下的,所以我們要先清除數(shù)據(jù),然后再刪除,具體操作步驟如下:

⑧ 監(jiān)控項存儲的值
對于監(jiān)控項存儲的值,老一點的版本只有以下三種方式:
- As is:不對數(shù)據(jù)做任何處理(存儲的為原始值)
- Delta:(simple change)(變化),本次采樣減去前一次采樣的值的結(jié)果
- Delta:(speed per second)(速率),本次采樣減去前一次采樣的值,再除以經(jīng)過的時長;
而在3.4版本以后有了更多的表現(xiàn)形式:

4)觸發(fā)器(trigger)
① 簡介
當(dāng)我們的采集的值定義完了以后,就可以來定義觸發(fā)器了。
我們觸發(fā)器的定義是:界定某特定的item采集到的數(shù)據(jù)的非合理區(qū)間或非合理狀態(tài)。通常為邏輯表達式。
邏輯表達式(閾值):通常用于定義數(shù)據(jù)的不合理區(qū)間,其結(jié)果如下:
OK(不符合條件):正常狀態(tài) --> 較老的zabbix版本,其為FALSE;
PROBLEM(符合條件):非正常狀態(tài) --> 較老的zabbix版本,其為TRUE;
一般,我們評定采樣數(shù)值是否為合理區(qū)間的比較穩(wěn)妥的方法是——根據(jù)最后N次的平均值來判定結(jié)果;這個最后N次通常有兩種定義方式:
- 最近N分鐘所得結(jié)果的平均值
- 最近N次所得結(jié)果的平均值
而且,我們的觸發(fā)器存在可調(diào)用的函數(shù):
nodata() #是否采集到數(shù)據(jù),采集不到則為異常
last() #最近幾次的平均值
date()
time()
now()
dayofmonth()
...
注:能用數(shù)值保存的就不要使用字符串
② 觸發(fā)器表達式
基本的觸發(fā)器表達式格式如下所示
{<server>:<key>.<function>(<parameter>)}<operator><constant>
- server:主機名稱;
- key:主機上關(guān)系的相應(yīng)監(jiān)控項的key;
- function:評估采集到的數(shù)據(jù)是否在合理范圍內(nèi)時所使用的函數(shù),其評估過程可以根據(jù)采取的數(shù)據(jù)、當(dāng)前時間及其它因素進行;
- 目前,觸發(fā)器所支持的函數(shù)有avg、count、change、date、dayofweek、delta、diff、iregexp、last、max、min、nodata、now、sum等
- parameter:函數(shù)參數(shù);大多數(shù)數(shù)值函數(shù)可以接受秒數(shù)為其參數(shù),而如果在數(shù)值參數(shù)之前使用“#”做為前綴,則表示為最近幾次的取值,如sum(300)表示300秒內(nèi)所有取值之和,而sum(#10)則表示最近10次取值之和;
- 此外,avg、count、last、min和max還支持使用第二個參數(shù),用于完 成時間限定;例如,max(1h,7d)將返回一周之前的最大值;
表達式所支持的運算符及其功能如下圖所示:

③ 定義一個觸發(fā)器
我們可以查看一下,agent1的cpu_status監(jiān)控項,并以其為標(biāo)準(zhǔn)確定我們的非正常的值:

圖中我們可以看出,我們的最大值為105,最小值為47,平均值為58。這樣的話,我們可以定義110以上的都是非正常的值,這里為了測試定義為50。
下面我們來定義一個觸發(fā)器:
進入:配置 ---> 主機 ---> agent1 ---> 觸發(fā)器 ---> 創(chuàng)建觸發(fā)器


觸發(fā)表達式設(shè)置


恢復(fù)表達式設(shè)置

生成完畢后,我們就點擊頁面下方的添加,即成功定義了一個觸發(fā)器,同時頁面自動跳轉(zhuǎn):


看見儀表盤已經(jīng)有了警告信息

然后我們?nèi)タ匆幌挛覀儎倓偠x了觸發(fā)器的那個監(jiān)控項:

我們可以看出,這個里面就有了一根線,就是我們剛剛定義的值,超過線的即為異常狀態(tài),看起來非常直觀。
但是,現(xiàn)在即使超過了這根線,也僅僅會產(chǎn)生一個觸發(fā)器事件而不會做其他任何事。因此,我們就需要去定義一個動作(action)。
④ 觸發(fā)器的依賴關(guān)系
我們的觸發(fā)器彼此之間可能會存在依賴關(guān)系的,一旦某一個觸發(fā)器被觸發(fā)了,那么依賴這個觸發(fā)器的其余觸發(fā)器都不需要再報警?! ∥覀兛梢詠碓囅胍幌逻@樣的場景:
我們的多臺主機是通過交換機的網(wǎng)絡(luò)連接線來實現(xiàn)被監(jiān)控的。如果交換機出了故障,我們的主機自然也無法繼續(xù)被監(jiān)控,如果此時,我們的所有主機統(tǒng)統(tǒng)報警……想想也是一件很可怕的事情。要解決這樣的問題,就是定義觸發(fā)器之間的依賴關(guān)系,當(dāng)交換機掛掉,只它自己報警就可以了,其余的主機就不需要在報警了。這樣,也更易于我們判斷真正故障所在。
注意:目前zabbix不能夠直接定義主機間的依賴關(guān)系,其依賴關(guān)系僅能通過觸發(fā)器來定義。
我們來簡單舉一個例子,示范一下如何定義一個依賴關(guān)系:
打開任意一個觸發(fā)器,上面就有依賴關(guān)系,我們進行定義即可:

觸發(fā)器可以有多級依賴關(guān)系,比如我們看下面的例子:

