一、分离zabbix数据库

提示:应用场景,随着公司业务的发展,管理的主机增多,一台服务器不能满足大量信息的及时处理。

环境:

zabbix-server:192.168.2.130 mariadb:192.168.2.137

1)开启一台centos7,安装mariadb-server,创建zabbix数据库和用户

安装并启动数据库:

结合Python编写微信机器女友发送zabbix报警信息_数据库


登录数据库,创建zabbix数据库和用户并授权:

结合Python编写微信机器女友发送zabbix报警信息_运维_02


2)在zabbix服务器上备份导出zabbix数据库(zabbix-server:192.168.2.130)

备份原zabbix服务器数据库:

mysqldump -uroot --databases zabbix > `date +%F`_zabbix.sql

3)在zabbix服务器上把备份的数据库文件导入到分布式数据库(mysql:192.168.2.137)
cat 2021_zabbix.sql | mysql -h 192.168.2.137 -uzabbix -p123.com zabbix

4)修改zabbix-server上的数据库连接信息
vim /etc/zabbix/zabbix_server.conf
修改为:
DBHost=192.168.2.137
DBName=zabbix
DBUser=zabbix
DBPassword=123.com
保存退出

vim /etc/zabbix/web/zabbix.conf.php
修改为:
$DB[‘TYPE’] = ‘MYSQL’;
$DB[‘SERVER’] = ‘192.168.2.137’;
$DB[‘PORT’] = ‘0’;
$DB[‘DATABASE’] = ‘zabbix’;
$DB[‘USER’] = ‘zabbix’;
$DB[‘PASSWORD’] = ‘123.com’;
保存退出

5)重启zabbix和httpd服务
systemctl restart zabbix-server httpd


二、自定义监控–磁盘吞吐量

提示:网络可能延迟

例如:

1)测试:检查磁盘的tps命令

结合Python编写微信机器女友发送zabbix报警信息_linux_03


2)在agent客户端的配置文件目录下新增监控配置文件(键值对命名法)

创建配置文件:

vim /etc/zabbix/zabbix_agentd.d/iostat.conf

添加:

UserParameter=iostat,iostat |awk '/^sda/{print $2}'

保存退出
systemctl restart zabbix-agent

3)客户端查看监控项(证明设置无误,有时会提示超时忽略)

结合Python编写微信机器女友发送zabbix报警信息_运维_04

4)在zabbix web 界面进行监控项关联

配置–主机–找到对应主机–监控项–创建监控项–命名–键值(iostat)–信息类型(浮点数)–应用集名-更新

结合Python编写微信机器女友发送zabbix报警信息_zabbix_05


能看到这个

结合Python编写微信机器女友发送zabbix报警信息_zabbix_06


验证:监测–最新数据

结合Python编写微信机器女友发送zabbix报警信息_linux_07




三、zabbix报警

1、 报警音报警

1)前端声音报警:右上角小人(用户)–正在发送信息–勾选–更新

结合Python编写微信机器女友发送zabbix报警信息_linux_08


2)添加触发器(以监控主机登录用户数大于等于三声音报警为例)配置–主机–找到对应主机–触发器–创建触发器–命名–严重性–添加表达式–选择监控项–间隔–结果–添加

结合Python编写微信机器女友发送zabbix报警信息_zabbix_09

结合Python编写微信机器女友发送zabbix报警信息_数据库_10


2、邮件报警

1)配置–动作–启用report–应用

结合Python编写微信机器女友发送zabbix报警信息_运维_11


2)右上角小人(用户)–报警媒介–添加–收件人邮箱地址(推荐使用qq邮箱)

结合Python编写微信机器女友发送zabbix报警信息_linux_12

3)管理–报警媒介类型–email–添加SMTP服务器:smtp.qq.com–端口:465–HELO:qq.com–SMTP电邮:1793594335@qq.com

–SSL/TLS–勾选–用户名称:1793594335@qq.com–密码:授权码(打开邮箱–设置–开启smtp服务–获取授权码–保存配置)

结合Python编写微信机器女友发送zabbix报警信息_数据库_13


QQ邮箱登录也要设置,重点是要获取授权码,省略!

验证:触发报警,可以查看到报警邮件。

结合Python编写微信机器女友发送zabbix报警信息_zabbix_14


4)微信女友报警:

微信操作

1.申请企业微信

我的企业–复制企业ID:wwb51a90f544c78346

结合Python编写微信机器女友发送zabbix报警信息_数据库_15

应用管理–创建应用–名称:报警机器人–选择部门–创建应用–点开报警机器人

–复制:AgentId 1000002 ,Secret (需要登录企业微信,“企业微信团队”选项会有此信息)

结合Python编写微信机器女友发送zabbix报警信息_运维_16

2.编写python微信报警脚本,并修改企业id和用户密码

复制Python脚本到zabbix-server服务器的/usr/lib/zabbix/alertscripts/目录

cd /usr/lib/zabbix/alertscripts/
vim weixin.py

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import requests
import sys
import os
import json
import logging


logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/tmp','weixin.log'),
filemode = 'a')

corpid='微信企业号corpid'
appsecret='应用的Secret'
agentid=应用的id
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']

#发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken

touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]

params={
"touser": touser,
# "toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}

req=requests.post(msgsend_url, data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)

修改:
corpid=‘wwb51a90f544c78346’ #您的企业ID
appsecret=‘ptoSa9IMqSOinnOJ2Bq6-4i_EBKJbZ8tcG6R6TlhknU’ #报警机器人密码
agentid=1000002 #报警机器人ID

保存退出
赋予执行权:chmod 777 weixin.py

安装Windows格式文件转Unix格式服务

结合Python编写微信机器女友发送zabbix报警信息_linux_17


格式转换:dos2unix -k weixin.py

结合Python编写微信机器女友发送zabbix报警信息_zabbix_18


创建日志文件并赋权weixin.log:

touch /tmp/weixin.log
chown zabbix:zabbix /tmp/weixin.log

测试发送微信:

结合Python编写微信机器女友发送zabbix报警信息_数据库_19


企业微信验证:

结合Python编写微信机器女友发送zabbix报警信息_云计算_20


zabbix网页设置:

目的:zabbix-web与微信关联

流程:

管理–报警媒介类型–右上角“创建媒体类型”

–“名称(微信报警),类型(脚本),脚本名称(必须写对),参数添加3个:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}”

–更新

右上角–小人(用户)–报警媒介–“类型(微信报警,收件人:微信账号)”–添加–更新

先启用报警之后通过报警媒介发生信息的动作。

结合Python编写微信机器女友发送zabbix报警信息_运维_21

结合Python编写微信机器女友发送zabbix报警信息_zabbix_22

结合Python编写微信机器女友发送zabbix报警信息_运维_23

结合Python编写微信机器女友发送zabbix报警信息_数据库_24


选择报警媒介:

结合Python编写微信机器女友发送zabbix报警信息_运维_25

注意:收件人,是填写微信的账号:

结合Python编写微信机器女友发送zabbix报警信息_zabbix_26


验证:触发报警,在企业微信查收信息

添加触发器(以监控主机登录用户数大于等于三声音报警为例),和前面邮件报警设置一样

结合Python编写微信机器女友发送zabbix报警信息_数据库_27


企业微信查看:成功

结合Python编写微信机器女友发送zabbix报警信息_云计算_28


扩展:

修改邮件通知内容(可以让消息变得易读)
1.配置–动作–Report problems to Zabbix administrators
操作:修改默认标题,修改消息内容
主题:Problem: {EVENT.NAME}故障{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}
2.修改后,更新