[此文轉載自]https://blog.51cto.com/13659253/2165146
在原基礎上使用最新zabbix4.2。https://www.zabbix.com/download
目錄
Zabbix是一個高度集成的企業級開源網絡監控解決方案,與Cacti、nagios類似,提供分佈式監控以及集中的web管理界面。zabbix具備常見商業監控軟件所具備的功能,例如主機性能監控,網絡設備性能監控,數據庫性能監控,ftp等通用協議的監控,能夠靈活利用可定製警告機制,允許用戶對事件發送基於E-mail的警告,保證相關人員可以快速解決。還能夠利用存儲數據提供傑出的報表及實時的圖形化數據處理,實現對監控主機7x24小時集中監控。
Zabbix通過C/S模式採集數據通過B/S模式在web端展示和配置,通過SNMP協議傳輸,而被監控對象只需要支持SNMP協議或者運行Zabbix——agents代理程序即可。服務端監聽端口爲10051,而被監控端即Zabbix——agents代理程序監控10050端口。
本篇基於centos7.3版本安裝zabbix4.2實現對centos7.3主機的監控管理以及警告機制郵箱發送的搭建。
實驗環境
主機 | 操作系統 | IP地址 | 主要軟件 |
---|---|---|---|
zabbix服務端 | centos7.3 x86_64 | 192.168.8.80 | zabbix-server4.2 |
windows被監控端 | win7 64位 | 192.168.8.78 |
Zabbix服務端環境部署
1、部署LAMP環境
- 由於zabbix提供集中的web監控管理界面,因此服務在web界面的呈現需要LAMP架構支持。
# yum install -y httpd mariadb-server mariadb php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash
如果出現中文亂碼,進行如下操作。
# localectl set-locale LANG=zh_CN
*此命令相當於修改locale.conf
* # vi /etc/locale.conf
* LANG="zh_CN"
* 保存
重啓CentOS,用date查看是否正確。
- 編輯配置httpd
vim /etc/httpd/conf/httpd.conf
ServerName www.yun.com
...
DirectoryIndex index.html index.php //添加首頁支持格式
- 編輯配置php,配置中國時區
vim /etc/php.ini
date.timezone = PRC //PRC爲中國時區
- 啓動httpd,mysql
systemctl stop firewalld.service
setenforce 0systemctl start httpd.service
systemctl start mariadb.servicenetstat -ntap | egrep '(80|3306)'
---------如netstat出現未找到命令,則需要安裝net工具包-----
yum install net-tools
--------------------------------------------------------------------------------
- 啓動msyql後執行初始安全設置。
mysql_secure_installation
mysql -u root -p
Mariadb[None]>CREATE DATABASE zabbix character set utf8 collate utf8_bin;
Mariadb[None]>GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix'; //創建zabbix數據庫,並設定用戶密碼
Mariadb[None]>flush privileges;
Mariadb[None]>quit;
- 數據庫設置完成,檢測php與數據庫連通情況
vim /var/www/html/index.php
<?php
$link=mysql_connect('192.168.144.113','zabbix','zabbix');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
mysql_close();
?>
出現上圖則PHP連通數據庫完成。
爲保證zabbix用戶也可以登錄數據庫,若出現本地無法登錄情況,解決方式如下。
使用root賬戶登錄數據庫。
select user,host from mysql.user; //有空用戶名稱佔用導致本地無法登錄遠程可登錄
+--------+-----------+
| user | host |
+--------+-----------+
| zabbix | % |
| root | 127.0.0.1 |
| root | ::1 |
| | cacti |
| root | cacti |
| | localhost |
| root | localhost |
+--------+-----------+
drop user ''@localhost; //刪除空用戶
drop user ''@cacti;
flush privileges;
2、部署Zabbix Server
yum install php-bcmath php-mbstring -y //安裝php支持zabbix組件
rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarch.rpm //會自動生成yum源文件,保證系統可以上網
yum clean all //清理緩存
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent //安裝zabbix組件
註釋:如果此處提示三個組件下載不下來,沒有合適的鏡像的話,這是由於網絡問題,下載支持續傳,可進行n次嘗試直至安裝完畢。
cd /usr/share/doc/zabbix-server-mysql-4.X.X/ //到安裝後的zabbix-server-mysql-4.X.X目錄底下,XX代表安裝的版本號
zcat create.sql.gz | mysql -uzabbix -p zabbix //生成數據庫文件,注意密碼不要輸成root的,而是之前的zabbix
如果出現ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES),使用root賬號登陸數據庫,刪除空用戶。
爲保證zabbix用戶也可以登錄數據庫,若出現本地無法登錄情況,解決方式如下。
使用root賬戶登錄數據庫。
select user,host from mysql.user; //有空用戶名稱佔用導致本地無法登錄遠程可登錄
+--------+-----------+
| user | host |
+--------+-----------+
| zabbix | % |
| root | 127.0.0.1 |
| root | ::1 |
| | cacti |
| root | cacti |
| | localhost |
| root | localhost |
+--------+-----------+
drop user ''@localhost; //刪除空用戶
drop user ''@cacti;
flush privileges;
- 查看、修改zabbix配置文件
grep -n '^'[a-Z] /etc/zabbix/zabbix_server.conf
38:LogFile=/var/log/zabbix/zabbix_server.log
49:LogFileSize=0
72:PidFile=/var/run/zabbix/zabbix_server.pid
82:SocketDir=/var/run/zabbix
101:DBName=zabbix //訪問數據庫名稱
117:DBUser=zabbix //zabbix訪問數據庫用戶
125:DBPassword=zabbix //配置文件中只需修改本行,zabbix訪問數據庫密碼
347:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
465:Timeout=4
507:AlertScriptsPath=/usr/lib/zabbix/alertscripts
517:ExternalScripts=/usr/lib/zabbix/externalscripts
553:LogSlowQueries=3000
- 修改zabbix在httpd中的時區
vim /etc/httpd/conf.d/zabbix.conf
如果這個目錄下沒有zabbix.conf 需要cp /usr/share/doc/zabbix-web-3.4.15/httpd22-example.conf /etc/httpd/conf.d/
然後vim /etc/httpd/conf.d/httpd22-example.conf
php_value date.timezone Asia/Shanghai
2.1解決圖形中的方框亂碼
- 爲防止web界面中文亂碼現象,需要將相應字體文件複製,使zabbix識別
參考鏈接https://blog.csdn.net/xiaolinyouni/article/details/102840203
- zabbix基本配置完成,啓動服務,實現web界面安裝
systemctl enable zabbix-server
systemctl start zabbix-server
netstat -anpt | grep zabbix //監聽在10051端口上
systemctl restart httpd.service
- web界面安裝訪問。
http://192.168.144.113/zabbix/
web界面安裝流程如下:
zabbix被監控端代理設置
- 安裝zabbix-agent客戶端
rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
yum install -y zabbix-agent
- 編輯修改配置文件
grep -n '^'[a-Z] /etc/zabbix/zabbix_agentd.conf
vim /etc/zabbix/zabbix_agentd.conf
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
98:Server=192.168.144.113 //zabbix服務器地址
139:ServerActive=192.168.144.113 //活躍服務器地址
150:Hostname=test
268:Include=/etc/zabbix/zabbix_agentd.d/*.conf
- 關閉防火牆,啓動服務
systemctl stop firewalld.service
setenforce 0
systemctl enable zabbix-agent.service
systemctl restart zabbix-agent.servicenetstat -anpt | grep zabbix //監聽在10050端口
WEB管理界面添加被管理主機
配置郵箱報警功能
1、配置自動郵箱發送
yum install mailx -y
vim /etc/mail.rc 編輯mailx配置文件
set [email protected]
set smtp=smtp.qq.com
set [email protected]
set smtp-auth-password=郵箱密碼
set smtp-auth=login
- 測試郵箱軟件是否可用
echo "hello world" | mail -s "testmail" [email protected] //測試發信正常
2、編寫郵件發送腳本
- 郵件發送觸發腳本一定要寫在zabbix指定的alterscripts目錄下,後面直接指定腳本名稱即可觸發。
cd /usr/lib/zabbix/alertscripts
vi mailx.sh
#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
touch /tmp/mailx.log
chown -R zabbix.zabbix /tmp/mailx.log
chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
chown -R zabbix.zabbix /usr/lib/zabbix/
- 測試發郵件腳本是否可以正常工作
./mailx.sh [email protected] "主題" "內容"
3、配置服務監控自動觸發郵件發送腳本
4、在被監控主機模擬故障
- 關閉被監控主機的httpd服務,驗證郵箱接收情況。
企業微信發送警告信息
1、註冊企業微信
到https://work.weixin.qq.com/申請註冊,可不認證即可實現推送消息的功能。
2、創建羣組並獲取部門ID
3、創建應用:
點擊“我的企業”獲取Corpid(企業ID)
4、配置微信報警腳本
下面請在Zabbix端進行操作:
1. 在server端創建自定義報警腳本(修改紅色字體部分爲自己的信息)。
#cd /usr/lib/zabbix/alertscripts
#vim wechat.sh
#! /bin/bash
#set -x
CorpID="***************" #我的企業下面的CorpID
Secret="*******************************" #創建的應用那有Secret
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
#echo $Token
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
function body(){
local int agentid=1000002 #改爲AgentId 在創建的應用那裏看
local UserID=$1 #發送的用戶位於$1的字符串
local PartyID=2 #第一步看的通訊錄中的部門ID
local Msg=$(echo "$@" | cut -d" " -f3-)
printf '{\n'
printf '\t"touser": "'"$UserID"\"",\n"
printf '\t"toparty": "'"$PartyID"\"",\n"
printf '\t"msgtype": "text",\n'
printf '\t"agentid": "'"$agentid"\"",\n"
printf '\t"text": {\n'
printf '\t\t"content": "'"$Msg"\""\n"
printf '\t},\n'
printf '\t"safe":"0"\n'
printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
給予wechat.sh權限
# chmod +x wechat.sh
# chown zabbix.zabbix wechat.sh
測試微信發信息
# bash wechat.sh xxx(你的員工ID) 告警測試 告警測試信息
5、配置zabbix報警媒介
(1) 配置報警媒介:
>>管理>>報警媒介>>創建報警媒介。
(2)配置用戶:
>>管理>>用戶>>點擊系統自帶的用戶。
Admin>>點擊報警媒介>>權限>>更新添加:
報警媒介中需要修改收件人(即企業微信員工ID,如果想發給部門所有人,在收件人處輸入 @all)。
(3)配置動作:
配置>>動作>>創建動作
點擊“操作”
恢復操作,確認操作可以同上。
操作中,消息內容模板可參考以下:
故障:{TRIGGER.STATUS},服務器:{HOSTNAME1}發生:{TRIGGER.NAME}故障!
告警等級:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件標識:{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}
---------------
=================================================================================================
至此,就可以在微信端收到報警消息了: