02 . Zabbix配置監控項及聚合圖形
阿新 • • 發佈:2020-06-09
#### 安裝Zabbix Agent監控本機
##### 安裝agent軟體
`與server端不同,Agent只需安裝zabbix-agent包`
```shell
cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/$basearch/
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=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
yum -y install zabbix-agent zabbix-get
```
##### 配置Agent並啟動
```shell
vim /etc/zabbix/zabbix_agentd.conf
Server=39.108.140.0 # 被動模式 zabbix-server-ip
ServerActive=39.108.140.0 # 主動模式 zabbix-server-ip
Hostname=You-Men # Agent端主機名,最終顯示在監控頁面上的名字
UnsafeUserParameters=1 # 是否限制使用者自定義keys使用特殊字元
systemctl restart zabbix-agent
netstat -antp|grep agent
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 3898/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 3898/zabbix_agentd
```
##### 配置snmp(可以不做)
> zabbix除了可以使用agent獲取資料之外,還可以通過snmp獲取資料,為了能夠讓zabbix監控更多的資訊,將本機的snmp功能啟動起來.
```shell
yum -y install net-snmp net-snmp-utils
vim /etc/snmp/snmpd.conf
com2sec notConfigUser 39.108.140.0 public
access notConfigGroup "" any noauth exact all none none
view all included .1 80
systemctl restart snmpd && systemctl enabel snmpd
ss -anup |grep snmp # 161埠,udp協議
# 測試snmp協議工作是否正常
# snmpwalk -v 1 -c public 39.108.140.0 .1.3.6
# 使用v1版本,共同體為public,來對192.168.0.1的.1.3.6分支進行walk。
snmpwalk -v 2c -c public 39.108.140.0
# 使用v2c版本,共同體為public,對39.108.140.0進行walk。
# -v 顯示當前SNMPWALK命令列版本.
# -
# 獲取cisco裝置39.108.140.0的介面型別
```
> 接下來我們到web介面上配置如何監控本地主機,我們看到介面上是127.0.0.1,但是我們配置檔案寫的是39.108.140.0,我們讓這兩個IP一致.點選3進去然後修改.
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214606965-1846809632.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214615433-1659241096.png)
`更新完後,跳到下面頁面,稍等一會,重新載入一下頁面就是可用性為綠色了`
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214623971-1378789306.png)
> **至此,監控本地主機就完成了,如果想看下監控本地主機的網絡卡流量就做下面圖2步驟.滑鼠依次根據數字挨個點,如果想要監控項是中文的話,可以做Zabbix故障例一,但是4.4版本較以前版本有所改善,監控項不是亂碼,而是英文.**
>
> 如果想要將這種亂碼換成正常中文
```shell
如果是windows在C盤搜尋simkai.tff中文楷體,拷貝/上傳到伺服器,然後cp到zabbix的字型目錄
3.*版本:
cp /root/simkai.ttf /usr/share/zabbix/fonts/
# 不同的安裝方式,路徑會有所不同,所以可以直接find / -type d -type fonts找到類似的資料夾,那就是了
# 注意字型許可權問題
vim /usr/share/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'simkai');
define('ZBX_FONT_NAME', 'simkai');
```
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214635735-1401906950.png)
#### Zabbix監控遠端主機
> 如果遠端主機安裝不上zabbix-agent,可以通過裝的上的zabbix-agent的機器把包傳過去
```shell
yum -y instlal yum-utils
# 下載到指定目錄
yum install zabbix-agent -y --downloadonly --downloaddir=/root
1.安裝zabbix agent
# 方法一(國外源zabbix好像下載不下來包了,用上面的源):
# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
yum clean all
yum -y install zabbix-agent
# 方法二:(使用別的機器傳過來的zabbix-agent包直接rpm安裝即可)
rpm -ivh zabbix-agent-4.4.1-1.el7.x86_64.rpm
# 修改zabbix-agent配置並啟動服務
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.244.144
Server=192.168.244.144 //監控主機IP地址
Hostname=agent1.zabbix.com //被監控主機到監控主機的名字
UnsafeUserParameters=1
systemctl start zabbix-agent
ss -antp |grep 10050
# 接下來我們到web端進行操作
# 為了服務方便管理和易於檢視。
# 監控系統中往往根據被監控的主機角色或其他屬性將同類主機劃分到同一個主機組中.
```
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214647538-863150153.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214655360-1914210879.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214702977-135809002.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214713931-1570846742.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214722151-1459979413.png)
> 如果等上一段時間,可用性哪裡沒有紅色警告,就說明這臺主機被新增進來了,但是因為沒有掛載模板和建立監控項,所以我們接下來嘗試著掛載一下模板,然後再去建立監控項.
>
>
>
> 我們到agent端裝一個nginx,然後去zabbix的web端找到此模板並掛載.
```shell
yum -y install nginx
systemctl start nginx
```
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214734664-1959093870.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214744461-1011002243.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214754734-1480698268.png)
##### 測試監控主機
`接下來我們用瀏覽器或者elinks訪問一下nginx,產生一些資料,然後去zabbix上檢視變化`
```shell
elinks --dump 116.196.83.113
```
> 我們以後自定義Key監控項時,先看看最新資料有沒有資料過來,如果資料都不會過來,就別提圖形觸發器報警什麼了.
>
>
>
> 至此,新增本地主機,遠端主機,建立主機組,掛載模板就已經完了
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214810473-516292627.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214817282-842354380.png)
#### Zabbix監控項
##### **監控項(Items)簡介**
> 監控項是Zabbix中獲得資料的基礎,沒有監控項,就沒有資料——因為一個主機只有監控項定義了單一的指標或者需要獲得的資料,監控項適用於採集資料的,多個同類的監控項可以定義成一個應用集,如,mysql增刪改查以及每秒鐘的讀表,寫錶速度可以寫成一個Mysql應用集.
`對於監控項的示例,需要輸入以下必要的資訊`
**名稱**
> 輸入CPU Load作為值,在列表中和其他地方,都會顯示這個值作為監控項名稱.
**值**
> 手動輸入system.cpu.load作為值,這是監控項的一個技術上的名稱,用於識別獲取資訊的型別,這個特定值需要是Zabbix Agent預定義值的一種.
> https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/zabbix_agent # 此網址就是zabbix官網的預定義值.
**資訊型別**
> 在此處選擇Numeric(float),這個屬性定義了獲得資料的格式
> 你也需要減少監控項歷史保留的天數,7或者14天,對於資料庫而言,最佳實踐是避免資料庫保留過多的歷史資料.
> 我們選擇了資料型別後,暫時保持其他選項的預設值.
> 1> 磁碟容量Units一般為B
> 2> 網絡卡流量單位為bps
> 3> Mysql每秒訪問量qps,例如MySQL每秒select,insert Mysql serlect
**點選新增,新的監控項就出現在監控項列表中了**
**檢視資料**
> 當一個監控項定義完成後,你可能好奇他具體獲取了什麼值,前往監控首頁,點選最新資料,選擇相應的主機.看資料能不能過來以及是不是自己想要的型別.
**圖表**
> 當監控項運行了一段時間後,可以檢視視覺化圖表,如果沒有可以自己建立一個,下面會有詳細介紹
**常用監控項**
```shell
1.伺服器網路介面進出流量和總流量
net.if.in[if,]
net.if.out[if,]
net.if.total[if,]
2.伺服器啟動分割槽剩餘空間
vfs.fs.size[fs,]
vfs.fs.size[/boot,free]
3.監控虛擬機器記憶體
vm.memory.size[]
vm.memory.size[total
vm.memory.size[free]
vm.memory.size[wired]
4.伺服器服務狀態
net.tcp.listen[port]
net.tcp.port[,port]
net.tcp.service[service,,]
net.tcp.service.perf[service,,]
5.伺服器程序數量
proc.num[,,,]
zabbix_get -s 39.108.140.0 -k proc.num
121
zabbix_get -s 39.108.140.0 -k proc.num[,,run]
3
zabbix_get -s 39.108.140.0 -k proc.num[,,sleep]
118
6.伺服器CPU狀態(浮點型,無單位)
system.cpu.intr
system.cpu.load[,]
system.cpu.num
system.cpu.switches
system.cpu.util[,,]
zabbix_get -s 39.108.140.0 -k system.cpu.load[all,avg1]
0.000000
zabbix_get -s 39.108.140.0 -k system.cpu.load[,avg5]
0.010000
7.磁碟IO情況
vfs.dev.read[device,,]
vfs.dev.write[device,,]
zabbix_get -s 39.108.140.0 -k vfs.dev.read[/dev/vda1]
8.監控檔案修改
vfs.file.chsum[file] # 如監控/etc/passwd ,/etc/group 檔案從而知道是否有新使用者建立
vfs.file.md5sum[file]
vfs.file.size[file] # 通常用來監控日誌
vfs.fs.size[fs,]
9.磁碟總和.
```
##### 監控網絡卡流量
> 我們先建立一個應用集,這樣的話之後建立的網絡卡上傳,下載,總流量不會顯的很亂,都在一個Network應用集裡面,而且能匯出成xml檔案,放到其他的zabbxi主機上能直接用.
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214852299-79080305.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214902788-352444819.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214908585-1241643952.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214916638-1255047160.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214927249-298698464.png)
> **我們此刻做的建立監控項是利用zabbix安裝好自帶的監控項,跟自定義Key差不多,都是寫一個監控指令碼然後傳參,每一個鍵值相當於一個監控指令碼**
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214936898-1527757055.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214944884-1697183668.png)
`接下來我們檢測---> 主機群組裡面去檢視下最新資料,我們可以從下圖看到是有資料的`
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608214956287-240449739.png)
> 下行寬頻和上行寬頻.
>
>
>
> 下載就是in,下行寬頻,你發出去的就是out,作為一個伺服器來說上行寬頻肯定要高,在家裡就是下行寬頻高,對伺服器來說他需要接收很少的資料包,回覆很多的資料包,而在家裡我們是發出去一個很小的資料包,返回來整個網頁.
>
>
>
> 接下來我們再去建立一個網絡卡輸出流量,然後將他們做成一個圖示,以圖形化展示出來
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215012044-1001826735.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215018609-440336374.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215027197-1077806321.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215033833-1808867410.png)
> **接下來我們再去監測裡面去檢視最新資料,可以養成這個習慣,因為最新資料過來了才是說明當中資料流向沒有問題,如果資料都沒有過來你去建立圖形,圖表說沒有資料,你覺得得等一會,浪費時間影響效率**
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215045476-2111276929.png)
`可以看到,兩個監控項都是有資料的,接下來我們去建立圖形`
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215052763-984435690.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215105150-2043982491.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215113834-1000666285.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215120980-742674691.png)
`接下來我們去檢視監測 ---> 圖形,選擇相應群組,相應的主機及建立的圖形`
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215141891-146908042.png)
> **這臺主機可以裝一個nginx,然後上傳一張大一點圖片到網站根目錄,然後訪問,再檢視網路波動圖.**
>
>
>
> 或者我們直接上傳一個大點的rpm、tar包到其他主機.這樣看著明顯
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215238134-962698982.png)
##### 監控CPU
`跟剛才一樣,建立一個CPU應用集,方便管理歸納`
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215250941-477136212.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215257316-1625335804.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215303526-14426127.png)
`接下來我們建立應用集的監控項,cpuintr,cpu中斷數`
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215312451-822336260.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215321217-1170055747.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215328331-1772285555.png)
> 接下來我們建立一個cpu每隔一分鐘的負載監控項
> 通過下圖,我們可以看到,每個監控項都是有資料過來的,接下來我們去建立圖形
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215340572-755577943.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215347166-2001495978.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215357668-2145111328.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215408011-927824982.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215415252-2141004982.png)
`我們可以看到,資料是可以實時轉換成圖示的,接下來我們去做一個聚合圖形`
`建立聚合圖形`
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215427129-1260742864.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215433699-545092636.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215443379-1426260953.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215449789-396739189.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215457255-653492865.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215503457-1133947166.png)
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215509044-761032816.png)
`至此,我們第一個建構函式完成,另外一個建構函式同理,此處就不寫了,直接看結果圖.`
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215518672-474366801.png)
> **建立系統定義好的監控項,跟上面兩個都差不多,多做做自然就會了,如果不習慣使用官方定義好的key,我們可以根據公司環境自己寫指令碼自定義key,此章完結.**
![](https://img2020.cnblogs.com/blog/1871335/202006/1871335-20200608215531824-6076389