陈均 JanChan

Observability / 运维监控

服务器监控系统

在兼职运维、服务器数量多、状态靠人工登录查看的背景下,独立研发了一套自动化监控站点:shell 采集、Python 后端、Elasticsearch 检索、可视化展示。

角色 独立研发周期 2017.11 - 2018.01方向 数据与检索
监控ElasticsearchShellPython运维告警
服务器监控:机房中的检索镜头与指标面板
从 shell 采集到 Elasticsearch 检索,把人工巡检变成可查询的监控系统。

背景:服务器很多,人只有一双手

当时在公司兼职运维,服务器数量多,日常检查靠逐台登录:看负载、看磁盘、看进程、看日志。问题发现得晚,历史状态也留不下来,故障复盘基本靠回忆。

于是自己写了一套监控站点,核心目标很朴素:不用登录每台机器,也能知道它们现在怎么样、过去发生过什么。

核心难点

  • 采集开销:采集脚本不能影响业务,频率和指标要可控。
  • 数据增长:指标持续写入,存储和查询都要考虑成本。
  • 检索:按主机、时间、指标快速定位历史异常。
  • 展示:非运维人员也能看懂状态和趋势。

方案:采集、存储、检索、展示

1. Shell 采集

用 shell 脚本采集 CPU、内存、磁盘、网络、负载和关键进程状态,统一格式化后发送到采集后端。采集任务错峰执行,避免同时打满被监控机器。

2. Python 后端与 ES

Python 服务接收指标、做基础清洗和聚合,写入 Elasticsearch。索引按日期划分,字段类型统一,既支持实时查询,也支持历史回溯;Redis 用于缓存最新状态和短期聚合。

3. 检索与可视化

用前端图表展示实时状态和趋势,支持按主机、时间范围和指标筛选;异常阈值触发标记,历史数据可以按条件检索,故障时不必再逐台翻日志。

这套系统的关键不是“采了多少指标”,而是把监控数据从一次性输出变成可检索的时间序列。后来做日志检索、业务监控,思路是一样的:先建模,再采集,最后才是展示。

结果

自动采集多台 Linux 服务器实时指标
ES 检索历史数据快速定位
可视化状态、趋势与异常一目了然

服务器状态从“登录查看”变成“打开页面就知道”,历史指标可检索、可对比;故障定位从翻日志变成按主机和时间过滤。系统后来也持续演进,成为日常运维的基础工具。

复盘

监控系统的价值在于“可查询的历史”,而不只是“实时的数字”。把采集、存储、检索和展示分开设计,小系统也能有长期价值。

监控ElasticsearchShellPython运维告警

陈均 JanChan

全栈架构师 / AI 工程师,14 年研发与架构经验。项目内容来自真实研发经历与同类场景的工程复盘。