暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

用Claude Code编写一个监控Oracle数据库的监控系统

skylines 2026-03-20
1
编写这个监控系统的背景
这次自己动手借助AI工具去写一个数据库监控系统的因素还是有多个的,一个是Oracle数据库暂时没有接入类似Zabbix和Prometheus这些开源的监控系统,更没有接入任何商用的监控系统。不是我不会部署和使用Zabbix和Prometheus这些监控系统,而是还没有太大必要性,去接入当前已有的Zabbix监控系统。因为当前的zabbix监控系统版本是6.0的,官网说法是:监控Oracle类型的数据库,只对12C起步的版本支持,做过兼容性测试。我所维护的Oracle数据库基本都是11G的。之前也尝试过使用Zabbix 6.0自带的ODBC接口和模板进行接入(没有测通),也尝试过使用orabbix加自定义模板接入(已测通),两种方法我都不采用,由于我没有任何zabbix系统的账号,折腾起来太麻烦了,就放弃Oracle数据库接入zabbix进行监控。还有因为最近AI技术进步可观,想试用一番,就想尝试借助Claude Code的编程能力,根据自己的运维需求,去DIY一个用来监控Oracle数据库的监控系统。
需求与AI工具交互
我根据自己的运维监控需求,把需求内容写到*.md文件上,需求不多,相对简单,要求有前后端,就告诉Claude Code帮忙做出来。后面也提过两次大的新功能需求添加,都写到新的*.md文件上,以及小功能(数据库实例状态探测),没有写下来,直接告诉Claude Code。
最终做出来的监控系统,采用的技术架构和成品就如下图例展示。
系统采用的技术架构
系统部署的环境要求
简单说下该监控系统的技术要求,就是运行在python3环境(python 3.10+),后端存储使用MySQL,需要安装以下python3的插件:
     cat >requirements.txt
    Flask>=2.3.0
    Flask-SQLAlchemy>=3.0.0
    Flask-JWT-Extended>=4.5.0
    Flask-Cors>=4.0.0
    PyMySQL>=1.1.0
    cryptography>=41.0.0
    python-dotenv>=1.0.0
    oracledb>=2.0.0
    APScheduler>=3.10.0
    Werkzeug>=2.3.0
    pytz>=2023.3

    监控系统的功能模块

    这个监控系统的功能模块主要分为以下一些:

    1、用户信息管理和登陆认证模块。

    2、定时任务调度、定时探测和定时采集模块。

    3、仪表盘模块,总看板。

    4、数据库资产管理模块。

    5、采集管理和模板管理模块。

    6、告警管理模块。

    7、监控项目内容细节展示模块,下面细分多个监控项目卡片。

    就第2个功能模块设计是内置的,其他的模块,在系统前端都能看到。

    监控系统的功能展示

    监控项目内容展示的卡片如下:

    在访问方面,用nginx也做了反向代理。

    这样,前后端的端口就没有直接暴露出来。

    总结

    做完成这个监控系统的过程中,包括写需求、与AI工具(Claude Code)交互沟通、配置环境、部署系统、测试与验证、评估与优化和问题发现与解决,这些工作,前前后后总共花了3个左右的人天。当中很多问题,基本交给Claude Code帮忙解决,也有一些问题,它一直解决不了,后面根据我的指引,才解决掉。这个问题,就是采集时候,一次的采集任务,调度器总是同时发起了两个采集进程,导致同时收集了两个采集结果,写入到了资料库,导致前端展示的时候,展示了两份数据。可能是根据实际运行环境的原因,导致它一直没法发现到,因为它看不到后台在同时运行了两个后端进程。

    文章转载自skylines,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论