AIOps:通过MCP协议为LLM接入Grafana
引言Grafana作为广泛使用的监控可视化平台,积累了海量的运维数据。通过模型上下文协议(MCP),我们可以将大语言模型接入,构建出能够自行构建查询、理解并分析运维数据的智能体。这种结合的核心价值在于:LLM可以自然语言交互的方式,让运维人员直接对话监控数据,无需编写复杂的查询语句,降低运维分析门槛。更进一步,还可以结合告警信息建立相关工作流,例如根据故障内容将工单路由到更精确的团队,将L1的简单问题出具方案结合自动化运维工具,人工审批后自动化处理等。
MCP协议简介MCP(Model Context Protocol)模型上下文协议,是一种用于构建模型和数据之间的上下文和关系的协议,它允许模型和数据之间进行交互,并使用模型进行推理。MCP协议定义了模型和数据之间的交互方式,以及如何使用模型进行推理。智能体通过其所在的MCP客户端,在初始化阶段向MCP服务器发起请求,服务器则按照MCP协议的标准格式返回其提供的所有工具的元数据。其中包括工具的名称、描述、输入参数和输出结果等信息。
简而言之,MCP Server可以看作是一个中间件,他将目标服务的若干API或聚合或单独的封装为MCP ...
清除Edge等chromium浏览器的https缓存
Issue这个问题在应用部署的过程中常见,具体来说,你先部署了https://example.com/,浏览器访问成功之后,你在服务端取消了https,仅保留http,然后尝试访问http://example.com/,结果浏览器自作主张的将请求重定向到了https://example.com/,导致了访问失败。
Solution现在新版本的浏览器基本都没有类似”Automatic HTTPS”这种明显的Flags给调整了,大概能想到的几个大方向就是缓存、HSTS相关的事情。
测试方案: 无痕窗口访问使用浏览器的无痕窗口(InPrivate Mode),访问http://example.com/,测试能否正常访问。
清空缓存并进行硬刷新这个便捷的Feature应该只在Chromium内核的浏览器中有效,在目标页面按下F12打开开发者工具后,鼠标长按网址栏旁的刷新按钮,选择”清除缓存并进行硬刷新”(Empty Cache and Hard Reload)。 然后再次尝试访问http://example.com/,问题应该能得到解决。
HSTS Policy这应该是最常见的原因了,如果服务 ...
虚拟机单盘LVM扩容
场景虚拟机为了仿照服务器场景,用默认的LVM配置安装了RockyLinux,在后期测试过程中需要扩容空间,因为虚拟机硬盘动态可调,所以不打算使用新挂载硬盘的方式,而是直接扩容物理卷,这并不算是LVM的常用用法。
步骤此处略过宿主机扩充虚拟磁盘的步骤,按各虚拟化平台修改相关配置即可。
1.查看当前分区信息123456789101112[xenwayne@localhost ~]$ lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTSsr0 11:0 1 10.2G 0 rom /run/media/xenwayne/Rocky-9-4-x86_64-dvdnvme0n1 259:0 0 80G 0 disk ├─nvme0n1p1│ 259:1 0 1G 0 part /boot└─nvme0n1p2 259:2 0 19G 0 part ├─rl-root │ 253:0 0 17G 0 lvm / └─rl-swap ...
虚拟机下ArchLinux-Pipewire音频卡顿的问题
Issue挺早之前图折腾方便,就在Vmware Workstation里装了ArchLinux,大部分情况都靠SSH连接使用,最近用它看视频的时候才发现音频有明显的卡顿现象,具体表现为播放音频时会断断续续,有明显的延迟和齿音。我这台宿主机还装有Ubuntu和RockyLinux,这两个发行版都没有这个问题,或许跟KDE有点关系?。有时候多等一会这种现象会自行消失,但重启复现率100%,试过更换PulseAudio也未能解决问题。
Solution一番搜索,问题应该跟虚拟机模拟的音频设备性能差有关,可以修改虚拟机里Pipewire的相关配置:
修改~/.config/wireplumber/wireplumber.conf.d/50-alsa-config.conf
1234567891011121314151617monitor.alsa.rules = [ { matches = [ # This matches the value of the 'node.name' property of the nod ...
Debian12限制网卡带宽并持久化配置
最近想把HomeLab的一些应用搬到一个独立的虚拟机上,觉得有一个独立的IP比Docker要好管理一些。一个需求是要限制这台虚拟机的网卡带宽,避免影响到其他的应用。路由层面的话OpenWrt对IPv6的流控有点费劲;在宿主机上限制的话,我的宿主机是Unraid,这个魔改的QEMU缺少一些环境。最后还是决定在虚拟机上搞定。
本来打算用wondershaper这个工具,指令写起来比较简单,但是在Debian12上运行有问题,起初以为是apt仓库里的版本太低,又用了源码安装,还是有问题。回头一看这仓库上次commit是四年前😇,那行吧,直接用tc命令吧,tc虽然强大,但是语法还是挺冗杂的。
确认网卡名使用ifconfig或者ip addr命令查看并确认要操作的对应网卡,顺带一提,Debian12应该默认已经不提供ifconfig命令了,该工具已被ip命令替代。本例使用的网卡名是ens2。
如有,清理现有规则123# 清除 ens2 的所有 tc 规则sudo tc qdisc del dev ens2 root 2>/dev/nullsudo tc qdisc del dev ens ...
HomeLab - OpenWrt DHCPv6小记与防火墙最佳实践
春节回去把家里的软路由换上了OpenWrt 24.10,感觉现在OpenWrt对IPv6的支持已经非常完善了,顺便完善一下网关层面的防火墙。
拨号之后看到运营商分配了一个/60的前缀PD,动态静态没太在意,反正下面设备都有DDNS。问题是IPv6的防火墙,IPv4的话因为有NAT,指向内网的固定IP就好了,IPv6的话设备动态IP就不太好办了,初步思路是匹配固定的后缀。
IPv6地址结构典型的可聚合全球单播地址结构如下:
%%{
init: {
"logLevel": "info",
"packet": {
"bitsPerRow": 128,
"bitWidth": 7
}
}
}%%
packet-beta
0-2: "001"
3-47: "Global Routing Prefix"
48-63: "Subnet ID"
64-127: &quo ...
GET&POST请求-Web前后端数据交互学习小记
最近做一个全栈项目学习了一下前后端数据请求交互,这里用NodeJS Express做服务端,简单总结一下GET和POST请求交互的几种方案,本文不会对全部Api进行详细介绍,只是简单的示例,更多内容可以查看官方文档。
表单提交通过html的form表单提交数据,浏览器默认的处理逻辑会刷新页面,并将目标url请求得到的响应渲染到页面上,大部分情况下都是通过event.preventDefault()阻止默认行为,然后通过其他方式处理请求,这小节我们只讨论表单提交的默认行为。
GET请求前端部分:
123456<form action="//localhost:8000/formget" method="get"> <p>表单提交 GET</p> <input type="text" name="a" value="100"> <input type="text" name="b" ...
QMK/VIA固件键盘无需调整Layer实现锁win键
前言本文假设你已经能够使得viaapp连接上你的设备,如果你刚刚接触QMK/VIA,推荐风尘小沙弥大佬的入门教程。
问题笔者目前手持Nuphy Air96 V2,它哪里都好,就是原厂固件竟然没做Fn+win触发锁win键= =,不过貌似很多做了VIA的键盘都没做这个功能,很神奇吧,可能这就是伟大的DIY世界观(。・∀・)ノ。
其实QMK键值是有相关定义的,详见QMK Firmware- Magic Keyccodes。但是截至本文写作时,VIA尚未支持这些键值,只能另寻他法了。
QK_MAGIC_TOGGLE_GUI
GU_TOGG
Toggles the status of the GUI keys
QK_MAGIC_GUI_ON
GU_ON
Enable the GUI keys
QK_MAGIC_GUI_OFF
GU_OFF
Disable the GUI keys
网上搜了搜大伙第一反应都能想到的都是切Layer,但是为了一个锁win键,切Layer有点大材小用了,虽说Nuphy原厂给了8个Layer(,最后我还是在keychr ...
浏览器跨域问题-CORS、JSONP
浏览器报错案例前段时间写LightZone网站调用api的时候遇到了跨域问题,今天来唠唠。浏览器报错:
要明白跨域报错的原因,首先要了解一下什么是跨域。
跨域是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。所谓同源是指,域名,协议,端口相同。同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键的安全机制。
“域名”、”协议”、”端口”三者有一个不同就会产生跨域问题。值得一提的是,即使两个域名解析到同一个ip,也是跨域的。这里我们就要抛出一个疑问:既然调用不同源的资源会产生跨域问题,那么在html中调用第三方css、js不也算作跨域吗?为什么不会报错呢?这是因为浏览器对部分场景允许跨域调用。但是对于ajax、fetch等请求,浏览器就会做限制,不允许跨域调用。以下几种情况是浏览器允许跨域调用的(不全面,仅供参考):
12345678<script src="..."></script><link href=".. ...
Nginx子目录反代
站点配置文件:1234567891011121314#PROXY-START/ location ^~ /map/ { rewrite ^/map/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8100; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; # proxy_hide_header Upgrade; } ...







