如何使用 Prometheus 监控 Ubuntu 服务器:收集和可视化系统指标

How to Monitor an Ubuntu Server With Prometheus: Collecting and Visualizing System Metrics

简介

在当今快节奏的数字世界中,服务器的正常运行时间和性能至关重要。监控服务器以确保其最佳运行是系统管理员和 DevOps 团队的首要任务。有效的服务器监控可以防止停机,提高性能,并在问题升级之前帮助排除故障。Prometheus(普罗米修斯)是用于此目的的最强大的工具之一,它是一个最初在 SoundCloud 开发的开源监控和警报工具包。

本文旨在引导您完成设置 Prometheus 以监控 Ubuntu 服务器的过程。我们将涵盖从安装和配置到收集和可视化系统指标的所有内容。在本指南结束时,您将拥有一个功能齐全的监控设置,可以为您的服务器性能提供有价值的见解。

了解 Prometheus

什么是 Prometheus?

Prometheus 是一个强大的监控系统,它以指定的间隔从配置的目标收集指标,评估规则表达式,显示结果,并在观察到特定条件时触发警报。它已成为云原生环境中监控的事实标准。Prometheus 的主要功能包括:

  • 多维数据模型:Prometheus 使用时间序列数据模型,允许进行高维数据收集和查询。
  • 灵活的查询语言:PromQL,Prometheus 查询语言,非常灵活且功能强大。
  • автономный server: Prometheus 可以独立运行,无需依赖分布式存储。
  • 高效存储:在本地时间序列数据库中高效存储时间序列数据。
  • 拉取式模型:Prometheus 通过从目标端点拉取指标来收集指标。
使用 Prometheus 进行服务器监控的优势
  • 可扩展性:Prometheus 可以处理大量的指标,使其适用于任何规模的环境。
  • 与 Grafana 集成:Prometheus 与 Grafana(格拉法纳,一个领先的开源监控和可观测性平台)无缝集成,用于高级可视化。
  • 丰富的生态系统:有广泛的 exporters(导出器)和集成可用,可以轻松扩展 Prometheus 以满足特定需求。

在 Ubuntu 上设置 Prometheus

系统要求

在安装 Prometheus 之前,请确保您的 Ubuntu 服务器满足以下最低要求:

  • Ubuntu 18.04 或更高版本。
  • 至少 2 GB 的 RAM。
  • 至少 2 个 CPU 核心。
  • 10 GB 的可用磁盘空间。
安装步骤

更新 Ubuntu 软件包

首先,更新软件包列表并安装任何可用的升级:

sudo apt-get update sudo apt-get upgrade

安装 Prometheus

从官方存储库下载并安装 Prometheus:

sudo useradd --no-create-home --shell /bin/false prometheus sudo mkdir /etc/prometheus sudo mkdir /var/lib/prometheus cd /tmp wget https://github.com/prometheus/prometheus/releases/download/v2.31.1/prometheus-2.31.1.linux-amd64.tar.gz tar -xvzf prometheus-2.31.1.linux-amd64.tar.gz cd prometheus-2.31.1.linux-amd64 sudo cp prometheus /usr/local/bin/ sudo cp promtool /usr/local/bin/ sudo cp -r consoles /etc/prometheus sudo cp -r console_libraries /etc/prometheus sudo cp prometheus.yml /etc/prometheus

配置 Prometheus

编辑 Prometheus 配置文件 (/etc/prometheus/prometheus.yml) 以满足您的需求。对于基本设置,默认配置通常就足够了:

global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090']

启动 Prometheus 服务

为 Prometheus 创建一个 systemd 服务文件:

sudo nano /etc/systemd/system/prometheus.service

添加以下内容:

[Unit] Description=Prometheus Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/usr/local/bin/prometheus \ --config.file /etc/prometheus/prometheus.yml \ --storage.tsdb.path /var/lib/prometheus/ \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries [Install] WantedBy=multi-user.target

重新加载 systemd,启用并启动 Prometheus:

sudo systemctl daemon-reload sudo systemctl enable prometheus sudo systemctl start prometheus

通过在 Web 浏览器中访问 http://<your_server_ip>:9090 来验证 Prometheus 是否正在运行。

收集系统指标

Exporters(导出器)简介

Exporters 是将系统指标暴露给 Prometheus 的轻量级软件组件。它们对于从各种来源收集数据至关重要。

安装和配置 Node Exporter

Node Exporter(节点导出器)是一个流行的导出器,用于收集硬件和操作系统指标。使用以下步骤安装 Node Exporter:

下载并安装 Node Exporter

cd /tmp wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz tar -xvzf node_exporter-1.2.2.linux-amd64.tar.gz cd node_exporter-1.2.2.linux-amd64 sudo cp node_exporter /usr/local/bin/

为 Node Exporter 创建 Systemd 服务

sudo nano /etc/systemd/system/node_exporter.service

添加以下内容:

[Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/usr/local/bin/node_exporter [Install] WantedBy=multi-user.target

启动并启用 Node Exporter

sudo systemctl daemon-reload sudo systemctl enable node_exporter sudo systemctl start node_exporter

通过在 Web 浏览器中访问 http://<your_server_ip>:9100/metrics 来验证 Node Exporter 是否正在运行。

配置 Prometheus 以从 Node Exporter 收集指标

编辑 Prometheus 配置文件以包含 Node Exporter:

scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node_exporter' static_configs: - targets: ['localhost:9100']

重新加载 Prometheus 配置

sudo systemctl reload prometheus

检查 Prometheus Web 界面,以确保正在收集来自 Node Exporter 的指标。

使用 Grafana 可视化指标

Grafana 简介

Grafana 是一个开源的监控和可观测性平台。它提供丰富的可视化效果和用户友好的界面,用于与 Prometheus 收集的指标进行交互。

在 Ubuntu 上安装 Grafana

要安装 Grafana,请按照以下步骤操作:

添加 Grafana APT 存储库

sudo apt-get install -y software-properties-common wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"

安装 Grafana

sudo apt-get update sudo apt-get install grafana

启动并启用 Grafana

sudo systemctl daemon-reload sudo systemctl enable grafana-server sudo systemctl start grafana-server

通过在 Web 浏览器中访问 http://<your_server_ip>:3000 来验证 Grafana 是否正在运行。默认登录凭据为 admin/admin

将 Grafana 连接到 Prometheus

要将 Grafana 连接到 Prometheus:

  1. 添加 Prometheus 作为数据源:
    • 登录到 Grafana。
    • 转到 Configuration(配置) > Data Sources(数据源)
    • 单击 Add data source(添加数据源) 并选择 Prometheus
    • 输入您的 Prometheus 服务器的 URL (https://127.0.0.1:9090)。
    • 单击 Save & Test(保存并测试) 以验证连接。
创建仪表板和可视化
  1. 创建一个新仪表板:

    • 单击左侧边栏上的 + 图标,然后选择 Dashboard(仪表板)
    • 单击 Add new panel(添加新面板) 以创建一个新的可视化。
  2. 添加面板以可视化指标:

    • 选择可视化的类型(例如,graph(图表)、gauge(仪表盘)、table(表格))。
    • 使用 PromQL 查询 Prometheus 中的指标。例如,要可视化 CPU 使用率,您可以使用:
      rate(node_cpu_seconds_total{mode="idle"}[5m])
      
    • 自定义面板的标题、标签和颜色。
  3. 保存和共享仪表板:

    • 单击顶部的 Save(保存) 图标来保存您的仪表板。
    • 通过单击 Share(共享) 图标并复制链接来共享仪表板。

高级监控和警报

在 Prometheus 中设置警报

Prometheus 的 Alertmanager(警报管理器)处理警报,并根据预定义的规则发送通知。

配置 Alertmanager

安装 Alertmanager

cd /tmp wget https://github.com/prometheus/alertmanager/releases/download/v0.22.2/alertmanager-0.22.2.linux-amd64.tar.gz tar -xvzf alertmanager-0.22.2.linux-amd64.tar.gz cd alertmanager-0.22.2.linux-amd64 sudo cp alertmanager /usr/local/bin/

为 Alertmanager 创建一个 systemd 服务

sudo nano /etc/systemd/system/alertmanager.service

添加以下内容:

[Unit] Description=Prometheus Alertmanager Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/usr/local/bin/alertmanager --config.file=/etc/prometheus/alertmanager.yml [Install] WantedBy=multi-user.target

启动并启用 Alertmanager

sudo systemctl daemon-reload sudo systemctl enable alertmanager sudo systemctl start alertmanager

在 Prometheus 中配置警报

编辑 prometheus.yml 以包含 Alertmanager 配置:

alerting: alertmanagers: - static_configs: - targets: ['localhost:9093'] rule_files: - "alert.rules"

创建包含示例警报规则的 alert.rules

groups: - name: example rules: - alert: HighCPUUsage expr: rate(node_cpu_seconds_total{mode="idle"}[5m]) < 20 for: 2m labels: severity: critical annotations: summary: "High CPU usage detected" description: "CPU usage has exceeded 80% for more than 2 minutes."

重新加载 Prometheus 配置

sudo systemctl reload prometheus

创建和管理警报

Prometheus 可以通过各种渠道发送通知,例如电子邮件、Slack 或 PagerDuty。在 alertmanager.yml 中配置通知渠道:

global: smtp_smarthost: 'smtp.example.com:587' smtp_from: 'alertmanager@example.com' smtp_auth_username: 'user@example.com' smtp_auth_password: 'password' route: receiver: 'email-alert' receivers: - name: 'email-alert' email_configs: - to: 'admin@example.com'

测试您的警报以确保它们被触发并且通知被正确发送。

最佳实践和技巧

  • 保持 Prometheus、Node Exporter 和 Grafana 更新,以从最新的功能和安全补丁中获益。
  • 定期审查和更新警报规则,以匹配您当前的监控需求。
  • 微调 Prometheus 配置参数,例如 scrape_intervalstorage.tsdb.retention,以平衡性能和资源使用。
  • 监控 Prometheus 自身的指标,以确保其高效运行。
  • 使用 SSL/TLS 保护 Prometheus 和 Grafana 界面。
  • 实施身份验证和授权,以限制对您的监控设置的访问。
  • 定期审计和审查安全设置,以防止未经授权的访问。

结论

实施 Prometheus 进行服务器监控可以显着增强您管理和优化服务器基础设施的能力。其灵活性、可扩展性和集成能力使其成为任何组织的强大工具。

George Whittaker 是 Linux Journal 的编辑,也是一位定期撰稿人。George 撰写技术文章已有二十年,并且是 Linux 用户超过 15 年。在空闲时间,他喜欢编程、阅读和游戏。

加载 Disqus 评论