一、Grafana 与 Prometheus 简介

1.1 Grafana 简介

Grafana 是一款开源的数据可视化与监控平台,它支持多种数据源,能够将不同来源的数据以直观的图表、仪表盘等形式展示出来。Grafana 具有丰富的可视化插件和强大的交互功能,用户可以根据自己的需求定制个性化的监控界面,方便对系统状态、业务指标等进行实时监控和分析。

1.2 Prometheus 简介

Prometheus 是一个开源的系统监控和警报工具包,采用时间序列数据库存储监控数据,通过拉取(Pull)模型收集指标。Prometheus 拥有强大的查询语言 PromQL,可对监控数据进行复杂的查询和分析,并且具备灵活的告警机制。

1.3 集成的意义

将 Grafana 与 Prometheus 集成,可以充分发挥两者的优势。Grafana 利用其强大的可视化能力,将 Prometheus 收集的监控数据以直观、美观的方式展示出来,使运维人员和业务人员能够更清晰地了解系统的运行状态。同时,通过 Grafana 的交互功能,用户可以方便地进行数据探索和分析,及时发现潜在的问题。

二、Grafana 安装与配置

2.1 安装 Grafana

以在 Linux(Ubuntu)系统上安装 Grafana 为例,可按以下步骤进行:

# 添加 Grafana 软件源
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

# 更新软件包列表
sudo apt-get update

# 安装 Grafana
sudo apt-get install grafana

解释:

  • 首先添加 Grafana 的软件源,确保可以从官方源获取最新的 Grafana 版本。
  • 然后更新软件包列表,使系统能够识别新添加的软件源。
  • 最后安装 Grafana。

2.2 启动 Grafana 服务

# 启动 Grafana 服务
sudo systemctl start grafana-server

# 设置 Grafana 服务开机自启
sudo systemctl enable grafana-server
解释:
  • sudo systemctl start grafana-server 用于启动 Grafana 服务。
  • sudo systemctl enable grafana-server 使 Grafana 服务在系统开机时自动启动。

2.3 访问 Grafana 界面

在浏览器中输入 http://<服务器 IP>:3000,即可访问 Grafana 的登录界面。默认的用户名和密码均为 admin,登录后可根据提示修改密码。

三、Prometheus 作为 Grafana 数据源的配置

3.1 配置数据源

登录 Grafana 后,按以下步骤配置 Prometheus 作为数据源:

  1. 点击左侧菜单栏的 “Configuration”(配置)图标,选择 “Data Sources”(数据源)。
  2. 在数据源页面点击 “Add data source”(添加数据源)按钮。
  3. 在数据源类型中选择 “Prometheus”。
  4. 在 “HTTP” 部分的 “URL” 字段中输入 Prometheus 服务器的地址,例如 http://<Prometheus 服务器 IP>:9090
  5. 其他参数可保持默认设置,点击 “Save & Test”(保存并测试)按钮,若显示 “Data source is working”(数据源正常工作),则表示配置成功。

3.2 数据源配置示例代码(JSON 格式)

{
    "name": "Prometheus",
    "type": "prometheus",
    "url": "http://<Prometheus 服务器 IP>:9090",
    "access": "proxy",
    "isDefault": true
}

解释:

  • name:数据源的名称,可自定义。
  • type:数据源的类型,这里是 prometheus
  • url:Prometheus 服务器的地址。
  • access:访问模式,proxy 表示通过 Grafana 代理访问。
  • isDefault:是否将该数据源设置为默认数据源。

四、创建 Grafana 仪表盘展示 Prometheus 数据

4.1 创建仪表盘

在 Grafana 界面,点击左侧菜单栏的 “+” 图标,选择 “Dashboard”(仪表盘),然后点击 “Add new panel”(添加新面板)。

4.2 配置面板查询

在面板编辑页面,进行以下操作:

  1. 在 “Query”(查询)部分,选择之前配置的 Prometheus 数据源。
  2. 在查询框中输入 PromQL 查询语句,例如 node_cpu_seconds_total{mode="idle"},用于查询服务器的空闲 CPU 时间。
  3. 可以根据需要调整查询的时间范围、聚合函数等参数。

4.3 选择可视化类型

Grafana 提供了多种可视化类型,如折线图、柱状图、饼图等。根据数据的特点和展示需求,选择合适的可视化类型。例如,对于时间序列数据,折线图通常是一个不错的选择。

4.4 自定义面板设置

可以对面板的标题、描述、颜色、坐标轴等进行自定义设置,以满足个性化的展示需求。例如,修改面板标题为 “服务器 CPU 空闲时间”,设置坐标轴的单位和范围等。

4.5 仪表盘示例代码(JSON 格式)

{
    "title": "Prometheus 监控仪表盘",
    "panels": [
        {
            "title": "服务器 CPU 空闲时间",
            "type": "graph",
            "datasource": "Prometheus",
            "targets": [
                {
                    "expr": "node_cpu_seconds_total{mode=\"idle\"}",
                    "refId": "A"
                }
            ],
            "yaxes": [
                {
                    "format": "s",
                    "label": "时间(秒)"
                }
            ]
        }
    ]
}

 解释:

  • title:仪表盘的标题。
  • panels:仪表盘包含的面板列表。
  • panels[0].title:面板的标题。
  • panels[0].type:面板的可视化类型,这里是 graph(折线图)。
  • panels[0].datasource:面板使用的数据源。
  • panels[0].targets[0].expr:面板的查询表达式,即 PromQL 查询语句。
  • panels[0].yaxes[0].format:Y 轴的单位格式,这里是秒。
  • panels[0].yaxes[0].label:Y 轴的标签。

五、Grafana 与 Prometheus 集成的高级应用

5.1 变量的使用

在 Grafana 中可以使用变量来实现动态查询和灵活的仪表盘展示。例如,创建一个变量来选择不同的服务器实例,然后在查询语句中引用该变量。具体步骤如下:

  1. 点击仪表盘右上角的 “Settings”(设置)图标,选择 “Variables”(变量)。
  2. 点击 “Add variable”(添加变量)按钮,设置变量的名称、类型(如 Query 类型)、数据源(Prometheus)和查询语句(如 label_values(node_cpu_seconds_total, instance))。
  3. 在查询语句中使用 $变量名 的方式引用变量,例如 node_cpu_seconds_total{instance="$instance", mode="idle"}

5.2 模板化仪表盘

可以创建模板化的仪表盘,通过变量和模板函数实现仪表盘的复用。例如,根据不同的业务线或环境创建不同的仪表盘实例,只需修改变量的值即可快速切换展示不同的数据。

5.3 告警功能

Grafana 也具备告警功能,可以结合 Prometheus 的数据设置告警规则。在面板编辑页面,点击 “Alert”(告警)选项卡,设置告警条件(如阈值、持续时间等),并选择通知渠道(如邮件、Slack 等)。当监控数据满足告警条件时,Grafana 会触发告警通知。

Logo

一站式 AI 云服务平台

更多推荐