zabbix架構的工作
zabbix-server是收集信息、報警 數據庫是存儲zabbix-server收集的信息 zabbix-web展示數據
zabbix-agent是採集數據
忘記zabbix密碼時,可以使用md5反推查看密碼
MariaDB [(none)]> select * from zabbix.users;
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
| userid | alias | name | surname | passwd | url | autologin | autologout | lang | refresh | type | theme | attempt_failed | attempt_ip | attempt_clock | rows_per_page |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
| 1 | Admin | Zabbix | Administrator | 670b14728ad9902aecba32e22fa4f6bd | | 1 | 0 | zh_CN | 30s | 3 | default | 0 | | 0 | 50 |
| 2 | guest | | | d41d8cd98f00b204e9800998ecf8427e | | 0 | 15m | en_GB | 30s | 1 | default | 0 | | 0 | 50 |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
2 rows in set (0.00 sec)
MariaDB [(none)]> exit
Bye
假設71,我已經添加了10個自定義的監控項,想在7主機上,也可以添加這10個監控項。
如果沒有include的話,我們需要每一個監控項都寫一行配置文件。
現在的話,可以在這個目錄中將定義的監控寫入一個配置文件,比如磁盤的是一個配置文件,nginx的是一個配置文件。當7主機上也想要監控這些自定義監控項時,將這些文件傳輸過去就好了。
PS注意,傳輸過去以後,看看有沒有取值的命令。
注意:將每個配置項寫入單獨單獨配置文件後,原來的總的配置文件要將自定義監控項給註釋掉。
[root@lsy zabbix_agentd.d 22:02:43]# pwd
/etc/zabbix/zabbix_agentd.d
這個include是在配置文件中定義的。
[root@lsy zabbix_agentd.d 22:03:47]# grep -Ev '^$|#' /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.71
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/*.conf
傳參數方式監控多塊硬盤,在一行配置文件中監控多個硬盤
[root@lsy zabbix_agentd.d 22:07:47]# cat tps.conf
UserParameter=tps[*],iostat |grep $1| awk '{print $$2}'
不完美之處就是print $2 中的$2 不再是打印第二行,而是識別成變量了。
UserPearmeter=tps[*],iostat|grep $1 |awk '{print $ $2 }'
這樣就解決了。
[root@zabbix zabbix_agentd.d]# zabbix_get -s 10.0.0.7 -k tps[sda]
sda 0.87 19.97 14.90 1791724 1337270
[root@zabbix zabbix_agentd.d]# zabbix_get -s 10.0.0.7 -k tps[sda]
0.87
[root@zabbix zabbix_agentd.d]#
[root@lsy zabbix_agentd.d 22:02:20]# cat tps.conf
UserParameter=tps[*],iostat |grep $1| awk '{print $$2}'
頁面配置
這樣的好處就是讓配置時,傳參的方式可以讓配置文件中寫的比較少,但是在頁面配置時,每個監控項都要定義一次,只是在配置文件中不需要寫這麼多行了。
zabbix默認監控項,內置key ,直接寫死在二進制程序裏面的,沒有配置文件。
觸發器的表達式:
diff() 比較兩次取到的值
last() 最新值 監控nginx服務狀態 ,適合用最新值
avg(5m) 平均5分鐘,改值都大於>1 查看負載的情況下,容易有波動的值,使用平均。
max(5m) 大值
min(5m) 小值
nodate(5m) 沒有收到數據 報警 監控主機存活
格式
{監控主機的名稱:監控項key.函數方法()}
創建觸發器兩種方式
一種是自己手寫
另外一種就是web頁面點擊
每一個監控項都是有取值間隔的,每隔30秒監控一次
nginx已經觸發報警,修復故障,需要等待下一次監控項取值
郵件報警;
一 配置發件人
二 收件人
三 啓動報警
自定義監控項 自定義觸發器 郵件報警
微信報警
weixin.py
依賴requests模塊
安裝pip
yum install -y python-pip
pip install -i https://pypi.tuna.tsunghua.edu.cn/simple request
pip源
申請企業微信
腳本使用方法
(腳本中的內容是需要修改的)
腳本的放置路徑的查看方法:
[root@zabbix ~]# grep -Ev '^$|#' /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
[root@zabbix ~]# find / -name "weixin.py"
/usr/lib/zabbix/alertscripts/weixin.py
[root@zabbix ~]#
這裏的三行內容是需要修改的。
分別是
企業微信的id
密碼
機器人的id
python weixin.py 收件人 標題 內容
自己就是因爲少了一個參數,導致出現錯誤。
zabbix使用微信來發送報警
第一個歷程:把報警腳本放在指定目錄中
第二個歷程
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
配置微信收件人
報錯信息 是因爲沒有權限
Permission denied: '/tmp/weixin.log'
看清楚是哪個服務器上進行操作/tmp/weixin.log文件,是在zabbix-server上面。
解決辦法:
1.賦予屬主屬組爲zabbix
2.刪除日誌
修改一下報警發送的內容信息
內容;
默認標題
服務器:{HOST.NAME}發生: {TRIGGER.NAME}故障!
消息內容
{
告警主機:{HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當前狀態:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}
恢復的消息
默認標題:
服務器:{HOST.NAME}恢復: {TRIGGER.NAME}故障!
消息內容:
{
告警主機:{HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當前狀態:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}
一張圖可以抵過千言萬語
通過看圖的趨勢,圖形 監控項 (結果爲數據類型爲數字類型)
亂碼的原因就是因爲字體的原因
修改字符,將文件上傳到,即可
[root@zabbix fonts]# pwd
/usr/share/zabbix/assets/fonts
[root@zabbix fonts]# ll
total 7784
-rw-r--r-- 1 root root 7969108 Mar 22 2017 graphfont.ttf
隨便選中監控項出圖,臨時出圖
永久出圖
自定義出圖 grafana
grafana專業出圖軟件
使用grafana給zabbix出圖
安裝啓動grafana
在grafana安裝zabbix插件
創建一個連接zabbix的數據源
dashboard 展示面板
==yum localinstall ==
[root@zabbix ~]# ll
total 62288
-rw-------. 1 root root 1326 Mar 7 13:42 anaconda-ks.cfg
-rw-r--r-- 1 root root 63775490 Apr 14 04:12 grafana-6.7.2-1.x86_64.rpm
[root@zabbix ~]# yum localinstall -y grafana-6.7.2-1.x86_64.rpm
yum localinstall
[root@zabbix ~]# systemctl start grafana-server.service
[root@zabbix ~]# systemctl enable grafana-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.
[root@zabbix ~]# netstat -ntupl |grep 3000
tcp6 0 0 :::3000 :::* LISTEN 81004/grafana-serve
登錄地址 10.0.0.71:3000
grafana 默認的密碼Admin admin
命令行方式下載插件
[root@zabbix ~]# grafana-cli plugins install alexanderzobnin-zabbix-app
默認存放目錄地址:(如果不能夠使命令行下載的話,使用網頁下載壓縮包)
/var/lib/grafana/plugins
zabbix 出圖 最新數據 臨時出圖 監控主機創建圖形 永久出圖
grafana:
插件
數據源
dashboard
自定義圖形
導入dashboard