【Hermes Agent 从入门到精通】第 32 篇:DevOps 与系统运维实战

下面是本篇 DevOps 运维的整体工作流程概览:

服务器监控

是否异常?

告警通知

日志分析

发现异常模式?

问题排查

Docker 容器管理

需要部署/清理?

容器操作

数据库维护

备份是否完整?

定期维护 Cron

重新备份

CI/CD 辅助

构建成功?

自动部署

分析失败原因

本系列定位:零基础入门,从安装配置到高级架构全覆盖。无论你是开发者、运维工程师、还是技术爱好者,本系列带你彻底掌握 Hermes Agent。


本篇你将学到

  • 服务器监控与告警
  • 日志分析与问题排查
  • Docker 容器管理
  • 定期备份与系统维护
  • CI/CD 流水线辅助

学完本篇,你将能用 Hermes 作为运维助手,自动化日常运维工作。


一、服务器监控

1.1 即时检查

你:"检查一下服务器的整体健康状况"

Hermes:
  🔧 terminal: top -bn1 | head -5
  🔧 terminal: free -h
  🔧 terminal: df -h
  🔧 terminal: docker ps --format "table {{.Names}}\t{{.Status}}"

  📊 服务器健康状况:
  
  CPU:负载 0.45(正常)
  内存:8G/16G 使用(50%)
  磁盘:45G/100G 使用(45%)
  
  Docker 容器:
  ✅ postgres       Up 3 days
  ✅ redis          Up 3 days
  ✅ rabbitmq       Up 2 days
  ⚠️ mini-shop-app  Up 5 hours(重启过)

1.2 自动化监控(Cron)

# 每 10 分钟检查一次
hermes cron create "*/10 * * * *" \
  --prompt """检查服务器关键指标。如果异常则告警:
  - CPU > 85%
  - 内存 > 90%
  - 磁盘 > 80%
  - 关键容器停止
  正常时不输出任何内容。""" \
  --deliver "telegram" \
  --name "server-monitor"

下面是服务器监控的决策流程:

Cron 定时触发

检查 CPU/内存/磁盘

任一指标超阈值?

Telegram 告警

静默(无输出)

运维人员处理


二、日志分析

2.1 错误日志排查

你:"帮我分析 mini-shop 应用最近的错误日志"

Hermes:
  🔧 terminal: grep -i "error\|exception" /var/log/mini-shop/app.log | tail -50
  
  📋 最近 24 小时的错误分析:
  
  错误类型分布:
  - NullPointerException: 12 次(最频繁)
  - SQLException: 3 次
  - TimeoutException: 2 次
  
  最频繁的错误:
  NPE at OrderService.kt:58
  → user 对象为 null
  → 发生在 14:00-15:00 高峰期
  
  建议:检查 OrderService 第 58 行的空值处理

2.2 日志模式识别

你:"看看最近一周的日志有没有什么异常模式"

Hermes:
  🔧 terminal: cat /var/log/mini-shop/app.log | grep "WARN" | awk '{print $1, $5}' | sort | uniq -c | sort -rn | head -10
  
  📊 异常模式分析:
  1. 每天 03:00 有连接池超时警告(定时任务集中执行)
  2. 每周三有内存飙升警告(可能是报表任务)
  
  建议:
  1. 03:00 的定时任务错峰执行
  2. 报表任务考虑分批处理

下面是日志分析的完整处理链路:

原始日志

grep 过滤错误/异常

统计错误类型分布

定位最频繁错误

分析时间规律

给出修复建议

grep 过滤 WARN 级别

按时间/频率排序

识别异常模式

建议错峰/分批处理


三、Docker 容器管理

3.1 容器状态检查

你:"检查所有 Docker 容器的资源使用情况"

Hermes:
  🔧 terminal: docker stats --no-stream
  
  📊 容器资源使用:
  
  容器          CPU     内存         网络IO
  postgres      2.3%    256MB/1G    45MB
  redis         0.5%    64MB/512MB  12MB
  mini-shop     5.1%    512MB/2G    128MB
  
  💡 redis 内存使用偏低,可以考虑降低分配

3.2 容器清理

