企業級監控解決方案
zabbix 是一個基於 WEB 界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案
zabbix 能監視各種網絡參數,保證服務器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位解決存在的各種問題。
Zabbix 主要特點
安裝與配置簡單,學習成本低 支持多語言(包括中文) 免費開源 自動發現服務器與網絡設備分布式監視以及 WEB 集中管理功能 可以無 agent 監視 用戶安全認證和柔軟的授權方式 通過 WEB 界面設置或查看監視結果 email 等通知功能
Zabbix主要功能
監控CPU負載、內存使用、磁盤使用、網絡狀態、端口監視、日志監視、插件開發自定義
Zabbix Server 和 Zabbix agent
Zabbix Server 可以通過 SNMP,Zabbix agent,Ping,端口監視等你方法提供對遠程服務器/網絡狀態的 監視,數據收集功能,可以在運行 Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,OX X,Windows 多 平台。
Zabbix Agent 安裝在需要被監控的目標服務器上,主要完成對硬件信息與操作系統有關的內存,CPU 等你 信息收集。
Zabbix Server 可以單獨監視遠程服務器的服務狀態,同時也可以與 Zabbix Agent 結合。可以輪詢 Zabbix Agent 主動接收監視數據(trapping 傳遞 方式),同時還可以被動接收 Zabbix Agent 發送的數據。
Zabbix運行過程圖
Zabbix 支持多種網絡方式下的監控,可以通過分布式的部署和安裝監控代理 Zabbix,通過 C/S 模式采集數據,通過 B/S 模式在 Web 端展示和配置!Agent 監控端口 10050
服務端安裝 Zabbix Server 和 Zabbix Agent 兩個服務,客戶端只安裝 Zabbix Agent 一個服務,監控原理 就是 Zabbix Agent 服務將從系統中獲取的相關數據傳送給 Zabbix Server,然后 Zabbix Server 服務獎數據分 析之后以 PHP 頁面展示出來!
服務器信息:
| 操作系統 | 主機名 | IP地址 | 節點角色 | CPU | Memory |
|---|---|---|---|---|---|
| Centos7.5 | xiaoliu10 | 192.168.0.10 | zabbix-server | 2 | 4G |
一、server端環境配置
1-1、LAMP以及基本環境安裝
直接采用yum的方式進行安裝
yum -y install httpd php mariadb-server mysql-devel php-gd gcc php-mysql php-xml libcurl-devel curl-* net-snmp* libxml2-* php-mbstring php-bcmath ntp libevent-devel php-ldap vim net-tools wget unzip
1.2關閉 Selinux 和防火牆
systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld vim /etc/selinux/config SELINUX=disabled
reboot #如果原來的系統開着 selinux,那么需要重啟,才能關閉 selinux
1.3同步時間
yum install ntp -y && systemctl enable ntpd.service && systemctl start ntpd.service
1.4配置MySQL數據庫
啟動mysql服務並設置開機啟動
systemctl start mariadb
systemctl enable mariadb
初始化mysql數據庫
mysql_secure_installation #根據提示設置數據庫密碼
登陸數據庫
mysql -uroot -p
查看數據庫編碼
show variables like 'character_set_%';
創建zabbix使用數據庫
create database zabbix; grant all on zabbix.* to zabbix@localhost identified by 'zabbix123'; flush privileges;
以上命令建立了名為zabbix的數據庫,並建立了zabbix用戶,設置用戶密碼為zabbix123,並授權訪問zabbix數據庫且只允許本機連接改數據庫
2源碼安裝zabbix
2.1編譯安裝zabbix
下載zabbix源碼
cd /tmp/ #臨時目錄 wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.0.2/zabbix-4.0.2.tar.gz
解壓
tar zxvf zabbix-4.0.2.tar.gz && cd zabbix-4.0.2
安裝
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
make install
創建zabbix系統用戶
groupadd zabbix useradd -s /sbin/nologin -g zabbix zabbix
導入數據庫,注意順序,否則會報錯
mysql -uroot -p123456 zabbix</tmp/zabbix-4.0.2/database/mysql/schema.sql #用戶密碼 mysql -uroot -p123456 zabbix</tmp/zabbix-4.0.2/database/mysql/images.sql #用戶密碼 mysql -uroot -p123456 zabbix</tmp/zabbix-4.0.2/database/mysql/data.sql #用戶密碼
2.2安裝Zabbix WEB
apache是用yum安裝 默認的web目錄為/var/www/html,拷貝zabbix web的文件到這個目錄
cd /var/www/html/ cp -R /tmp/zabbix-4.0.2/frontends/php/* . chown -R apache:apache /var/www/html/
調整參數php參數,編輯php.ini文件
vim /etc/php.ini 384 max_execution_time = 300 394 max_input_time = 300 672 post_max_size = 16M 878 date.timezone = Asia/Shanghai 1315: bcmath.scale = 1
啟動http服務器,並設置開機啟動
systemctl start httpd
systemctl enable httpd
打開瀏覽器直接訪問zabbix server的IP地址 192.168.0.10,即可看到zabbix web安裝頁面
點擊Next step
(檢查一下,看看都OK的,確認沒有問題 ps:有問題去根據問題參數去修改php.ini)
直接Next step
這里是設置數據庫連接信息,數據庫為zabbix,數據庫用戶為zabbix,密碼為zabbix123(之前設置的),填好之后直接Next step

直接Next step
確認信息無誤,直接Next step

創建配置文件成功,zabbix web安裝成功,點Finish。 默認用戶名:Admin 密碼:zabbix

3配置zabbix
3.1配置zabbix server
配置zabbix server文件
vim /usr/local/zabbix/etc/zabbix_server.conf 86 DBHost=localhost 94 DBName=zabbix 110 DBUser=zabbix 119 DBPassword=zabbix123 修改以上內容,即可完成對zabbix server的配置 啟動zabbix server /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf 檢查啟動 netstat -antup | grep zabbix

查看日志有無報錯
tail -f /tmp/zabbix_server.log 設置開機啟動 echo /usr/local/zabbix/sbin/zabbix_server >> /etc/rc.local
配置管理腳本
cp /tmp/zabbix-4.0.2/misc/init.d/fedora/core/zabbix_server /etc/init.d/ vim /etc/init.d/zabbix_server 22 BASEDIR=/usr/local/zabbix #修改此行內容為 zabbix 的安裝位置 chkconfig --add zabbix_server chkconfig zabbix_server on
3.3配置Zabbix Agent
由於目前zabbix server和zabbix agent都安裝在同一台機器上,默認的zabbix agent配置文件已經配置了zabbix server地址為127.0.0.1(本機),所以無需修改,直接用一下命令啟動zabbix agent
如果在其他監控機上則需要修改如下
vim /usr/local/zabbix/etc/zabbix_agentd.conf 94 Server=192.168.0.10 #zabbix server 地址,可以多個,用,隔開 135 ServerActive=192.168.0.10 #主動檢查主機的數據的數據發送給 Zabbix Server 146 Hostname=xiaoliu* #被檢測主機名
只需修改以上三個參數即可
啟動agent
/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf 檢查啟動 netstat -antup | grep zabbix 設置開機啟動 echo /usr/local/zabbix/sbin/zabbix_agentd >> /etc/rc.local 配置管理腳本 cp /tmp/zabbix-4.0.2/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ vim /etc/init.d/zabbix_agentd 22 BASEDIR=/usr/local/zabbix #修改此行內容為 zabbix 的安裝位置 chkconfig --add zabbix_agentd chkconfig zabbix_agentd on
4 ZABBIX監控apache
4.1 下載腳本
cd wget https://github.com/lorf/zapache/archive/master.zip 解壓 unzip master.zip cd zapache-master

說明:
httpd-server-status.conf.sample 是用於配置server-status的上個步驟已經配置過了
userparameter_zapache.conf.sample 、zapache 關鍵的文件
zapache-template-active.xml zapache-template.xml模板
將解壓出來的幾個重要文件放到相應目錄
cp userparameter_zapache.conf.sample /usr/local/zabbix/etc/zabbix_agentd.conf.d/ cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/ mv userparameter_zapache.conf.sample userparameter_zapache.conf vim userparameter_zapache.conf 6 UserParameter=zapache[*],/var/lib/zabbixsrv/externalscripts/zapache \$1 6改為UserParameter=zapache[*],/usr/local/bin/zapache \$1 cp zapache-master/zapache /usr/local/bin/ chmod +X /usr/local/bin/zapache
4.2 zabbix agentd模板導入
導入模板


然后導入
5 Zabbix郵件報警配置
5.1安裝郵件發送工具mailx
yum install mailx
查看mailx版本:
mail -V
5.2配置外部郵箱
vim /etc/mail.rc 在最末尾添加如下 set from=*******@qq.com #發件郵箱 set smtp=smtp.qq.com set smtp-auth-user=*****@qq.com #發件郵箱 set smtp-auth-password=*** #你的密碼 PS:此為QQ郵箱設置的客戶端授權密碼 set smtp-auth=login
這邊的客戶端授權密碼

測試外部郵箱
echo "this is zabbix test mail" |mailx -s "zabbix" ****@qq.com #接收郵箱
寫郵件發送腳本
cd /usr/local/zabbix/share/zabbix/alertscripts/ vim sendmail.sh \#!/bin/bash messages=`echo $3 | tr '\r\n' '\n'` subject=`echo $2 | tr '\r\n' '\n'` echo "${messages}" | mailx -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
授權
chown zabbix.zabbix sendmail.sh
chmod 755 sendmail.sh
修改主配置文件,讓服務讀取到這個腳本:
vim /usr/local/zabbix/etc/zabbix_server.conf 506 # AlertScriptsPath=${datadir}/zabbix/alertscripts 為 506 AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts touch /tmp/sendmail.log chmod 777 /tmp/sendmail.log
發送測試腳本
/usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh ******@qq.com "測試標題" "測試內容"
頁面添加


{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
5.3配置用戶

添加警報媒介:

添加報警動作:

動作:
Action-Email

操作:

默認標題:故障{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}
重啟server
/etc/init.d/zabbix_server restart
6 Zabbix 釘釘警報
6.1釘釘配置
在群組中添加機器人

選擇自定義機器人

創建webhook 用於發送消息的

6.2釘釘腳本配置
編寫腳本
cd /usr/local/zabbix/share/zabbix/alertscripts #!/usr/bin/python # -*- coding: utf-8 -*- import requests import json import sys import os headers = {'Content-Type': 'application/json;charset=utf-8'} api_url = "https://oapi.dingtalk.com/robot/send?access_token=46e7d1cb4afd4bf4190b6302a514ab474a37cbc6***************55b"#這里就是需要的那webhook def msg(text): json_text= { "msgtype": "text", "text": { "content": text }, "at": { "atMobiles": [ "189..." #需要@群里誰 ], "isAtAll": True #是否全部@,True為是,False為否 } } print requests.post(api_url,json.dumps(json_text),headers=headers).content if __name__ == '__main__': text = sys.argv[1] msg(text) 給腳本加權限 chmod 755 dingding.py & chown -R zabbix.zabbix dingding.py 安裝模塊(沒有request模塊的話腳本會執行不了) pip install requests 測試腳本是否可執行 ./dingding.py test


6.3創建釘釘報警媒介
這邊腳本參數添加一個就可以了
{ALERT.MESSAGE}

添加用戶

權限這邊選超級管理員

創建動作(跟郵件微信一樣)
創建

操作

恢復

到此配置完成
