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
注意:如果字體是ttc,修改為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 配置單條件觸發器
ESTAB超過500就報警


檢查是否添加成功
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=https://www.cnblogs.com/wenrulaogou/p/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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/142327.html
標籤:Linux
