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

AI与我共创WEB界面

原创 布衣 2025-04-14
186

记录一次压测后的自我技术提升

  这事儿得从机房停电说起。那天吭哧吭哧做完并发压测,正准备截Zabbix监控图写报告,突然发现监控曲线神秘失踪——系统组小哥挠着头说:“上次停电后,zabbix服务好像就没起来过…” 我盯着空荡荡的图表界面,大脑的CPU温度可能比服务器还高。

  其实早该动手造轮子了!想做个专属监控面板,但Python水平停留在"print(‘Hello World’)"的程度。直到和开发同事聊到AI热度时,他表示:“VSCode+AI(豆包插件)很好用,建议我也提前接触一下”。以后IT技术从业者AI将是必备技能了。

VSCode+AI(豆包插件)

设置–>扩展

image.png

搜“MarsCode AI”

image.png

使用“DeepSeek-R1”

image.png

实现 WEB 界面展示

image.png

代码下载:thread_Oracle_web.zip

代码简介

thread_web\app.py

数据库连接配置

# 数据库连接配置 DB_CONFIG = { # 压测用户 'oracle': { 'user': 'two', 'password': 'two', 'dsn': '192.168.5.94:1521/paypre'}, # 负载监控用户 'monitor': { 'user': 'system', 'password': 'oracle', 'dsn': '192.168.5.94:1521/paypre'} }

监控Sessin\load 代码

@app.route('/monitor') def monitor(): conn = get_db_connection('monitor') if not conn: return jsonify({'error': 'Failed to connect to Oracle database'}), 500 try: cursor = conn.cursor() # 查询按实例分组的Session数量 cursor.execute(""" SELECT inst_id, COUNT(*) AS SESSION_COUNT FROM GV$SESSION GROUP BY inst_id """) sessions = cursor.fetchall() # 获取LOAD cursor.execute(""" select inst_id,value from gv$osstat where stat_name='LOAD' """) load = cursor.fetchall() # 转换为字典格式 sessions = {instance: count for instance, count in sessions} loads = {instance: value for instance, value in load} # 合并数据 merged_data = {instance: {'sessions': sessions.get(instance, 0), 'load': loads.get(instance, 0)} for instance in set(sessions.keys()) | set(loads.keys())} print(merged_data) # 返回JSON格式的数据 return jsonify({ 'data': merged_data }) except Exception as e: return jsonify({'error': str(e)}), 500 finally: conn.close()

thread_web\templates\index.html

定时获取监控数据

// 定时获取监控数据 function fetchMonitorData() { $.ajax({ url: '/monitor', type: 'GET', success: function(response) { if (!monitorData) { monitorData = { labels: [], data: []}; } // 获取当时的时间 let current_time = new Date().toLocaleString('zh-CN', { hour12: false, year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }); monitorData.labels.push(current_time); monitorData.data.push(response.data); // console.log('获取监控数据成功:', monitorData); updateCharts(); }, error: function(xhr) { console.error('获取监控数据失败:', xhr.responseText); } }); }

总结:

  整个代码比较简单,基本80%都是由AI生成,剩下20%自己与AI对话完成调式,以上功能实现耗时1天。
  这次折腾让我发现,AI不是来取代程序员的,倒是特别适合我这种"脚本小子"。为我们DBA实现一些简单的运维工具,一定要适应时代的产物,使其为自己赋能,避免被时代所淘汰。
  此次开发只是简单的实现功能,后续会增加各种数据库的操作选项,及针对不同数据库的不同参数进行监控,逐渐锻炼自己与AI的沟通,从而完成自己的需求。

欢迎赞赏支持或留言指正
image.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论