zabbix自定义监控及告警

本文详细介绍了如何在Zabbix 3.4版本中配置自定义监控项及告警机制,包括安装Agent、编写监控脚本、配置监控项、测试监控效果、设置触发器、配置报警媒介及动作,最后提供了钉钉机器人接口脚本示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

————————这里使用的是zabbix3.4版本——————————

zabbix可以根据需要自定义监控项,通过编写脚本来实现对某些数据或功能的监控告警

自定义监控

1. 安装agent并修改配置文件

  (这里脚本已经写好了,“D:\zabbix\script\get_process_info.py”,后面的是跟的脚本参数)

    在监控主机安装好zabbix_agent后,需要修改其中的配置文件。

LogFile=D:\zabbix\log\zabbix_agentd.log
Server=172.17.62.108  # server IP
ServerActive=172.17.62.108  # 主动模式的server IP地址
Hostname=   # 主机名
UnsafeUserParameters=1
UserParameter=get.monitor.info[*],D:\zabbix\script\get_process_info.py "$1" "$2" "$3" "$4" "$5"  # 自定义监控脚本

注:这里是windows环境下,安装服务:

安装服务  D:\zabbix\bin\zabbix_agentd.exe   -c   D:\zabbix\conf\zabbix_agentd.conf   -i
卸载服务  D:\zabbix\bin\zabbix_agentd.exe   -c   D:\zabbix\conf\zabbix_agentd.conf   -d
启动服务  D:\zabbix\bin\zabbix_agentd.exe   -c   D:\zabbix\conf\zabbix_agentd.conf   -s
停止服务  D:\zabbix\bin\zabbix_agentd.exe   -c   D:\zabbix\conf\zabbix_agentd.conf   -x

2. 配置监控主机

    登录zabbix前端web界面,配置——主机——创建主机

    

    选择主机,并填写以下红框部分。主机名称:与agent配置文件中Hostname保持一致,可见名称:自定义,群组:选择一个或者新建一个,ip地址:一般为内网ip,如果需要走公网监控则填写公网ip

    

3.添加监控项

    配置——主机——监控项——创建监控项(右上角)  或者通过 配置——模板——创建模板  在模板上添加监控项并应用到主机

    

    现在开始配置监控项,名称、键值、信息类型、单位、间隔、应用集等。名称可以根据目的自定义即可;键值,前面部分为agent配置文件中 UserParameter 值定义的名称,必须一致,"[]"中为脚本参数,以逗号隔开,具体根据编写的脚本来填;应用集可以对监控项进行分类;其余几项根据实际情况配置修改

 

4.测试监控效果(这里默认网络没有问题)

    连接zabbix_server,进入安装目录的bin下,运行zabbix_get(‘192.168.1.10’是被监控主机的IP地址),可以看到我们成功获取了主机的VMS提交值,单位B

$ cd /usr/local/zabbix/bin/
$ ls
zabbix_get  zabbix_sender
$ ./zabbix_get -s 192.168.1.10 -k get.monitor.info[sswap_used,os]
11242897408

    回到web页面,检测中——最新数据,选择主机,过滤,选择刚才的监控项,我们也可以查看一段时间的数据图形,自定义监控项就添加完成了

    

告警

1.建立触发器

    配置——主机——触发器——创建触发器,可以为某一个主机建立,也可以在模板中建立触发器后应用到主机

    

    选择添加表达式,选择需要配置触发器的监控项,当监控项最新值大于N时,触发器生效

    

2.报警媒介

    管理——报警媒介类型——创建媒体类型(右上角),这里先介绍最常用的邮件报警

    

    1).QQ邮箱媒介

    直接采用qq邮箱,可以省却许多麻烦,如搭建邮件服务器等。采用465端口(云主机25端口一般默认被封,且安全性不高)。接着到qq邮箱主页中,QQ邮箱——设置——账户——开启IMAP/SMTP服务,并生成授权码,用户密码即授权码

    

    

    邮箱报警媒介类型就配置完成了,这里不会介绍报错处理,有遇到问题不能发送邮件报错的,可以查看我的另一篇文章,其中有部分详细介绍。

    2).电话、钉钉等报警媒介

    

    利用脚本类型的媒介可以实现电话、短信、钉钉、微信等方式告警,这里的脚本参数是传递的报警信息变量,配置在动作中,稍后会介绍。根据安装目录,脚本放在zabbix_server服务器下,/usr/local/zabbix/share/zabbix/alertscripts/,需要有执行权限。当触发器触发,执行动作,调用报警媒介,传递报警信息,执行脚本,我们就可以通过各种方式受到告警。具体的脚本需要根据接口来写,如购买阿里的电话、短信通知,利用钉钉机器人接口发送信息。文章末尾会给出一些脚本,包括调用钉钉接口。

    3).绑定媒介到用户

    

    只有绑定了媒介,当动作触发了该媒介并传到该用户,且示警度达到上面配置的严灾级别,才会触发动作中的操作。在用户处也可以配置主机权限。

3.配置动作

    配置——动作——创建动作

    动作触发可以设置条件,如非维护状态,示警度大于严重等

    

    之后配置触发动作后的具体的操作,消息内容,框中的内容即是配置的媒介类型中的脚本参数{ALERT.MESSAGE}的值

    

    之后编辑或新的,配置发动对象等,可以发送到某个用户或组,再配置发送到的媒介。注意,用户必须有该媒介,并且有触发动作的主机的权限,否则不会收到消息。同样的我们可以配置恢复和确认操作,也可以不配置。

    

