zabbix 基礎 第1章 關於zabbix 1.1 為什麼要使用監控 1.對系統不間斷實時監控2.實時反饋系統當前狀態3.保證服務可靠性安全性4.保證業務持續穩定運行 1.2 如何進行監控 比如我們需要監控磁碟的使用率1.如何查看磁碟使用率df h2.監控磁碟的那些指標block、inode3.如 ...
zabbix-基礎
第1章 關於zabbix
1.1 為什麼要使用監控
1.對系統不間斷實時監控
2.實時反饋系統當前狀態
3.保證服務可靠性安全性
4.保證業務持續穩定運行
1.2 如何進行監控
比如我們需要監控磁碟的使用率
1.如何查看磁碟使用率df -h
2.監控磁碟的那些指標block、inode
3.如何獲取具體的信息df -h|awk'//$/{print $(NF-1)}'
4.獲取的數值到達多少報警 80%
1.3 流行的監控工具
1.cacti、Nagios、Zabbix、
2.Lepus(天兔)資料庫監控系統
3.Open-Falcon 小米
4.Prometheus(普羅米修斯,Docker、K8s)
1.4 到一家新公司,如何入手監控
1.硬體監控 路由器、交換機、防火牆
2.系統監控 CPU、記憶體、磁碟、網路、進程、TCP
3.服務監控 nginx、php、tomcat、redis、memcache、mysql
4.WEB監控 請求時間、響應時間、載入時間、
5.日誌監控 ELk(收集、存儲、分析、展示)日誌易
6.安全監控 Firewalld、WAF(Nginx+lua)、安全寶、牛盾雲、安全狗
7.網路監控 smokeping 多機房
8.業務監控
第2章 zabbix部署
2.1 基礎環境劃分
主機名 | IP地址 | 功能 |
---|---|---|
zabbix | 172.16.1.71 | zabbix服務端 |
web01 | 172.16.1.7 | zabbix客戶端 nginx |
web02 | 172.16.1.8 | zabbix客戶端 nginx |
db01 | 172.16.1.51 | 資料庫 |
2.2 安裝zabbix
Zabbix-Server,是一個C/S和B/S結構
1.安裝Zabbix-server
[root@zabbix ~]# rpm -ivhhttps://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@zabbix ~]# yum install -yzabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-server
2.創建Zabbix資料庫以及用戶
#啟動資料庫,加入開機自啟
[root@zabbix ~]# systemctl enable mariadb
[root@zabbix ~]# systemctl start mariadb
創建資料庫並授權
[root@zabbix ~]# mysql -uroot -p
MariaDB [(none)]> create database zabbixcharacter set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.*to zabbix@localhost identified by 'zabbix';
MariaDB [(none)]> exit
3.導入基礎架構和數據
[root@zabbix ~]# cd/usr/share/doc/zabbix-server-mysql-3.4.14/
進入這個目錄可能不報錯 目錄不存在 大多是因為版本不同 導致目錄名稱改變
[root@zabbix zabbix-server-mysql-3.4.14]# ll
total 2112
-rw-r--r-- 1 root root 98 Sep 14 04:04 AUTHORS
-rw-r--r-- 1 root root 857849 Sep 14 04:04 ChangeLog
-rw-r--r-- 1 root root 17990 Sep 14 04:04 COPYING
-rw-r--r-- 1 root root 1267039 Sep 14 04:09create.sql.gz
-rw-r--r-- 1 root root 52 Sep 14 04:04 NEWS
-rw-r--r-- 1 root root 188 Sep 14 04:04 README
[root@zabbix zabbix-server-mysql-3.4.14]# zcat create.sql.gz |mysql -uroot zabbix
[root@zabbix zabbix-server-mysql-3.4.14]# mysql-uroot -p 進入資料庫確認一下是否導入成功
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> show tables;
140 rows in set (0.00 sec) #因內容過多此處只粘貼總數
4.啟動Zabbix Server進程,在zabbix_server.conf中編輯資料庫配置
[root@m01 ~]# vi/etc/zabbix/zabbix_server.conf #以下四處需要更改
以下四處大部分起初都被註釋 應該把註釋取消 以下是需要修改的內容所在行
DBHost=localhost #91行
DBName=zabbix #101行
DBUser=zabbix #117行
DBPassword=zabbix #126行
# 啟動ZabbixServer進程
[root@zabbix ~]# systemctl enable zabbix-server
[root@zabbix ~]# systemctl start zabbix-server
5.編輯Zabbix前端的PHP配置,Zabbix前端的Apache配置文件位於 /etc/httpd/conf.d/zabbix.conf。一些PHP設置已經完成了配置。
[root@zabbix ~]# vim /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
# php_value date.timezone Asia/Shanghai #20行
依據所在時區,取消 “date.timezone” 設置的註釋,並正確配置(Asia/Shanghai)。在配置文件更改後,需要重啟ApacheWeb伺服器。
6.啟動httpd服務
[root@zabbix ~]#systemctl enable httpd
[root@zabbix ~]#systemctl start httpd
2.3 網頁配置zabbix-web界面
配置完以上內容後 網頁輸入10.0.0.71/zabbix進入zabbix安裝界面、
歡迎界面, 直接下一步即可
檢查依賴項是否不存在任何異常
配置zabbixWeb
連接資料庫(如果直接選用遠程資料庫 可以在此處修改)
配置ZabbixServer
伺服器的主機名或主機IP地址和埠號, 以及安裝的名稱(可選)
安裝前摘要,檢查配置參數。如果一切都正確,請按"下一步"按鈕或"後退"按鈕來更改配置參數。
提示已成功地安裝了Zabbix
前端。配置文件/etc/zabbix/web/zabbix.conf.php
被創建。
至此Zabbix已經安裝完畢
預設登陸ZabbixWeb的用戶名Admin
,密碼zabbix
第3章 zabbix-web界面優化
3.1 修改為中文字體
點擊update後即為中文字體
(修改為中文字體後可能有些界面會產生亂碼 我們還應該修改下字元集,防止產生亂碼)
3.2 調整字元集
1.先搜索zabbix-web包對應字元存放的目錄
[root@zabbix ~]# rpm -ql zabbix-web|grep fonts
/usr/share/zabbix/fonts
2.進入對應字體目錄,發現字體是一個軟鏈接
[root@zabbix ~]# cd /usr/share/zabbix/fonts/
[root@zabbix fonts]# ll
lrwxrwxrwx 1 root root 33 Oct 11 03:20graphfont.ttf -> /etc/alternatives/zabbix-web-font
3.進入軟鏈接對應的目錄,發現還是軟鏈接
[root@zabbix fonts]# cd /etc/alternatives/
[root@zabbix alternatives]# ll
lrwxrwxrwx1 root root 38 Oct 11 03:20 zabbix-web-font ->/usr/share/fonts/dejavu/DejaVuSans.ttf
4.進入最終字體存放的目錄
[root@zabbix alternatives]# cd/usr/share/fonts/dejavu/
5.將預設字體進行改名
[root@zabbix-server alternatives]# mvDejaVuSans.ttf DejaVuSans.ttf_bak
6.上傳自己準備好的字體,字體可以通過windows電腦獲取
(c:\windows\fonts)
7.最後將新上傳的字體進行改名
[root@zabbix dejavu]# mv simkai.ttf DejaVuSans.ttf
3.3 調整web界面視窗位置
該操作可以不執行
為了以後方便我們觀察 所以我們修改下 web界面的視窗安排
圖片所示是預設的 點擊編輯儀錶盤 便可以拖動各個小視窗
將如下圖四欄 往上提即可然後保存
目的是方便日後查看
第4章 監控內容部署
4.1 配置一臺主機
1. 在客戶端安裝zabbix-agent
[root@web01 ~]# rpm -ivhhttps://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.12-1.el7.x86_64.rpm
2.配置修改/etc/zabbix/zabbix_agentd.conf內容
[root@web03 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.16.1.71 #97行 指向Zabbix-Server
Timeout=30 #238行 此處預設是註釋3或4 可以取消註釋修改成30
3.啟動服務並檢查
[root@web01 ~]# systemctl start zabbix-agent
[root@web01 ~]# systemctl enable zabbix-agent
[root@web01 ~]# netstat -lntp
Active Internet connections (only servers)
tcp0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 981/zabbix_agentd
以上確認配置完成後 進入web界面網頁配置
點擊創建主機
配置完以上內容後 不要直接點擊添加
點擊模板->選擇連接指示器->選擇->搜索Linux->點擊小按鈕添加->最後添加
Template OS Linux 是必添加的監控
添加完成後 點擊主機(如果等幾分鐘 顯示ZBX則為添加成功 沒有問題)
4.2 自定義監控TCP
TCP的12種狀態
tcp[ESTABLISHED]
tcp[SYN_SENT]
tcp[SYN_RECV]
tcp[FIN_WAIT1]
tcp[FIN_WAIT2]
tcp[TIME_WAIT]
tcp[CLOSE]
tcp[CLOSE_WAIT]
tcp[LAST_ACK]
tcp[LISTEN]
tcp[CLOSING]
tcp[UNKNOWN]
1.在對應的主機上編寫自定義監控TCP的11中狀態[在本地進行取值,web01]
[root@web01 ~]# vim/etc/zabbix/zabbix_agentd.d/tcp.conf
UserParameter=tcp[*],netstat -ntal | awk'NR>1{print $NF}'| grep -i "$1" | wc -l
2.在server上使用zabbix_get獲取對應主機的值
[root@zabbix ~]# yum install zabbix-get -y
[root@zabbix ~]# zabbix_get -s 172.16.1.7 -ktcp[estab]
確認無誤後再添加
網頁配置內容
先添加一個模板 在模板里創建監控項這樣以後就不用再次創建
因為模板支持導出導入
創建完模板 點擊監控項
點擊創建監控項
然後開始創建
創建時 名稱只是讓人看的鍵值是最關鍵的 不能更改
添加完一個後 就可以使用這個來克隆其他的
需要註意的是 要確保每個鍵值都正常
克隆完後的 每個都要啟用預設創建完就是啟用的
添加完成後 我們要把模板加入到web01這台主機上進行監控
按照一開始添加模板 將TCP這個模板加入即可
檢查是否成功
如果有數據更新即為成功
4.3 自定義監控記憶體
1.在Agent的/etc/zabbix/zabbix_agentd.d/*.conf自定義監控項, 使用UserParameter=KEY,shell command,目的是便於zabbixServer獲取ZabbixAgent對應監控項的數據
[root@web01 zabbix_agentd.d]# vim mem.conf
UserParameter=Mem.Num,free -m |awk '/^Mem/{print$NF/$2*100}'
UserParameter=Swap.Num,free -m|awk '/^Swap/{print$3/$2*100}'
- 使用zabbix_agentd -p | grep KEY,如果獲取到值則正常
[root@web01 zabbix_agentd.d]# zabbix_agentd -p|grep-i Mem_Num
Mem_Num[t|38.501]
- 在ZabbixServer端測試獲取ZabbixAgent端自定義的監控項是否正常zabbix_get -s IP_addr -k KEY
[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k Mem.Num
38.7064
然後開始網頁配置
將 Swap.Num 和 Mem.Num 都添加上
添加完成後 查看最新數據
配置完成
第5章 配置觸發器
5.1 配置單條件觸發器
5.2 多條件觸發器
記憶體使用剩餘不足百分之30且swap使用超過1%就報警
檢查
5.3 登錄用戶超過兩個人就報警
第6章 配置報警
6.1 配置web界面報警
6.2 配置郵件報警
將動作里的觸發器的狀態設置為已啟動(點一下已停止即可)
註意界面右上角 選擇為觸發器不然顯示內容不同
6.2.1 更改報警郵件信息
然後我們點擊名稱 進入配置界面(更改報警郵件發送的信息)
將預設的信息刪除 覆蓋掉
故障!!!: {TRIGGER.NAME}
報警主機:{HOST.NAME1}
報警服務: {ITEM.NAME1}
報警Key1: {ITEM.KEY1}:{ITEM.VALUE1}
報警Key2: {ITEM.KEY2}:{ITEM.VALUE2}
嚴重級別: {TRIGGER.SEVERITY}
恢復: {TRIGGER.NAME}
恢復主機:{HOST.NAME1}
恢復服務: {ITEM.NAME1}
恢復Key1:{ITEM.KEY1}:{ITEM.VALUE1}
恢復Key2: {ITEM.KEY2}:{ITEM.VALUE2}
恢復的內容也要修改
6.2.2 修改報警媒介類型
6.2.3 添加報警媒介
6.3 企業微信報警
1.準備微信報警腳本, 腳本怎麼寫->腳本放在哪【相當於配置好了發件人】
[root@zabbix ~]# yum install python-pip -y
[root@zabbix ~]# pip install requests
[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts
報警腳本內容
[root@zabbix alertscripts]# vim weixin.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: bgx
#date: 2018
#comment: zabbix接入微信報警腳本
import requests
import sys
import os
import json
import logging
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: bgx
#date: 2018
#comment: zabbix接入微信報警腳本
import requests
import sys
import os
import json
import logging
logging.basicConfig(level = logging.DEBUG, format= '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/tmp','weixin.log'),
filemode = 'a')
corpid='wwabcf092986138a4f'
appsecret='47r80t2cfYbQfrOs8mRXUx84H44RdFTJ9BMvVaeQUVQ'
agentid=1000002
#獲取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid='+ corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
#發送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='+ accesstoken
touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n"+sys.argv[3]
params={
"touser": touser,
#"toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
req=requests.post(msgsend_url,data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' +subject + ';;message:' + message)
給腳本增加執行許可權並測試
[root@zabbix alertscripts]# chmod +x weixin.py
[root@zabbix alertscripts]# ./weixin.py nfsnobodySubject Messages #測試
[root@zabbix alertscripts]# rm -f /tmp/weixin.log #刪除這個文件不然會報錯
開始web界面配置
下圖需要增加的內容(註意不要有空格 不然會報錯 很難發現)
{ALERT.SENDTO}#發給誰
{ALERT.SUBJECT}#發送的主題
{ALERT.MESSAGE}#發送的內容
腳本名稱 直接填寫腳本的名稱即可
但要註意 腳本必須放在server端的/usr/lib/zabbix/alertscripts目錄下
添加完報警媒介類型後 在報警媒介新增 微信的報警資料 (添加完後不要忘記點擊更新)
6.4 配置報警升級
先創建兩個用戶組
增加報警媒介
修改用戶的許可權 只有管理員才能接收信息
點擊配置--動作
將已經存在的一項更新一下
然後添加一個新的
添加完成後 點擊更新此處只添加了兩個用戶 三個用戶 依次往下即可
第7章 快速配置新主機
7.1 配置zabbix本地
server端是zabbix本地伺服器 配置和其他伺服器略有不同
下載zabbix-agent
[root@zabbix ~]# rpm -ivhhttps://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.14-1.el7.x86_64.rpm
[root@zabbix ~]# vim/etc/zabbix/zabbix_agentd.conf
Timeout=30 #238行 把這個取消註釋 改成30即可 server端的 agent不需要修改server
要註意的是 server端要使用zabbix-get測試 -s 後的地址要寫127.0.0.1
[root@zabbix ~]# systemctl enablezabbix-agent.service
[root@zabbix ~]# systemctl startzabbix-agent.service
網頁配置(server端有zabbix配置好的 只需要啟用即可)
server端有已經配好的兩個模板 只需要把TCP和記憶體的模板套用即可
(還需要把agent的conf文件從web伺服器拉過來)
把agent里的conf配置文件都拉過來
[root@zabbix ~]# scp [email protected]:/etc/zabbix/zabbix_agentd.d/* /etc/zabbix/zabbix_agentd.d/
重啟一下agent服務
[root@zabbix ~]# systemctl restartzabbix-agent.service
7.2 其他agent端
以db01配置為例 (其實除server端 其他配置除了IP地址都是一樣的)
[root@db01 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.14-1.el7.x86_64.rpm
修改agent配置文件 server指向的IP地址是必須要修改的
[root@db01 ~]# vim /etc/zabbix/zabbix_agentd.conf #以下是修改後的內容
Server=172.16.1.71
Timeout=30
啟動服務並加入開機自啟動
[root@db01 ~]# systemctl enablezabbix-agent.service
[root@db01 ~]# systemctl startzabbix-agent.service
然後進入網頁添加
添加模板 直接套用 (這就是創建模板的好處之一 可以直接套用)
把配置文件拉過來 然後重啟agent
[root@db01 ~]# scp [email protected]:/etc/zabbix/zabbix_agentd.d/* /etc/zabbix/zabbix_agentd.d/
[root@db01 ~]# systemctl restartzabbix-agent.service
第8章 自定義圖形配置
8.1 聚合圖形配置
聚合圖形有助於觀察
點擊名稱 可以進入編輯或查看
點擊編輯 增加圖片
此處就像是表格 增加行和列 點擊更改就可以增加圖片
點擊圖片可以選擇圖片 右上角可以選擇群組(群組就是主機)
下圖就是增加完的內容 修改已存在的圖片也是點擊更改新增也一樣
8.2 幻燈片配置
幻燈片一般是在聚合圖形的基礎上配置
將聚合圖形改為幻燈片即可編輯幻燈片
如果只有一個聚合圖形 是不需要幻燈片的
點擊添加即可 延遲時間就是圖片更改時間
8.3 安裝圖形樹
1.安裝graphtree
[root@zabbix ~]# cd /usr/share/zabbix
[root@zabbix zabbix]# wget https://raw.githubusercontent.com/OneOaaS/graphtrees/master/graphtree3.0.4.patch
2.導入補丁包
[root@zabbix zabbix]# yum install -y patch
[root@zabbix zabbix]# patch -Np0 <graphtree3.0.4.patch
[root@zabbix zabbix]# chown -R apache.apacheoneoaas
3.新增Apache配置文件
[root@zabbix zabbix]# vim/etc/httpd/conf.d/zabbix.conf
Alias /zabbix /usr/share/zabbix
Alias /oneoaas /usr/share/zabbix/oneoaas
4.重啟httpd服務
[root@zabbix zabbix]# systemctl restart httpd
第9章 拆分資料庫
9.1 拆分配置過程
LAP+MySQL架構(修改如下兩個文件中連接資料庫的配置信息)
將zabbix資料庫拆分到db01上
要修改以下兩個文件的內容
[root@zabbix ~]# ll /etc/zabbix/zabbix_server.conf
[root@zabbix ~]# ll /etc/zabbix/web/zabbix.conf.php
1.在新的資料庫上創建zabbix庫
[root@db01 ~]# mysql -uroot -pNfsnobody123.com
mysql> create database zabbix character setutf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* tozabbix@'%' identified by 'Nfsnobody123.com';
#到此處會提示許可權過大 不用理會
2.在舊的zabbix伺服器上備份資料庫文件,然後倒至新的資料庫
[root@zabbix ~]# mysqldump -uroot \
--databases zabbix \
--single-transaction > `date +%F%H`-zabbix.sql
[root@zabbix ~]# cat 2018-08-2017-zabbix.sql |mysql -h10.0.0.51 -uzabbix -pNfsnobody123.com zabbix
3.修改zabbixServer的資料庫連接信息
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf 這是修改後的內容
DBHost=172.16.1.51
DBName=zabbix
DBUser=zabbix
DBPassword=Nfsnobody123.com
[root@m01 ~]# systemctl restart zabbix-server 修改後需要重啟
4.修改zabbixWeb連接資料庫信息
[root@m01 ~]# vim /etc/zabbix/web/zabbix.conf.php 修改後如下圖
$DB['TYPE']= 'MYSQL';
$DB['SERVER']= '172.16.1.51';
$DB['PORT']= '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'Nfsnobody123.com';
[root@m01 ~]# systemctl restart httpd
9.2 錯誤案例
如出現如下錯誤:請檢查資料庫是否允許遠程連接,對應的賬戶和密碼是否配置錯誤
[root@m01 ~]# tail -f/var/log/zabbix/zabbix_server.log
2189:20180820:173636.941 [Z3001] connection todatabase 'zabbix' failed: [2003] Can't connect to MySQL server on '172.16.1.51'(111)