@zabbix监控各项服务及报警添加
一、企业微信号申请
https://work.weixin.qq.com/
1.注册
因为我们没有企业,所以我们选择组织。
下一步,
按需填好相应信息
2.配置微信企业号
设置好相应信息,后记录下企业id
ps:我的企业微信早就注册了,所以中间步骤不全,大体就是信息补充
点击通讯录,添加一个组或成员。可以扫码添加或者短信邀请
点击用户姓名,记录用户账号
点击企业应用,新增应用
创建完成后记录agentld和secret
准备事项
微信企业号:
企业号已被部门成员关注
企业号有可以发消息的应用,授权管理员,可以使用应用给成员发送消息
需要的信息:
企业号id
secret
agentld
3.测试使用命令行发送消息
1)下载weixin.py脚本文件
链接:https://pan.baidu.com/s/1CN3CISkbNJwBGq1lepoN4Q
提取码:952u
weixin脚本内容:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: zhang
#date: 2019-04-07
#comment: zabbix接入微信报警脚本
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 = 'ww4adcac9b11fd1981' #需要对应自己信息修改
appsecret = 'kI3rXnybHpw-BX-po6hxGQV9HfKjJuVtzxSkbuJnyjk' #需要对应自己信息修改
agentid = 1000003 #需要对应自己信息修改
#获取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[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)
2)上传脚本文件到数据库并修改
[root@zabbix ~]# rz weixin.py
[root@zabbix ~]# vim weixin.py
corpid = 'ww50a15d892a539965'
appsecret = '_eWeLhHDjylIrQoPIE9k2C_w205cWOxL6lmjSB7FMF8'
agentid = 1000003
分别对应刚才记录的值
3)安装pip
[root@zabbix ~]# yum install python-pip -y
如果下载不了:
[root@zabbix ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
4)安装requests
[root@zabbix ~]# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
5)用命令行发送微信消息
[root@zabbix ~]# python weixin.py 'WuYiShuai' 'text' 2222
需要传参
第一个参数:企业微信用户名
第二个参数:标题
第三个参数:文章内容
4.配置zabbix微信报警
1)查看报警脚本存放的目录
[root@zabbix ~]# grep script /etc/zabbix/zabbix_server.conf|grep Alert
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
2)将脚本移动到此目录并添加可执行权限
[root@zabbix ~]# mv weixin.py /usr/lib/zabbix/alertscripts/
[root@zabbix /usr/lib/zabbix/alertscripts]# chmod +x weixin.py
3)给微信告警日志授予zabbix用户
[root@zabbix ~]# chown zabbix.zabbix /tmp/weixin.log
5.创建报警媒介类型(发件人)
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
注:尽量不要手敲,括号两边不能有空格
6.创建报警媒介(收件人)
7.触发测试
[root@web01 ~]# swapoff -a
恢复
[root@web01 ~]# swapon -a
二、聚合图形、模板共享
1. 聚合图形
最新数据 >> 图形
自定义名称
点击聚合图形的名称,进行更改,添加要显示的图形即可。
2.幻灯片
添加幻灯片
监测中 >> 复合图形 >> 幻灯片演示
创建幻灯片,名称自定,选择要显示的
幻灯片根据设定的时间自动播放
3.模板共享
网络共享模板资源
https://github.com/zhangyao8/zabbix-community-repos
三、自动发现、自动注册
1.简介
自动发现:zabbix Server主动发现所有客户端,然后将客户端登记自己的小本本上。
缺点zabbix server压力山大(网段大,客户端多),时间消耗多。
自动注册:zabbix agent主动到zabbix Server上报到,登记;
缺点agent有可能找不到Server(配置出错)
2.两种模式
- 被动模式:默认 agent被server抓取数据 (都是在agent的立场上说)
- 主动模式:agent主动将数据发到server端 (都是在agent的立场上说)
注意: 两种模式都是在agent上进行配置
**zabbix的使用要在hosts文件中预先做好主机名的解析**
3.自动发现-被动模式
第一步:完成之前的安装
zabbix Server安装完毕
第二步:配置agent客户端
zabbix agent安装完毕,注意配置Server=192.168.100.102
第三步:在web界面上进行配置
web界面:配置 >> 自动发现 >> Local network
使用自带的自动发现规则(进行修改)即可
第四步:创建发现动作
配置 >> 动作 >> Auto discovery. Linux servers.
添加一个搜索条件,主机IP地址范围
在操作中添加两个动作: 添加主机与启用主机,注意选择后要点击下方的添加按钮。
在监测中自动发现栏查看自动发现后的主机列表。
4.自动注册-主动模式
第一步:zabbix Server安装完毕 (完成)
第二步:zabbix agent安装完毕,需要额外增加的配置
vim /etc/zabbix/zabbix_agentd.conf
ServerActive=192.168.100.102
# Hostname=Zabbix server
HostnameItem=system.hostname
[root@localhost ~]# systemctl restart zabbix-agent.service
[root@localhost ~]# netstat -tunlp|grep zabbix
源文件与修改后的文件对比
源文件
第三步:在web页面配置动作
配置 >> 动作 >> 事件源(自动注册) >> 创建动作
名称填写自动注册,触发条件无需修改
在操作中依次选择添加主机,添加到主机群组,与模板关联
添加完动作后,等待就可以了。
注意:重启客户端可以加速发现。但是尽量不要在生产环境中使用。
四、简单监控全网服务
实现原理:通过检测端口存活与进程存活状态监控服务。
1.实际需求
公司架构内的100台生产环境服务器,需要使用zabbix全部监控起来。
2.方案规划
常规监控:cpu,内存,磁盘,网卡
问题:怎样快速添加100台机器?
方法1:使用克隆的方式
方法2:自动注册和自动发现
方法3:调用zabbix api接口 curl 、python
服务监控,url监控等特殊监控:自定义监控
监控服务简单通用方法:
1). 监控端口 netstat ss lsof ==》 wc -l
2). 监控进程 ps -ef|grep 进程 |wc -l 试运行一下
3). 模拟客户端的使用方式监控服务端
web ==》 curl
mysql ==》 select insert
- 监控备份服务器,简单方法是监控rsync端口;
方法1:监控873端口net.tcp.port[,873]
方法2:模拟推送拉取文件
- 监控NFS服务器,使用监控NFS进程来判断NFS服务器正常;
方法1:端口(通过111的rpc端口获取nfs端口) net.tcp.port[,111]
方法2:showmount -e ip|wc -l
- 监控MySQL服务器,简单方法监控mysql的3306端口,或者使用zabbix提供的Mysql模板;
方法1:端口(通过3306的mysql端口) net.tcp.port[,3306]
方法2:mysql远程登录
方法3:使用zabbix agent自带的模板及key
- 监控2台web服务器,简单方法监控80端口;
方法1:端口(通过80的web端口) net.tcp.port[,80]
方法2:看网页状态码、返回内容==zabbix 自带WEB检测
- 监控URL地址来更精确的监控我们的网站运行正常;
使用zabbix自带的监控Web监测 进行监控
- 监控Nginx的7种连接状态。
自定义监控
3.具体实施
第一步:添加自动发现规则,创建发现动作。
第二步:监控各应用服务。
1)监控NFS服务
创建NFS监控模板
使用 proc.num[,,,] 键值,检测nfs进程的数量
在服务端进行测试
[root@localhost ~]# zabbix_get -s 192.168.100.105 -p 10050 -k "proc.num[,,,rpc]"
[root@localhost ~]# zabbix_get -s 192.168.100.105 -p 10050 -k "proc.num[nfsd,,,]"
创建NFS监控模板
可以新创建一个NFS服务器群组,用来管理NFS服务器。
在模板中创建应用集
在模板中添加监控项,并关联到新创建的应用集中
键值使用自带的 proc.num[,rpc]
两种检测方式使用一种,也可同时使用,键值为 proc.num[nfsd,]
为监控项创建触发器
为监控项创建图形
为触发器设置报警动作
检测配置情况。客户端关闭NFS服务,查看监控以及报警功能。
NFS服务器关闭NFS服务
[root@web01 zabbix_agentd.d]# systemctl stop nfs
故障恢复测试
NFS服务器启动NFS服务。
[root@web01 zabbix_agentd.d]# systemctl start nfs
2)监控MySQL服务
方案一:使用自带的MySQL模板
将自带的mysqlkey值加上mysql的账户密码,否则不能获取到数据。
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
方案二:监控MySQL端口状态。
net.tcp.port[,port] 利用自带的监控端口键值进行监控
server端测试MySQL运行状态
[root@localhost ~]# zabbix_get -s 192.168.100.106 -p 10050 -k "net.tcp.port[,3306]"
1
#检查是否能建立 TCP 连接到指定端口。返回 0 - 不能连接;1 - 可以连接
创建自定义MySQL模板、应用集、监控项、触发器、图表、动作。流程同自定义NFS模板相同。
测试报警功能。
MySQL服务器关闭MySQL服务。
[root@web02 ~]# service mysqld stop
Stopping mysqld (via systemctl): [ OK ]
启动服务测试恢复报警功能。
[root@web02 ~]# service mysqld start
Starting mysqld (via systemctl): [ OK ]
3)监控web服务
创建监控模板 监控 nginx服务与 80 端口
创建监控模板 监控 nginx服务与 80 端口
proc.num[<name>,<user>,<state>,<cmdline>] 进程数。返回整数
net.tcp.port[<ip>,port] 检查是否能建立 TCP 连接到指定端口。返回 0 - 不能连接;1 - 可以连接
在server端测试NGINX状态
[root@localhost ~]# zabbix_get -s 192.168.100.105 -p 10050 -k "proc.num[,,,nginx]"
2
[root@localhost ~]# zabbix_get -s 192.168.100.105 -p 10050 -k "net.tcp.port[,80]"
1
操作流程与监控NFS和MySQL相似,通过监控进程与端口的方式。
创建模板 —— 创建应用集 —— 创建监控项 —— 创建触发器 —— 创建图形 —— 配置动作 —— 测试报警功能
4)监控URL地址
创建检测页面,在NGINX服务器根目录下新建一个check.html检测文件
在web服务器添加
[root@web01 ~]# echo ok > /usr/share/nginx/html/check.html
测试检测页面,在server端进行测试
[root@localhost ~]# curl http://192.168.100.105/check.html
ok
如果有多台服务器,可以循环测试
[root@localhost ~]# for i in 105 106 107;do curl http://192.168.100.$i/check.html;done
ok
curl: (7) Failed connect to 192.168.100.106:80; Connection refused
curl: (7) Failed connect to 192.168.100.107:80; No route to host
创建URL监测模板
创建应用集
创建web监测
创建图形
查看web监测效果
本文来自博客园,作者:ଲ一笑奈&何,转载请注明原文链接:https://www.cnblogs.com/zeny/p/15657652.html