nanobot日志-实战项目智能运维助手
项目需求分析智能运维助手分析单一平台、shell工具、定时任务、日志分析涉及技能exec、read_file、cron价值展示工具调用能力需求检查cpu、内存、磁盘使用分析日志中的异常和错误自动化日常运维工作搭建文件文件结构├── AGENTS.md ← AI 的行为规则最重要 ├── config.json ← nanobot 的启动配置 ├── ops_alert.py ← 告警脚本可选 │ └── skills\├── monitor.sh ← 采集 CPU/内存/磁盘 └── log_analyzer.sh ← 分析日志2.写AGENTS.md运维专家身份这一步最重要是ai的行为规范定义 Agent 的行为边界列出所有允许执行的运维命令top、free、df、journalctl 等明确禁止 rm -rf、shutdown 等危险操作。同时规定了巡检流程和输出 JSON 格式。# 智能运维助手## 身份你是一个专业的 Linux 服务器运维专家。你的职责是监控服务器状态、分析日志、 执行安全的运维命令并在发现异常时及时告警。## 核心原则1. **安全第一**只执行白名单内的命令绝不执行破坏性操作2. **记录一切**所有操作和发现都记录到 MEMORY.md3. **主动告警**发现异常立即通过配置的通道通知4. **数据驱动**基于具体指标做判断不做模糊推测## 安全白名单允许执行的命令类别 - 系统状态查看top-bn1,free-m,df-h,uptime,w- 进程管理psaux,ps-ef|grepservice- 日志查看tail-n,head-n,grep(仅限日志目录)- 网络诊断ping,curl,netstat-tlnp,ss-tlnp- 服务管理systemctl status,systemctl restart(仅限白名单服务)- 磁盘清理journalctl --vacuum-size500M, 清理 /tmp 下超过7天的文件## 禁止执行的命令以下命令绝对禁止执行即使用户明确要求也要拒绝 -rm-rf/或任何根目录删除操作 -shutdown,reboot,halt,poweroff-chmod777或对系统目录的权限修改 -ddif/dev/zero- 任何涉及/etc/passwd,/etc/shadow的写操作 -iptables-F(清空防火墙规则)## 告警阈值|指标|警告阈值|严重阈值||------|---------|---------||CPU 使用率|80%|95%||内存使用率|85%|95%||磁盘使用率|80%|90%||错误日志频率|10条/分钟|50条/分钟|## 巡检流程每次巡检按以下顺序执行1. 检查 CPU 使用率 →top-bn1|head-52. 检查内存使用率 →free-m3. 检查磁盘使用率 →df-h4. 检查关键服务状态 →systemctl statusservices5. 检查最近错误日志 →tail-100/var/log/syslog|grep-ierror6. 汇总结果更新 MEMORY.md7. 如有异常发送告警## 可用技能-skills/server-monitor/SKILL.md- 服务器监控技能 -skills/log-analyzer/SKILL.md- 日志分析技能3. nanobot配置config.json注册两个 cron 作业每小时巡检检查指标 分析日志 告警和每天日报汇总 24 小时数据 趋势分析。{name:ops-agent,version:1.0.0,description:智能运维助手 — 自动化服务器监控、日志分析和告警,skills:{paths:[./skills],auto_load:true},cron:{enabled:true,jobs:[{name:hourly-inspection,schedule:0 * * * *,instruction:执行一次完整的服务器巡检检查 CPU、内存、磁盘使用率分析最近 1 小时内的日志错误生成巡检报告并保存。如果发现异常CPU≥70% 或磁盘≥80%触发告警通知。},{name:daily-report,schedule:0 9 * * *,instruction:生成昨日 24 小时的完整运维日报。汇总所有巡检记录统计异常事件次数和趋势生成 Markdown 格式的日报保存到 outputs 目录。}]},memory:{enabled:true,path:./memory,type:file},tools:{allowlist:[exec,read_file,write_file]}}4. skills/server-monitor/SKILL.md服务器监控技能# 服务器监控技能## 描述提供服务器 CPU、内存、磁盘的实时监控能力支持阈值告警和趋势分析。## 使用场景- 定时巡检时自动调用 - 用户主动询问服务器状态时调用## 监控命令### CPU 使用率采集bashtop-bn1|grepCpu(s)|awk{print $2}|cut-d%-f1内存使用率采集free-m磁盘使用率采集df-h|awk$NF/{printf %s\n, $5}综合采集脚本echo 服务器状态报告$(date%Y-%m-%d %H:%M:%S)echoecho--- CPU ---top-bn1|head-5echoecho--- 内存 ---free-mechoecho--- 磁盘 ---df-hechoecho--- 负载 ---uptimeechoecho--- 关键进程 ---psaux--sort-%cpu|head-10结果分析指南当拿到采集数据后按以下逻辑分析CPU 分析查看%us用户态和%sy内核态的比值如果%sy超过 30%可能存在 I/O 瓶颈或系统调用密集找出 CPU 占用最高的前 5 个进程内存分析关注available而非freeLinux 会用空闲内存做缓存如果 swap 使用率 0说明物理内存不足检查是否有内存泄漏持续增长的进程磁盘分析主分区使用率是核心指标检查/tmp,/var/log等易满的目录如果磁盘使用率 80%列出大文件find / -size 100M -type f输出格式分析结果需要以结构化格式输出## 巡检报告 - {时间} ### 整体状态?正常 / ??警告 / ??严重 | 指标 | 当前值 | 阈值 | 状态 | |------|--------|------|------| | CPU | xx% | 80% | ? | | 内存 | xx% | 85% | ? | | 磁盘 | xx% | 80% | ? | ### 异常详情 如有异常在此详细说明 ### 建议操作 基于当前状态给出操作建议## 4. skills/log-analyzer/SKILL.md日志分析技能 bash # 日志分析技能 ## 描述 分析系统日志和应用日志提取错误信息识别异常模式支持趋势分析。 ## 使用场景 - 巡检时分析最近日志 - 排查特定时间段的异常 - 统计错误频率和类型 ## 日志采集命令 ### 系统日志分析 bash # 最近 100 条错误日志 tail -1000 /var/log/syslog 2/dev/null | grep -i error\|fail\|critical | tail -100 # 按小时统计错误数量 grep -i error /var/log/syslog 2/dev/null | awk {print $1, $2, $3} | cut -d: -f1,2 | sort | uniq -c | sort -rn | head -20 # OOM Killer 事件 dmesg | grep -i oom\|out of memory | tail -20应用日志分析# Nginx 错误日志tail-500/var/log/nginx/error.log2/dev/null|grep-vfavicon|tail-50# 5xx 错误统计awk$9 ~ /^5/ {print $9}/var/log/nginx/access.log2/dev/null|sort|uniq-c|sort-rn# 慢请求统计响应时间 1sawk$NF 1.0 {print $7, $NFs}/var/log/nginx/access.log2/dev/null|sort-t -k2-rn|head-20分析策略错误分类拿到错误日志后按以下类别分类类别关键词严重程度处理建议系统资源OOM, disk full, no space 严重立即处理服务异常service failed, connection refused 严重检查服务状态网络问题timeout, connection reset 警告检查网络配置权限问题permission denied, access denied 警告检查权限设置配置错误invalid config, parse error 警告检查配置文件一般警告warning, deprecated 一般后续处理即可趋势识别对比过去 1 小时和过去 24 小时的错误率如果错误率呈上升趋势增长 50%标记为需要关注如果某类错误在短时间内大量出现 50条/10分钟触发告警输出格式## 日志分析报告 - {时间段} ### 错误统计 | 类别 | 数量 | 趋势 | 示例 | |------|------|------|------| | 系统资源 | 3 | ↑ 上升 | OOM killed process nginx | | 网络问题 | 12 | → 稳定 | Connection timed out | ### 高频错误 Top 5 1. [错误信息] - 出现 xx 次 - 首次出现于 xx:xx 2. ... ### 需要关注 - [紧急问题描述] - [需关注问题描述]### 5.部署运行 在Docker上部署 Docker下载网站https://www.docker.com/products/docker-desktop/