使用zabbix监控oracle中的表数据

本文介绍如何使用Zabbix和Python监控Oracle中的表数据变化,包括动态发现表中任务及实时告警机制的实现。

使用zabbix监控oracle中的表数据

有时候需要对表中的数据进行监控,比如笔者的这种场景: 微服务自己实现了定时任务,定时任务的执行结果会记录到某张日志表中,如果定时任务执行失败将会对业务产生影响,而微服务又没有自己的告警机制进行通知,故笔者用zabbix+python进行了监控,当任务失败时 进行告警。
而这些业务的定时任务又是动态的,会增加新任务也会删除旧任务,所以对于这些任务要动态发现。下面是效果图。
在这里插入图片描述
在这里插入图片描述

1 原理

python查询job配置表,将表的数据组织成zabbix自动发现的要求的json格式,自动发现监控项后,利用zabbix-sender批量将所有job的数据发送给zabbix-server。
Tips: 使用zabbix-sender批量提交性能更高

使用到的技术组件主要有:

  • zabbix-sender
  • cx-oracle
  • zabbix自动发现

2 表介绍

首先来看下我们需要监控的job日志表,每个job的执行结果都会记录在日志表中,只需要采集job最近执行的一行数据即可,下图中的status字段就是job的执行状态。
![[Pasted image 20221120150202.png]]

但笔者希望告警的时候能带上job的名字,所以需要结合下面这张job_config 配置表来联合查询,并且自动发现也是基于这张配置表,这样自动发现出来的监控项就都有名字了。

请添加图片描述

3 实现

python脚本去查询job配置表,组织成zabbix要求的自动发现数据格式。
首先,需要安装python 模块

pip3 install cx-oracle

自动发现和数据采集脚本,传入check时将返回自动发现需要的数据,传入get_job_status将返回job的执行记录数据
app_job.py

import cx_Oracle
import sys
import json

file_prefix='/tmp/'
job_status_info = file_prefix+'.job_status_info'

class OracleUtils(object):
    def __init__(self, user, password, dsn):
        self.user = user
        self.password = password
        self.dsn = dsn
        self.conn = cx_Oracle.connect(user=self.user, password=self.password,
                                      dsn=self.dsn)
        self.cursor = self.conn.cursor()

    def fetchaall(self, sql):
        self.cursor.<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值