溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

分布式監(jiān)控-zabbix(3.0-4.0)

發(fā)布時(shí)間:2020-06-24 04:25:04 來源:網(wǎng)絡(luò) 閱讀:235 作者:lewis2016 欄目:系統(tǒng)運(yùn)維

zabbix server端:centos7.6

一、關(guān)閉防火墻和selinux、設(shè)置時(shí)區(qū)和時(shí)間同步

~]# systemctl stop firewalld

~]# systemctl disable firewalld

~]# setenforce 0

~]# vim /etc/sysconfig/selinux

SELINUX=disabled? ? ? ? ? ? ? ? ? ? ? ?#將enforcing更改為disabled

# timedatectl set-timezone Asia/Shanghai

~]# yum -y install chrony

~]# vim /etc/chrony.conf

server ntp1.aliyun.com iburst? ? ? ? ? ? ? ? #修改為阿里云的ntp服務(wù)器

~]# systemctl restart chronyd


二、更換為yum源為阿里云源

~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

~]# yum makecache


三、安裝LAMP環(huán)境

~]# yum -y install mariadb mariadb-server httpd php php-mysql

~]# systemctl start httpd mariadb

~]# systemctl enable httpd mariadb

~]# mysql_secure_installation


四、安裝zabbix程序,此處選用3.0 LTS(長期維護(hù)版)

~]# rpm -Uvh https://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

~]# yum clean all

~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent

初始化數(shù)據(jù)庫:

~]# mysql -uroot -p

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';? ? ? ? ? ? ? #此處password為zabbix的數(shù)據(jù)庫密碼,自行設(shè)置

MariaDB [(none)]> quit;

~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix? ? ? ? ? ? ? ? ?#輸入zabbix用戶的密碼

~]# vim /etc/zabbix/zabbix_server.conf

DBPassword=password? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #輸入zabbix用戶的密碼

~]# vim /etc/httpd/conf.d/zabbix.conf? ? ?

php_value date.timezone Asia/Shanghai? ? ? ? ? ? #輸入正確的時(shí)區(qū)信息

~]# systemctl restart zabbix-server zabbix-agent httpd

~]# systemctl enable zabbix-server zabbix-agent httpd


五、瀏覽器初始化zabbix的web

~]# vim /etc/httpd/conf/httpd.conf

DocumentRoot "/usr/share/zabbix"??

~]# systemctl restart httpd

訪問http://server-ip,默認(rèn)賬號(hào)為Admin,密碼為zabbix。生產(chǎn)環(huán)境注意:1、修改Admin密碼;2、關(guān)閉guest用戶。

分布式監(jiān)控-zabbix(3.0-4.0)分布式監(jiān)控-zabbix(3.0-4.0)? ? ? ? ? ? ? ? ?



六、由于3.0的很多模板支持的問題,所以此處升級(jí)為4.0LTS。

阿里云的zabbix倉庫源包:

https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm

具體參考官方升級(jí)指南:

https://www.zabbix.com/documentation/4.0/zh/manual/installation/upgrade/packages/rhel_centos



七、添加對(duì)中文的支持,避免中文亂碼問題:3.0和4.0的區(qū)別:3.0路徑:/usr/share/zabbix/fonts/? ? ? 4.0路徑:/usr/share/zabbix/assets/fonts/

以下示例為4.0LTS版本

找一臺(tái)windows主機(jī):win+R,輸入fonts(即C:\Windows\Fonts),選擇某一字體(此處示例為:宋體常規(guī))

通過拖動(dòng)上傳字體文件到zabbix-server上:前提 ~]# yum -y install lrzsz

~]# mv simsun.ttc /usr/share/zabbix/assets/fonts/song.ttf

~]# chmod a+x /usr/share/zabbix/assets/fonts/song.ttf

~]# vim /usr/share/zabbix/include/defines.inc.php

define('ZBX_GRAPH_FONT_NAME',? ? ? ? ? ?'song');? ? ? ? ? ? ? ? ?#將字體graphfont修改為song




常用監(jiān)控方式:

一、通過agent監(jiān)控:

