1、什麼是zabbix及優缺點(對比cacti和nagios)php
Zabbix能監視各類網絡參數,保證服務器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各類問題。前端
是一個基於WEB界面的提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案。node
agent端:主機經過安裝agent方式採集數據。mysql
server端:經過收集agent發送的數據,寫入數據庫(MySQL,ORACLE等),再經過php+apache在web前端展現.linux
zabbix = cacti + nagiosios
優勢:基於兩款工具優勢於一身並更強大,實現企業級分佈式監控。web
缺點:2.2版本帶寬佔用大可是升級到2.4版本後更節省了帶寬資源,其它再無發現。sql
2、監控功能數據庫
主機的性能監控、網絡設備性能監控、數據庫性能監控、多種告警方式、詳細的報表圖表繪製apache
監控主機zabbix有專用的agent,能夠監控Linux,Windows,FreeBSD等 。
監控網絡設備zabbix經過SNMP,ssh(很少用)
可監控對象
設備:服務器,路由器,交換機
軟件:OS,網絡,應用程序
主機性能指標監控
故障監控: down機,服務不可用,主機不可達
3、工做原理
一個監控系統運行的大概的流程是這樣的:
zabbix agent須要安裝到被監控的主機上,它負責按期收集各項數據,併發送到zabbix server端,zabbix server將數據存儲到數據庫中,
zabbix web根據數據在前端進行展示和繪圖。這裏agent收集數據分爲主動和被動兩種模式:
主動:agent請求server獲取主動的監控項列表,並主動將監控項內須要檢測的數據提交給server/proxy
被動:server向agent請求獲取監控項的數據,agent返回數據。
4、zabbix的組件
zabbix由如下幾個組件部分構成:
一、Zabbix Server:負責接收agent發送的報告信息的核心組件,全部配置,統計數據及操做數據均由其組織進行;
二、Database Storage:專用於存儲全部配置信息,以及由zabbix收集的數據;
三、Web interface:zabbix的GUI接口,一般與Server運行在同一臺主機上;
四、Proxy:可選組件,經常使用於分佈監控環境中,代理Server收集部分被監控端的監控數據並統一發往Server端;
五、Agent:部署在被監控主機上,負責收集本地數據併發往Server端或Proxy端;
注:zabbix node也是 zabbix server的一種 。
5、zabbix監控環境中基本概念
一、主機(host):要監控的網絡設備,可由IP或DNS名稱指定;
二、主機組(host group):主機的邏輯容器,能夠包含主機和模板,但同一個組織內的主機和模板不能互相連接;主機組一般在給用戶或用戶組指派監控權限時使用;
三、監控項(item):一個特定監控指標的相關的數據;這些數據來自於被監控對象;item是zabbix進行數據收集的核心,相對某個監控對象,每一個item都由"key"標識;
四、觸發器(trigger):一個表達式,用於評估某監控對象的特定item內接收到的數據是否在合理範圍內,也就是閾值;接收的數據量大於閾值時,
觸發器狀態將從"OK"轉變爲"Problem",當數據再次恢復到合理範圍,又轉變爲"OK";
五、事件(event):觸發一個值得關注的事情,好比觸發器狀態轉變,新的agent或從新上線的agent的自動註冊等;
六、動做(action):指對於特定事件事先定義的處理方法,如發送通知,什麼時候執行操做;
七、報警升級(escalation):發送警報或者執行遠程命令的自定義方案,如每隔5分鐘發送一次警報,共發送5次等;
八、媒介(media):發送通知的手段或者通道,如Email、Jabber或者SMS等;
九、通知(notification):經過選定的媒介向用戶發送的有關某事件的信息;
十、遠程命令(remote command):預約義的命令,可在被監控主機處於某特定條件下時自動執行;
十一、模板(template):用於快速定義被監控主機的預設條目集合,一般包含了item、trigger、graph、screen、application以及low-level discovery rule;
模板能夠直接連接至某個主機;
十二、應用(application):一組item的集合;
1三、web場景(web scennario):用於檢測web站點可用性的一個活多個HTTP請求;
1四、前端(frontend):Zabbix的web接口;
6、在centos7.3上安裝zabbix4.0
#安裝mariadb10.3數據庫
[mariadb]
name=MariaDB
baseurl=http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/
gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
#安裝mariadb數據庫
yum install MariaDB
#安裝zabbix4.0的源
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
#安裝zabbix所需的組件
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent
# mysql -uroot -p密碼
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> quit;
#導入zabbix服務器所須要的表和數據
zcat /usr/share/doc/zabbix-server-mysql-4.0.7/create.sql.gz | mysql -uzabbix -pzabbix zabbix
#編輯文件/etc/zabbix/zabbix_server.conf
DBPassword=zabbix
#編輯文件設置時區/etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai(打開註釋)
#啓動服務和開機自啓
systemctl restart zabbix-server zabbix-agent httpd
systemctl enable zabbix-server zabbix-agent httpd
#瀏覽器訪問
http://server_ip/zabbix
點擊下一步
若是這裏報錯須要從新修改配置文件
/etc/httpd/conf.d/zabbix.conf
列如這裏報了時區的錯誤,須要修改一下配置文件
再次刷新頁面
確認無誤以後,點擊下一步
輸入剛纔建立的數據庫zabbix,以及建立的用戶zabbix及密碼,而後點擊下一步
若是這裏報沒法經過sock文件,鏈接到數據庫的錯誤。
形成這個錯誤的緣由主要有以下幾點:
1.防火牆,selinux沒有關
2.配置文件的sock文件沒有在/var/lib/mysql/下,sock文件是在/tmp下須要修改成/var/lib/mysql/mysql.sock.並從新啓動mysql
3.對於/var/lib/mysql/,沒有權限讀取,須要修改成chown -R mysql.mysql /var/lib/mysql
4.zabbix用戶受權錯誤,是查看是授予的localhost權限仍是%權限,便可以在哪一個主機上面登陸
解決錯誤後,再次網站刷新頁面
點擊下一步
點擊下一步
點擊完成
輸入用戶名Admin 密碼zabbix
至此就已經安裝並啓動成功了,若是須要中文可經過右上角用戶修改
經過配置-主機,能夠查看zabbix是否啓動
這裏若是有亂碼方塊
解決辦法
在windows下的C:\Windows\Fonts下找到宋體字文件simsun.ttc(其餘字體也能夠)
上傳到linux服務器中
cd /usr/share/zabbix/fonts
#將原來的字體備份
mv graphfont.ttf graphfont.ttf.bak
#把windows中的字體更名爲graphfont.ttf
mv simsun.ttc graphfont.ttf
郵件報警
1、關閉sendmail或者postfix
systemctl stop sendmail #關閉
chkconfig sendmail off #禁止開機啓動
systemctl stop postfix
chkconfig postfix off
備註:
使用外部郵箱帳號時,不須要啓動sendmail或者postfix
若是在sendmail或者postfix啓動的同時使用外部郵箱發送報警郵件,首先會讀取外部郵箱配置信息。
2、安裝郵件發送工具mailx
下載mailx:
yum install mailx
whereis mailx #查看安裝路徑
mailx -V #查看版本信息
3、配置Zabbix服務端外部郵箱
vi /etc/mail.rc #編輯,添加如下信息
set from=xxx@qq.com smtp=smtp.qq.com
set smtp-auth-user=xxqq.com smtp-auth-password=密碼
set smtp-auth=login
:wq! #保存退出
echo "zabbix test mail" |mail -s "zabbix" yyy@qq.com
#測試發送郵件,標題zabbix,郵件內容:zabbix test mail,發送到的郵箱:yyy@qq.com
#這時候,郵箱yyy@1qq.com會收到來自xxx@1qq.com的測試郵件
4、配置Zabbix服務端郵件報警
一、打開Zabbix
用用的兩種報警類型
(1)腳本報警
(2)email報警
使用qq郵箱時,須要進入qq郵箱打開 設置-帳號-開啓SMTP服務,,會生成SMTP密碼,上邊圖片就是填寫的SMTP密碼
二、設置Zabbix用戶報警郵箱地址
管理-用戶-Admin
選擇報警類型
三、設置Zabbix觸發報警的動做
操做(變量)
主題:
Problem: {EVENT.NAME}故障{TRIGGER.STATUS},服務器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!
內容:
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
按上面的變量進行填寫
恢復操做(變量)
恢復主題:
恢復{TRIGGER.STATUS}, 服務器:{HOSTNAME1}: {TRIGGER.NAME}已恢復!
恢復信息:
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
按上面的變量進行填寫
勾選啓動項,點擊更新,第一次配置點擊保存
四、添加Zabbix服務端郵件發送腳本(若是選的是腳本報警執行下面的操做)
cd /usr/lib/zabbix/alertscripts #進入腳本存放目錄
vi sendmail.sh #編輯,添加如下代碼
#!/usr/bin/sh
echo 'start' >> /tmp/zabbix.log
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1
echo "end" >> /tmp/zabbix.log
wq! #保存退出
chown zabbix.zabbix sendmail.sh
chown zabbix.zabbix /tmp/zabbix.log
#設置腳本全部者爲zabbix用戶
chmod +x sendmail.sh
#設置腳本執行權限
5、測試Zabbix報警
關閉Zabbix客戶端服務
systemctl stop zabbix_agentd
查看xxx@qq.com郵箱,會收到報警郵件
再開啓Zabbix客戶端服務
systemctl restart zabbix_agentd
查看xxx@qq.com郵箱,會收到恢復郵件
自定義監控
認識userparameter_mysql.conf文件
這個文件在zabbix客戶端的子目錄下,若是你想要本身來設置監控項的話,參考這個文件便可。
編輯zabbix-agent端的的配置文件
vim /etc/zabbix/zabbix_agentd.conf
在最後一行寫入
UserParameter=key,value
重啓zabbix-agent
systemctl restart zabbix-agent
進入zabbix監控系統進行設置
選擇對應的agent端
點擊監控項建立監控項
到網頁最下端選着添加
添加觸發器用郵件報警
概述
監控項只是用於收集數據。若是須要自動評估收到的數據,咱們則須要定義觸發器。觸發器包含了一個表達式,這個表達式定義了數據的可接受的閾值級別。
若是收到的數據超過了這個定義好的級別,觸發器將被「觸發」,或者進入「異常(Problem)」狀態——從而引發咱們的注意,讓咱們知道有問題發生。
若是數據再次恢復到合理的範圍,觸發器將會到「正常(Ok)」狀態。
添加觸發器
爲監控項配置觸發器,前往 配置(Configuration) → 主機(Hosts),找到'新增主機(New host)',點擊旁邊的觸發器(Triggers) ,
而後點擊建立觸發器(Create trigger)。這將會向咱們展示一個觸發器定義表單。
嚴重性更具需求去選
監控項選着本身定義的監控項,由於實驗是檢測MySQL數據是否運行,因此 結果 填 = 0 填寫完成選着插入
關閉數據庫進行測試
查看是否會報警
從新啓動報警消失