你:"清理所有悬挂镜像和停止的容器"

Hermes:
  ⚠️ 即将执行:docker system prune -f
  这将删除:3 个悬挂镜像(约 450MB),2 个停止的容器
  确认?[y/N]
  > y
  
  ✅ 清理完成,释放 487MB 磁盘空间

3.3 容器部署

你:"重新部署 mini-shop 应用"

Hermes:
  🔧 cd /opt/mini-shop && docker compose build
  🔧 docker compose down
  🔧 docker compose up -d
  🔧 等待 10 秒...
  🔧 curl -s http://localhost:8080/actuator/health
  
  ✅ 部署成功!健康检查通过
     版本:1.2.0
     启动时间:3.2 秒

下面是 Docker 容器管理的操作流程:

状态检查

清理

部署

容器管理

操作类型

docker stats

分析资源使用

优化建议

docker system prune

确认执行?

释放磁盘空间

取消操作

docker compose build

docker compose down

docker compose up -d

健康检查

通过?

部署成功

回滚


四、数据库维护

4.1 数据库健康检查

你:"检查 PostgreSQL 的运行状态"

Hermes:
  🔧 terminal: docker exec mini-shop-postgres psql -U postgres -c "SELECT count(*) FROM pg_stat_activity;"
  🔧 terminal: docker exec mini-shop-postgres psql -U postgres -c "SELECT pg_size_pretty(pg_database_size('mini_shop'));"
  
  📊 PostgreSQL 状态:
  活跃连接:12 / 100
  数据库大小:1.2 GB
  慢查询:2 条(>1秒)

4.2 备份验证

你:"验证最新的数据库备份"

Hermes:
  🔧 terminal: ls -lh /backup/postgres/
  🔧 terminal: pg_restore --list /backup/postgres/latest.dump | head -20
  
  ✅ 最新备份:2026-07-29 03:00
     大小:245 MB
     包含表:18 张
     状态:完整可恢复

五、定期维护 Cron

5.1 每日维护

# 凌晨 2 点:数据库优化
hermes cron create "0 2 * * *" \
  --prompt "执行 PostgreSQL VACUUM ANALYZE,报告优化结果" \
  --deliver "local" \
  --name "db-maintenance"

# 凌晨 3 点:日志轮转检查
hermes cron create "0 3 * * *" \
  --prompt "检查 /var/log/ 下的日志文件大小,超过 100MB 的通知清理" \
  --deliver "telegram" \
  --name "log-check"

# 凌晨 4 点:备份验证
hermes cron create "0 4 * * *" \
  --prompt "验证最新的数据库备份是否完整可恢复" \
  --deliver "telegram" \
  --name "backup-verify"

下面是每日 Cron 维护任务的时间线:

02:00 02:15 02:30 02:45 03:00 03:15 03:30 03:45 04:00 PostgreSQL VACUUM ANALYZE 日志轮转检查 数据库备份验证 数据库维护 日志管理 备份验证 每日自动维护时间线

六、CI/CD 辅助

6.1 构建失败分析

你:"CI 构建失败了,帮我看看原因"

Hermes:
  🔧 terminal: cat build-output.log | grep -i "error\|fail" | tail -20
  
  📋 构建失败原因:
  - 编译错误:OrderService.kt 第 42 行类型不匹配
  - 期望 String,实际 String?
  - 修复方案:添加 ?: "" 或 !! 

6.2 自动化部署检查

通过 Webhook 在 CI 完成后自动检查:

hermes webhook subscribe ci-complete

# CI 构建完成后 → Hermes 自动验证 → 通知结果

本篇小结

知识点核心内容
服务器监控CPU/内存/磁盘/容器
日志分析错误统计、模式识别
Docker 管理容器状态、资源清理、部署
数据库维护VACUUM、备份验证
CI/CD 辅助构建失败分析、部署检查
Cron 自动化定期维护任务

下篇预告

第 33 篇:安全配置与最佳实践

生产环境安全至关重要。下一篇全面讲解 Hermes 的安全配置体系。


如果本篇内容对你有帮助,欢迎点赞收藏!有任何疑问,欢迎在评论区交流。

更多推荐