1、安裝zabbix-agent程序和設(shè)置配置文件

centos 7

~]# rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.15-1.el7.x86_64.rpm

~]# vim /etc/zabbix/zabbix_agentd.conf

Server=172.20.120.214? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #設(shè)置server端IP

#ServerActive=172.20.120.214? ? ? ? ? ? ? ? ? #此處沒有啟用active模式,所以注釋(active模式是客戶端主動(dòng)發(fā)送數(shù)據(jù)給server端)?

Hostname=172.20.120.182? ? ? ? ? ? ? ? ? ? ? ?#設(shè)置客戶端的名稱

~]# systemctl start zabbix-agent

~]# systemctl enable zabbix-agent


centos6

~]# sudo rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/6/x86_64/zabbix-agent-4.0.15-1.el6.x86_64.rpm

~]# hostip=`ip addr l | grep eth0 | grep inet | awk -F "/" '{print $1}' | awk '{print $2}'`? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#此處獲取網(wǎng)卡為eth0,請(qǐng)按需修改

~]# sudo sed -i -e 's/Server=127.0.0.1/Server=172.20.120.214/g' -e 's/ServerActive=127.0.0.1/#ServerActive=127.0.0.1/g' -e "s/Hostname=Zabbix server/Hostname=$hostip/g" /etc/zabbix/zabbix_agentd.conf

~]# sudo service zabbix-agent start

~]# sudo chkconfig zabbix-agent on



2、添加到web監(jiān)控的模式:

a、手動(dòng)添加

訪問web端http://server-ip:配置-主機(jī)-創(chuàng)建主機(jī)-設(shè)置主機(jī)相關(guān)信息:如圖

分布式監(jiān)控-zabbix(3.0-4.0)

分布式監(jiān)控-zabbix(3.0-4.0)


b、自動(dòng)發(fā)現(xiàn)

步驟:

1、設(shè)置自動(dòng)發(fā)現(xiàn)后要進(jìn)行的動(dòng)作

訪問web端http://server-ip:配置-動(dòng)作-事件源(自動(dòng)發(fā)現(xiàn))-創(chuàng)建動(dòng)作

2、設(shè)置自動(dòng)發(fā)現(xiàn)規(guī)則

訪問web端http://server-ip:配置-自動(dòng)發(fā)現(xiàn)-創(chuàng)建發(fā)現(xiàn)規(guī)則


Zabbix監(jiān)控nginx性能

1、查看是否有with-http_stub_status_module該模塊

~]# nginx -V? ? ?

2、配置nginx狀態(tài)頁面? ? ? ? ? ??

~]# vim /etc/nginx/nginx.conf

location /ngx_status? {

stub_status on;

access_log off;

allow 127.0.0.1;

}

~]# systemctl reload nginx

測試是否可以獲取到status頁面

~]# curl http://127.0.0.1/ngx_status

其中字段解釋如下:

Active connections? ? ? ? ? ? ? ?:表示Nginx正在處理的活動(dòng)連接數(shù)。

server? ? ? ? ? ? ? ? ? ? ???????????????:表示Nginx啟動(dòng)到現(xiàn)在共處理了多少個(gè)連接

accepts???????????????????????????????? :表示Nginx啟動(dòng)到現(xiàn)在共成功創(chuàng)建多少次握手

handled requests? ???????????????:表示總共處理了 多少次請(qǐng)求

Reading????????????????????????????????:Nginx 讀取到客戶端的 Header 信息數(shù)

Writing?????????????????????????????????:Nginx 返回給客戶端 Header 信息數(shù)

Waiting????????????????????????????? ? ?:Nginx 已經(jīng)處理完正在等候下一次請(qǐng)求指令的駐留鏈接(開啟keep-alive的情況下,這個(gè)值等于Active-(Reading+Writing))

所以,在訪問效率高,請(qǐng)求很快被處理完畢的情況下,Waiting數(shù)比較多是正常的.如果reading +writing數(shù)較多,則說明并發(fā)訪問量非常大,正在處理過程中。

3、編寫監(jiān)控腳本

~]# vim /etc/zabbix/ngx_status.sh

#!/bin/bash

