CentOS7+Zabbix4.2監控環境搭建

[此文轉載自]https://blog.51cto.com/13659253/2165146   

在原基礎上使用最新zabbix4.2。https://www.zabbix.com/download

目錄

實驗環境

Zabbix服務端環境部署

1、部署LAMP環境

2、部署Zabbix Server

 2.1解決圖形中的方框亂碼

zabbix被監控端代理設置

WEB管理界面添加被管理主機

配置郵箱報警功能

1、配置自動郵箱發送

2、編寫郵件發送腳本

3、配置服務監控自動觸發郵件發送腳本

4、在被監控主機模擬故障

 企業微信發送警告信息

1、註冊企業微信

2、創建羣組並獲取部門ID

3、創建應用:

4、配置微信報警腳本

5、配置zabbix報警媒介


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 0

systemctl start httpd.service
systemctl start mariadb.service

netstat -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();
?>

Zabbix4.0監控環境搭建實現7x24監控服務

出現上圖則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界面安裝流程如下:

Zabbix4.0監控環境搭建實現7x24監控服務

Zabbix4.0監控環境搭建實現7x24監控服務
Zabbix4.0監控環境搭建實現7x24監控服務

Zabbix4.0監控環境搭建實現7x24監控服務
Zabbix4.0監控環境搭建實現7x24監控服務
Zabbix4.0監控環境搭建實現7x24監控服務
Zabbix4.0監控環境搭建實現7x24監控服務
Zabbix4.0監控環境搭建實現7x24監控服務

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.service

netstat -anpt | grep zabbix //監聽在10050端口

WEB管理界面添加被管理主機

Zabbix4.0監控環境搭建實現7x24監控服務
Zabbix4.0監控環境搭建實現7x24監控服務
Zabbix4.0監控環境搭建實現7x24監控服務
Zabbix4.0監控環境搭建實現7x24監控服務
Zabbix4.0監控環境搭建實現7x24監控服務

配置郵箱報警功能

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

Zabbix4.0監控環境搭建實現7x24監控服務

  • 測試郵箱軟件是否可用

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、配置服務監控自動觸發郵件發送腳本

Zabbix4.0監控環境搭建實現7x24監控服務
Zabbix4.0監控環境搭建實現7x24監控服務
Zabbix4.0監控環境搭建實現7x24監控服務
Zabbix4.0監控環境搭建實現7x24監控服務

Zabbix4.0監控環境搭建實現7x24監控服務
Zabbix4.0監控環境搭建實現7x24監控服務

4、在被監控主機模擬故障

  • 關閉被監控主機的httpd服務,驗證郵箱接收情況。

Zabbix4.0監控環境搭建實現7x24監控服務

Zabbix4.0監控環境搭建實現7x24監控服務

 企業微信發送警告信息

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}
---------------

=================================================================================================

至此,就可以在微信端收到報警消息了:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章