0Pricing
Linux Server Deployment & SSH Mastery · 课时

集中式监控与告警

将监控扩展到单台服务器之外:把指标和日志发送到中央系统、构建仪表板并配置告警,以便在用户发现问题之前获知情况。

集中式监控与告警 是 CoddyKit 上的免费 Linux Server Deployment & SSH Mastery 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Linux Server Deployment & SSH Mastery 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。

为什么要集中管理

在一台机器上使用 top 和 journalctl 登录并查看服务器没有问题。但服务器数量多了以后,这种方式无法扩展,而且只有在您碰巧查看时才能发现问题。

集中式监控会将所有服务器的指标和日志收集到一个位置,并提供仪表板和自动告警。

指标与日志

可观测性由两类数据驱动:

  • 指标 — 数值型时间序列,例如 CPU 使用率、内存使用量和请求速率
  • 日志 — 离散的文本事件,例如错误和访问记录

通常需要同时收集这两类数据,并分别使用针对其特点优化的工具。

Prometheus 模型

Prometheus 是一种常用的指标系统。它通过抓取每台服务器公开的 HTTP 端点来拉取指标。

您需要在每台服务器上运行一个导出器,例如用于主机指标的 node_exporter,由它发布 Prometheus 读取的数据。

# On each monitored server:
sudo apt install prometheus-node-exporter
curl http://localhost:9100/metrics | head

配置抓取目标

Prometheus 通过配置文件获知要抓取哪些内容。每个任务都会列出目标(导出器的主机:端口)。

下面的代码片段会抓取两台服务器上的 node_exporter。

scrape_configs:
  - job_name: 'nodes'
    static_configs:
      - targets: ['web1:9100', 'web2:9100']

使用 PromQL 查询指标

Prometheus 有自己的查询语言,即 PromQL。您可以对整个服务器集群计算速率、平均值等数据。

下面的表达式用于估算每台服务器的 CPU 使用率。

100 - (avg by (instance) (rate(node_cpu_seconds_total{mode='idle'}[5m])) * 100)

使用 Grafana 可视化

Grafana 可以连接 Prometheus 以及许多其他数据源,用于构建仪表板。您只需将 Prometheus 添加为数据源,然后根据 PromQL 查询创建面板。

使用 node_exporter 的预构建仪表板,可以在几分钟内获得 CPU、内存、磁盘和网络图表。

sudo apt install grafana
sudo systemctl enable --now grafana-server
# Open http://server:3000 and add Prometheus as a data source

集中管理日志

对于日志,请将每台服务器上的日志发送到中央存储。常见的技术栈是与 Grafana 集成的 Loki 和 Promtail。

Promtail 在每台服务器上运行,并将日志文件和系统日志转发到 Loki。

# promtail tails the journal and ships to Loki
clients:
  - url: http://loki:3100/loki/api/v1/push
scrape_configs:
  - job_name: journal
    journal:
      max_age: 12h

定义告警规则

告警会将指标转化为行动。当某个表达式在一段时间内持续为真时,Prometheus 告警规则就会触发。

当某个节点持续宕机两分钟时,下面的规则会发出告警。

groups:
  - name: node
    rules:
      - alert: NodeDown
        expr: up == 0
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: 'Instance {{ $labels.instance }} is down'

路由告警

Alertmanager 会接收已触发的告警,并将其路由到正确的位置:电子邮件、Slack、PagerDuty 等。它还会对告警去重和静默处理。

您可以根据 severity 等标签,将告警映射到相应的接收器。

route:
  receiver: 'team-slack'
receivers:
  - name: 'team-slack'
    slack_configs:
      - channel: '#alerts'

避免告警疲劳

告警过多和没有告警一样糟糕—人们会开始忽略它们。良好的告警系统应该:

  • 针对用户能够感知的症状发出告警,而不是针对每一次指标波动
  • 使用 for 持续时间,避免告警反复触发
  • 分配严重程度,以便过滤噪声

最佳实践

构建经得起长期使用的可观测性系统:

  • 集中收集指标和日志
  • 从社区仪表板开始,然后根据需要定制
  • 只针对可采取行动的状况发出告警
  • 测试告警是否确实能够送达您

快速检查

测试您对集中式监控的了解。

回顾

现在,您已经可以集中监控整个服务器集群:

  • 通过 Prometheus 抓取 node_exporter 指标,并使用 PromQL 查询
  • 在 Grafana 中创建仪表板
  • 通过 Promtail 将日志发送到 Loki
  • 使用 Prometheus 规则创建告警,并由 Alertmanager 进行路由

这会将单服务器日志管理技能扩展为主动的全局服务器集群可观测性。

常见问题解答

「集中式监控与告警」课时是免费的吗?

是的 — 「集中式监控与告警」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Linux Server Deployment & SSH Mastery 课程的其余内容,请升级到 CoddyKit PRO。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。

「集中式监控与告警」这节课中我会学到什么?

将监控扩展到单台服务器之外:把指标和日志发送到中央系统、构建仪表板并配置告警,以便在用户发现问题之前获知情况。 你通过在浏览器中直接运行的动手代码来练习 Linux Server Deployment & SSH Mastery,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Linux Server Deployment & SSH Mastery 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Linux Server Deployment & SSH Mastery 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「集中式监控与告警」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Linux Server Deployment & SSH Mastery 课中编写并运行代码吗?

能。每节 Linux Server Deployment & SSH Mastery 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 系统监控工具
  2. 理解系统日志
  3. 日志轮换与归档
  4. 集中式监控与告警
← 返回 Linux Server Deployment & SSH Mastery