HOST="127.0.0.1"

PORT="80"

#檢測nginx進(jìn)程是否存在

function ping {

? ? ? ? /sbin/pidof nginx | wc -l

}

#檢測nginx性能

function active {

? ? ? ? /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | grep 'Active' | awk '{print $NF}'

}

function reading {

? ? ? ? /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | grep 'Reading' | awk '{print $2}'

}

function writing {

? ? ? ? /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | grep 'Writing' | awk '{print $4}'

}

function waiting {

? ? ? ? /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | grep 'Waiting' | awk '{print $6}'

}

function accepts {

? ? ? ? /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | awk NR==3 | awk '{print $1}'

}

function handled {

? ? ? ? /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | awk NR==3 | awk '{print $2}'

}

function requests {

? ? ? ? /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2> /dev/null | awk NR==3 | awk '{print $3}'

}

#執(zhí)行function

$1

~]# chmod a+x /etc/zabbix/ngx_status.sh

測試腳本

~]# bash /etc/zabbix/ngx_status.sh requests

分布式監(jiān)控-zabbix(3.0-4.0)

4、zabbix-agent配置文件

~]# vim /etc/zabbix/zabbix_agentd.conf

UnsafeUserParameters=1

UserParameter=nginx.status[*],/etc/zabbix/ngx_status.sh $1

~]# systemctl restart zabbix-agent

~]# systemctl enable zabbix-agent

zabbix server端測試

~]# yum -y install zabbix-get

~]# zabbix_get? -s 172.20.120.56 -k 'nginx.status[accepts]'? ? ? ? ? ? ?#-s后接agent-ip,-k后接自定義key

分布式監(jiān)控-zabbix(3.0-4.0)

5、zabbix web端

下載模板:https://pan.baidu.com/s/1CCaIURk-kXAcEXJ6BD-TEA

導(dǎo)入模板

主機(jī)配置

主機(jī)添加模板(Template App NGINX)


二、通過snmp方式監(jiān)控:

Zabbix監(jiān)控Dell服務(wù)器硬件(iDRAC)

1、Dell服務(wù)器端

瀏覽器登錄iDRAC

啟用SNMP
點(diǎn)擊“iDRAC”——“網(wǎng)絡(luò)”——“服務(wù)”——“SNMP代理”
勾選“已啟用”,然后點(diǎn)擊“應(yīng)用”

2、zabbix web端

下載模板:https://pan.baidu.com/s/1CCaIURk-kXAcEXJ6BD-TEA

導(dǎo)入模板

主機(jī)配置SNMP interfaces

主機(jī)添加模板Dell iDRAC;注意點(diǎn):宏的設(shè)置需要對(duì)應(yīng)起來(即SNMP community的值要對(duì)應(yīng)起來)。


zabbix監(jiān)控華為交換機(jī)和防火墻設(shè)備

1、在交換機(jī)和防火墻開啟snmp功能,和設(shè)置SNMP community

2、zabbix web端

下載模板:https://pan.baidu.com/s/1CCaIURk-kXAcEXJ6BD-TEA

導(dǎo)入模板

主機(jī)配置SNMP interfaces

主機(jī)添加模板(Template Net Huawei VRP SNMPv2)注意點(diǎn):宏的設(shè)置需要對(duì)應(yīng)起來(即SNMP community的值要對(duì)應(yīng)起來)。




windows服務(wù)器的監(jiān)控:

1、安裝agent客戶端;官網(wǎng)下載地址https://assets.zabbix.com/downloads/4.0.15/zabbix_agents-4.0.15-win-amd64-openssl.zip

解壓zabbix_agents-4.0.15-win-amd64-openssl.zip

conf目錄存放是agent配置文件?

bin文件存放windows下程序

修改conf目錄下的zabbix_agentd.conf文件

????LogFile=c:\zabbix_agentd.log? ? //日志存放位置

????EnableRemoteCommands=1? ? ?//允許在本地執(zhí)行遠(yuǎn)程命令

????LogRemoteCommands=1? ? ? ? ? //執(zhí)行遠(yuǎn)程命令是否保存操作日志

