zabbix server端:centos7.6
php
1、關閉防火牆和selinux、設置時區和時間同步
python
~]# systemctl stop firewalldmysql
~]# systemctl disable firewalldlinux
~]# setenforce 0nginx
~]# vim /etc/sysconfig/selinuxweb
SELINUX=disabled #將enforcing更改成disabledsql
# timedatectl set-timezone Asia/Shanghai數據庫
~]# yum -y install chronyjson
~]# vim /etc/chrony.confvim
server ntp1.aliyun.com iburst #修改成阿里雲的ntp服務器
~]# systemctl restart chronyd
2、更換爲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
3、安裝LAMP環境
~]# yum -y install mariadb mariadb-server httpd php php-mysql
~]# systemctl start httpd mariadb
~]# systemctl enable httpd mariadb
~]# mysql_secure_installation
4、安裝zabbix程序,此處選用3.0 LTS(長期維護版)
~]# 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
初始化數據庫:
~]# 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的數據庫密碼,自行設置
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 #輸入正確的時區信息
~]# systemctl restart zabbix-server zabbix-agent httpd
~]# systemctl enable zabbix-server zabbix-agent httpd
5、瀏覽器初始化zabbix的web
~]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/usr/share/zabbix"
~]# systemctl restart httpd
訪問http://server-ip,默認帳號爲Admin,密碼爲zabbix。生產環境注意:一、修改Admin密碼;二、關閉guest用戶。
6、因爲3.0的不少模板支持的問題,因此此處升級爲4.0LTS。
阿里雲的zabbix倉庫源包:
https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
具體參考官方升級指南:
https://www.zabbix.com/documentation/4.0/zh/manual/installation/upgrade/packages/rhel_centos
7、添加對中文的支持,避免中文亂碼問題:3.0和4.0的區別:3.0路徑:/usr/share/zabbix/fonts/ 4.0路徑:/usr/share/zabbix/assets/fonts/
如下示例爲4.0LTS版本
找一臺windows主機:win+R,輸入fonts(即C:\Windows\Fonts),選擇某一字體(此處示例爲:宋體常規)
經過拖動上傳字體文件到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
經常使用監控方式:
1、經過agent監控:
一、安裝zabbix-agent程序和設置配置文件
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 #設置server端IP
#ServerActive=172.20.120.214 #此處沒有啓用active模式,因此註釋(active模式是客戶端主動發送數據給server端)
Hostname=172.20.120.182 #設置客戶端的名稱
~]# 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}'` #此處獲取網卡爲eth0,請按需修改
~]# 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
二、添加到web監控的模式:
a、手動添加
訪問web端http://server-ip:配置-主機-建立主機-設置主機相關信息:如圖
b、自動發現
步驟:
一、設置自動發現後要進行的動做
訪問web端http://server-ip:配置-動做-事件源(自動發現)-建立動做
二、設置自動發現規則
訪問web端http://server-ip:配置-自動發現-建立發現規則
Zabbix監控nginx性能
一、查看是否有with-http_stub_status_module該模塊
~]# nginx -V
二、配置nginx狀態頁面
~]# 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正在處理的活動鏈接數。
server :表示Nginx啓動到如今共處理了多少個鏈接
accepts :表示Nginx啓動到如今共成功建立多少次握手
handled requests :表示總共處理了 多少次請求
Reading :Nginx 讀取到客戶端的 Header 信息數
Writing :Nginx 返回給客戶端 Header 信息數
Waiting :Nginx 已經處理完正在等候下一次請求指令的駐留連接(開啓keep-alive的狀況下,這個值等於Active-(Reading+Writing))
因此,在訪問效率高,請求很快被處理完畢的狀況下,Waiting數比較可能是正常的.若是reading +writing數較多,則說明併發訪問量很是大,正在處理過程當中。
三、編寫監控腳本
~]# vim /etc/zabbix/ngx_status.sh
#!/bin/bash
HOST="127.0.0.1"
PORT="80"
#檢測nginx進程是否存在
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}'
}
#執行function
$1
~]# chmod a+x /etc/zabbix/ngx_status.sh
測試腳本
~]# bash /etc/zabbix/ngx_status.sh requests
四、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
五、zabbix web端
下載模板:https://pan.baidu.com/s/1CCaIURk-kXAcEXJ6BD-TEA
導入模板
主機配置
主機添加模板(Template App NGINX)
2、經過snmp方式監控:
Zabbix監控Dell服務器硬件(iDRAC)
一、Dell服務器端
瀏覽器登陸iDRAC
啓用SNMP
點擊「iDRAC」——「網絡」——「服務」——「SNMP代理」
勾選「已啓用」,而後點擊「應用」
二、zabbix web端
下載模板:https://pan.baidu.com/s/1CCaIURk-kXAcEXJ6BD-TEA
導入模板
主機配置SNMP interfaces
主機添加模板Dell iDRAC;注意點:宏的設置須要對應起來(即SNMP community的值要對應起來)。
zabbix監控華爲交換機和防火牆設備
一、在交換機和防火牆開啓snmp功能,和設置SNMP community
二、zabbix web端
下載模板:https://pan.baidu.com/s/1CCaIURk-kXAcEXJ6BD-TEA
導入模板
主機配置SNMP interfaces
主機添加模板(Template Net Huawei VRP SNMPv2)注意點:宏的設置須要對應起來(即SNMP community的值要對應起來)。
windows服務器的監控:
一、安裝agent客戶端;官網下載地址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 //容許在本地執行遠程命令
LogRemoteCommands=1 //執行遠程命令是否保存操做日誌
Server=172.20.120.214 //zabbix_server主機IP地址
#ServerActive=192.168.1.10 //因爲沒有開啓active模式,所以註釋便可
Hostname=****** //被監控主機名,自身主機名
打開命令提示符進行安裝
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
完成安裝後,服務裏就有了zabbix-agent服務
最後記得設置防火牆容許zabbix-agent互聯
windows補充點:
默認windows模板沒有cpu使用率監控項,添加以下:
名稱:CPU usage%
鍵值:perf_counter[\Processor(_Total)\% Processor Time]
信息類型:浮點數
單位:%
問題:沒法獲取cpu使用率,server端日誌:Collector is not started
解決方法:重建性能計數器設置:管理員執行下lodctr /R命令便可
設置報警方式:
1、郵件報警:
一、管理--報警媒介類型--建立媒體類型
二、管理--用戶--報警媒介--添加
三、配置--動做--事件源:觸發器--建立動做
操做內容以下:
故障{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}
更新操做內容以下:
更新信息:{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}.
最後進行故障測試,驗證是否發送成功。查看:報表--動做日誌
2、阿里雲短信報警:此處示例使用python3.6+(python2存在中文短信亂碼的狀況)
一、CentOS7 升級Python2.x到3.x
~]# python -V #查看當前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
二、安裝阿里雲SDK核心庫:
~]# pip3 install aliyun-python-sdk-core
三、阿里雲短信服務,申請短信簽名和模板:此處傳遞三個參數:${host},${time},${item}。
四、編寫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傳遞的第一個參數爲發送人號碼,並將第二個參數message信息,切割爲3個變量: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',"簽名名稱") #填寫申請的簽名名稱
request.add_query_param('TemplateCode',"模版CODE") #填寫申請的模版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 手機號碼 '官網;18:03;test' #參數1:手機號碼;參數2:3個參數用;號隔開
五、zabbix web端設置
管理--報警媒介類型--建立媒體類型
管理--用戶--報警媒介--添加
配置--動做--事件源:觸發器--建立動做
消息內容:
{TRIGGER.NAME}:{TRIGGER.KEY1};{EVENT.TIME};{TRIGGER.STATUS}
最後進行故障測試,驗證是否發送成功。查看:報表--動做日誌
3、釘釘羣報警:
官方參考文檔:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
一、釘釘建羣,添加自定義webhook機器人,複製webhook地址;注意新版釘釘有安全設置。示例選擇自定義關鍵字:監控
二、創建腳本
~]# vim /usr/lib/zabbix/alertscripts/dingding.sh
#!/bin/bash
to=$1
subject=$2
text=$3
curl 'webhook地址' \ #此處的地址爲機器人的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 監控 #第三個參數必須包含自定義關鍵字,不然失敗
三、同上設置報警媒介、用戶和動做。
腳本參數按次序分別是:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}
消息內容同郵件報警一致便可
收件人填寫手機號碼便可
最後進行故障測試,驗證是否發送成功。查看:報表--動做日誌