附录

1.钉钉机器人接口脚本

钉钉群——群设置——群机器人——添加机器人

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


headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8b8d62184"


def msg(text):
    json_text = {
        "msgtype": "text",
        "at": {
            "atMobiles": [],
            "isAtAll": False
        },
        "text": {
            "content": text
        }
    }
    print(requests.post(api_url, json.dumps(json_text), headers=headers).content)


if __name__ == '__main__':
    text = sys.argv[1]
    msg(text)

    运行脚本,钉钉受到消息

./send_msg_dingding.py "hello everyone"

    

2.电话告警一般需要购买固定电话号码,并提交审核通过,如阿里云、华为云,之后根据sdk调用接口

3.短信服务也需要购买并通过审核,但相比电话审核方便快捷得多,费用也较低

4.这是python写的监控脚本,可以获取系统信息

# -*- coding:utf-8 -*-
import psutil
import sys

def getpid(processName,number):
	pids=psutil.pids()
	i=1
	for pid in pids:
		
		p = psutil.Process(pid)
		if p.name() == processName:
			if i==int(number):
				return pid
				i+=1
			else :
				i+=1
				continue
	
if  __name__ =="__main__":

	if "rss"==sys.argv[1]:
		pid=getpid(sys.argv[2],sys.argv[3])		
		p = psutil.Process(pid)
		a= p.memory_info()
		print a.rss
	elif "vms"==sys.argv[1]:
		pid=getpid(sys.argv[2],sys.argv[3])		
		p = psutil.Process(pid)
		a= p.memory_info()
		print a.vms
	elif "vms_used" == sys.argv[1]:
		vms_used = psutil.swap_memory().used
		print vms_used
	elif "percent"==sys.argv[1]:
		pid=getpid(sys.argv[2],sys.argv[3])		
		p = psutil.Process(pid)
		percent=p.memory_percent()
		print percent
	elif "cpu_user"==sys.argv[1]:
		pid=getpid(sys.argv[2],sys.argv[3])		
		p = psutil.Process(pid)
		cpu=p.cpu_times()
		print cpu.user
	elif "cpu_system"==sys.argv[1]:
		pid=getpid(sys.argv[2],sys.argv[3])		
		p = psutil.Process(pid)
		cpu=p.cpu_times()
		print cpu.system
		
	elif "cpu_percent" ==sys.argv[1]:
		pid=getpid(sys.argv[2],sys.argv[3])
		p = psutil.Process(pid)
		#print pid
		cpu=p.cpu_percent(interval=1)
		#/psutil.cpu_count()
		#print psutil.cpu_count()
		print cpu
	elif "mem_usd" == sys.argv[1]:
		mem = psutil.virtual_memory()
		print mem.percent
	else:
		print "pless chanshu"

 

### Zabbix 配置主机告警模板 在 Zabbix 中配置主机告警模板是一个多步骤的过程,涉及创建触发器、动作以及集成外部通知工具(如钉钉)。以下是详细的说明: #### 1. 创建监控项 (Items) 监控项是用于收集数据的基础单元。可以通过手动输入命令或者使用现有的插件来定义这些监控项。 对于自定义监控项,可以按照如下方式操作: - 登录到 Zabbix Web 界面。 - 导航至 **Configuration → Hosts** 页面并选择目标主机。 - 进入该主机的 **Items** 菜单选项卡,点击右上角的 “Create item” 按钮。 - 定义 Item 的名称、键值(key)以及其他参数[^1]。 #### 2. 设定触发条件 (Triggers) 触发器基于特定逻辑判断是否发出警告信号。当某个指标超过设定阈值时就会激活相应的事件处理流程。 要建立一个新的触发器,请遵循以下路径: - 访问 **Configuration → Templates 或 Hosts**, 找到对应的实体对象。 - 切换到 **Triggers** 标签页,按下新增按钮。 - 输入表达式描述异常情况的发生标准[^3]。 例如,如果 CPU 使用率高于80%,则可能需要设置这样的规则:“{Template OS Linux:system.cpu.util[,iowait].last()}>80”。 #### 3. 构建自动化响应机制(Action) 通过 Actions 功能模块可以让系统自动做出反应比如发送电子邮件给管理员或是调用第三方 API 接口推送消息至即时通讯软件群聊里头去。 具体做法如下所示: - 去往 **Configuration → Actions** 地址栏位处。 - 添加新 Action 名字及其适用范围(Which objects will be affected?)。 - 编辑 Operation Settings 下拉框里的 Media Type, 并关联之前准备好的 Python 脚本 dingding.py 来实现向 DingTalk 发送通知的功能[^4]。 注意,在此过程中还需要确认 media type 已经正确定义好,并且其 script 参数指向实际存在的位置;同时也要保证 zabbix 用户有足够的权限访问相关资源文件夹及执行相应程序[^2]。 最后一步就是验证整个链条能否正常运作起来——即从检测问题到最后接收到反馈信息为止都顺利完成无误才行哦! ```bash # Example of testing the custom alert script manually before integrating it into Zabbix. ./dingding.py '手机号' '关键词' '测试内容' ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值