????Server=172.20.120.214? ? ? ? ? //zabbix_server主機(jī)IP地址

? ? #ServerActive=192.168.1.10? ? ? ? //由于沒有開啟active模式,因此注釋即可

????Hostname=******? ? ? ? ?//被監(jiān)控主機(jī)名,自身主機(jī)名

打開命令提示符進(jìn)行安裝

c:\zabbix\bin\zabbix_agentd.exe -i -c c:\zabbix\conf\zabbix_agentd.conf

c:\zabbix\bin\zabbix_agentd.exe -s -c c:\zabbix\conf\zabbix_agentd.conf

完成安裝后,服務(wù)里就有了zabbix-agent服務(wù)

最后記得設(shè)置防火墻允許zabbix-agent互聯(lián)


windows補(bǔ)充點(diǎn):

默認(rèn)windows模板沒有cpu使用率監(jiān)控項(xiàng),添加如下:

名稱:CPU usage%

鍵值:perf_counter[\Processor(_Total)\% Processor Time]

信息類型:浮點(diǎn)數(shù)

單位:%

問題:無法獲取cpu使用率,server端日志:Collector is not started

解決方法:重建性能計(jì)數(shù)器設(shè)置:管理員執(zhí)行下lodctr /R命令即可




設(shè)置報(bào)警方式:

一、郵件報(bào)警:

1、管理--報(bào)警媒介類型--創(chuàng)建媒體類型

分布式監(jiān)控-zabbix(3.0-4.0)

2、管理--用戶--報(bào)警媒介--添加

分布式監(jiān)控-zabbix(3.0-4.0)

3、配置--動(dòng)作--事件源:觸發(fā)器--創(chuàng)建動(dòng)作

分布式監(jiān)控-zabbix(3.0-4.0)

操作內(nèi)容如下:

故障{TRIGGER.STATUS},服務(wù)器:{HOSTNAME1}發(fā)生: {TRIGGER.NAME}故障!
告警信息:
告警主機(jī):{HOSTNAME1}
告警時(shí)間:{EVENT.DATE} {EVENT.TIME}
告警等級(jí):{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項(xiàng)目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當(dāng)前狀態(tài):{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}


恢復(fù)操作內(nèi)容如下:

恢復(fù){TRIGGER.STATUS}, 服務(wù)器:{HOSTNAME1}: {TRIGGER.NAME}已恢復(fù)!
恢復(fù)信息:
告警主機(jī):{HOSTNAME1}
告警時(shí)間:{EVENT.DATE} {EVENT.TIME}
告警等級(jí):{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項(xiàng)目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當(dāng)前狀態(tài):{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}



更新操作內(nèi)容如下:

更新信息:{EVENT.NAME}
更新信息:
{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.
{EVENT.UPDATE.MESSAGE}
Current problem status is {EVENT.STATUS}, acknowledged: {EVENT.ACK.STATUS}.


最后進(jìn)行故障測試,驗(yàn)證是否發(fā)送成功。查看:報(bào)表--動(dòng)作日志


二、阿里云短信報(bào)警:此處示例使用python3.6+(python2存在中文短信亂碼的情況)

1、CentOS7 升級(jí)Python2.x到3.x

~]# python -V????????#查看當(dāng)前python版本

~]# yum -y install python3

~]# mv /usr/bin/python /usr/bin/python.bak

~]# ln -sv /usr/bin/python3 /usr/bin/python

為了兼容yum:修改/usr/bin/yum和/usr/libexec/urlgrabber-ext-down文件,將 #!/usr/bin/python 改為 #!/usr/bin/python2.7

2、安裝阿里云SDK核心庫:

~]# pip3 install aliyun-python-sdk-core

3、阿里云短信服務(wù),申請(qǐng)短信簽名和模板:此處傳遞三個(gè)參數(shù):${host},${time},${item}。

分布式監(jiān)控-zabbix(3.0-4.0)

4、編寫python腳本,并測試

~]# vim /usr/lib/zabbix/alertscripts/sendsms.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-


from aliyunsdkcore.client import AcsClient

from aliyunsdkcore.request import CommonRequest

import sys

