记录一次压测后的自我技术提升
这事儿得从机房停电说起。那天吭哧吭哧做完并发压测,正准备截Zabbix监控图写报告,突然发现监控曲线神秘失踪——系统组小哥挠着头说:“上次停电后,zabbix服务好像就没起来过…” 我盯着空荡荡的图表界面,大脑的CPU温度可能比服务器还高。
其实早该动手造轮子了!想做个专属监控面板,但Python水平停留在"print(‘Hello World’)"的程度。直到和开发同事聊到AI热度时,他表示:“VSCode+AI(豆包插件)很好用,建议我也提前接触一下”。以后IT技术从业者AI将是必备技能了。
VSCode+AI(豆包插件)
设置–>扩展

搜“MarsCode AI”

使用“DeepSeek-R1”

实现 WEB 界面展示

代码下载: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的沟通,从而完成自己的需求。
欢迎赞赏支持或留言指正

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