client = AcsClient('<accessKeyId>', '<accessSecret>','default')? ? ? ? ? ? ? ? #此處填寫accesskey信息,其獲取地址:https://usercenter.console.aliyun.com


request = CommonRequest()

request.set_accept_format('json')

request.set_domain('dysmsapi.aliyuncs.com')

request.set_method('POST')

request.set_protocol_type('https') # https | http

request.set_version('2017-05-25')

request.set_action_name('SendSms')


#以下將zabbix傳遞的第一個(gè)參數(shù)為發(fā)送人號(hào)碼,并將第二個(gè)參數(shù)message信息,切割為3個(gè)變量:host、time、item

string = sys.argv[2]

phone_number = sys.argv[1]

message = string.split(";")

dict1 = { }

dict1['host'] = message[0]

dict1['time'] = message[1]

dict1['item'] = message[2]


request.add_query_param('RegionId',"cn-hangzhou")

request.add_query_param('PhoneNumbers',phone_number)

request.add_query_param('SignName',"簽名名稱")? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#填寫申請(qǐng)的簽名名稱

request.add_query_param('TemplateCode',"模版CODE")? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #填寫申請(qǐng)的模版CODE

request.add_query_param('TemplateParam',dict1)


response = client.do_action(request)

# python2:? print(response)?

print(str(response, encoding = 'utf-8'))

~]# chmod a+x /usr/lib/zabbix/alertscripts/sendsms.py

~]# python? /usr/lib/zabbix/alertscripts/sendsms.py? 手機(jī)號(hào)碼 '官網(wǎng);18:03;test'? ? ? ? ? ? #參數(shù)1:手機(jī)號(hào)碼;參數(shù)2:3個(gè)參數(shù)用;號(hào)隔開

分布式監(jiān)控-zabbix(3.0-4.0)

5、zabbix web端設(shè)置

管理--報(bào)警媒介類型--創(chuàng)建媒體類型

分布式監(jiān)控-zabbix(3.0-4.0)

管理--用戶--報(bào)警媒介--添加

分布式監(jiān)控-zabbix(3.0-4.0)

配置--動(dòng)作--事件源:觸發(fā)器--創(chuàng)建動(dòng)作

消息內(nèi)容:

{TRIGGER.NAME}:{TRIGGER.KEY1};{EVENT.TIME};{TRIGGER.STATUS}

分布式監(jiān)控-zabbix(3.0-4.0)

最后進(jìn)行故障測試,驗(yàn)證是否發(fā)送成功。查看:報(bào)表--動(dòng)作日志


三、釘釘群報(bào)警:

官方參考文檔:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq

1、釘釘建群,添加自定義webhook機(jī)器人,復(fù)制webhook地址;注意新版釘釘有安全設(shè)置。示例選擇自定義關(guān)鍵字:監(jiān)控

2、建立腳本

~]# vim /usr/lib/zabbix/alertscripts/dingding.sh

#!/bin/bash

to=$1

subject=$2

text=$3

curl 'webhook地址' \? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#此處的地址為機(jī)器人的webhook地址

-H 'Content-Type: application/json' \

-d '

{"msgtype": "text",

"text": {

"content": "'"$text"'"

},

"at":{

"atMobiles": [ "'"$1"'" ],

"isAtAll": false

}

}'

~]# chmod a+x /usr/lib/zabbix/alertscripts/dingding.sh

~]# chown zabbix:zabbix /usr/lib/zabbix/alertscripts/dingding.sh

~]# bash /usr/lib/zabbix/alertscripts/dingding.sh 1 2 監(jiān)控? ? ? ? ? ? ? ? ? ? #第三個(gè)參數(shù)必須包含自定義關(guān)鍵字,否則失敗

3、同上設(shè)置報(bào)警媒介、用戶和動(dòng)作。

腳本參數(shù)按次序分別是:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}

消息內(nèi)容同郵件報(bào)警一致即可

收件人填寫手機(jī)號(hào)碼即可

最后進(jìn)行故障測試,驗(yàn)證是否發(fā)送成功。查看:報(bào)表--動(dòng)作日志




向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI