使用 Prometheus + Grafana 搭建可视化的 Gitea 服务器监控面板

Prometheus 是一个开源的服务监控系统和时序数据库。

Grafana 是一个可视化的数据分析面板,它可以从 Prometheus 中查询时序数据,绘制漂亮的数据图表。

本文作者在实践中使用 Prometheus 抓取和存储 Gitea 服务器的运行数据,并基于 Grafana 提供的开源数据面板创建了一个自己服务器的 Gitea 性能监控面板。

工作原理

为了更清晰地理解 Prometheus 的工作原理,我在下方列出了 Prometheus 官网上的一张结构图。可以看到 Prometheus 的工作主要有五部分:拉取数据(Pull metrics)、推送警告(Push alerts)、存储数据、提供数据查询接口(PromQL)和服务发现(Service discovery)。

Grafana 作为一个数据可视化面板,通过查询 Prometheus 数据库绘制时序图表。

Prometheus architecture

本文仅涉及我们要用到的核心功能:数据拉取和数据查询接口。无需考虑其他工作模式,因此最终的数据会存储在本地磁盘的 SQLite 数据库文件中。

摘要

  1. 配置 Gitea Metrics
  2. 安装和配置 Prometheus
  3. 安装 Grafana
  4. 连接 Prometheus 数据库
  5. 在 Grafana 导入 Gitea 监控面板

搭建

Gitea Metrics

这里的 Metrics 是指一些常用的服务器实时数据指标,它通常暴露在 HTTP 应用服务器的 /metrics 位置,用于向 Prometheus 这类程序暴露数据入口。

Gitea Metrics 位于 /metrics,默认是没有打开的,需要在服务器配置中添加以下参数:

[metrics]
;; Enables metrics endpoint.
ENABLED = true
;; If you want to add authorization, specify a token here
;TOKEN =
;; Enable issue by label metrics; default is false
ENABLED_ISSUE_BY_LABEL = true
;; Enable issue by repository metrics; default is false
ENABLED_ISSUE_BY_REPOSITORY = true
  • ENABLED 设置为 true,metrics endpoint 才会生效。
  • TOKEN 是可选的访问令牌。如果没有令牌,就可以不受限制地访问 Gitea Metrics endpoint。这对本地网络来说并无大碍,如果是暴露在互联网上的私有服务器,还是建议添加 TOKEN。

配置成功后,检查上述 endpoint,例如:http://localhost:3000/metrics

可以查询到一些 Gitea 服务器的实时统计数据:

  • gitea_accesses
  • gitea_actions
  • gitea_attachments
  • gitea_comments
  • ...

安装和配置 Prometheus

Prometheus 有两种使用方式:可执行程序 和 Go Library。限于篇幅,这里并不介绍 Prometheus 的安装过程,请阅读 Prometheus 安装文档 (https://prometheus.io/docs/introduction/install/)

Prometheus 在启动时导入配置文件 prometheus.yml,我们在此文件中填写 Gitea 的 metrics endpoint,完整的配置如下:

global:
  scrape_interval: 1m

scrape_configs:
  - job_name: "gitea"
    static_configs:
    - targets: ["localhost:3000"]
  • scrape_interval: 1m 表示从 /metrics 拉取数据的时间间隔,这里是 1 分钟,你可以填写其他时间,如 15s30s5m 等。
  • targets: ["localhost:3000"] 表示 Gitea 服务器的主机地址,或者根路径地址。比如,你的 Gitea 服务器是安装在子目录下 https://example.com/subdir/gitea,就应该填写完整的路径。

Prometheus 的前端界面和数据查询接口均在 9090 端口上,启动服务后可以访问 localhost:9090 测试,默认无密码。

安装 Grafana

Grafana 作为一个数据可视化前端工具,你可以将它安装在服务器、本地计算机,以及任意能够访问数据库的位置。

Grafana 的安装相对比较简单,官网上提供了安装向导程序,支持 Linux、Windows、Mac、Docker、ARM。选择一个平台和版本就能自动生成安装步骤,详情访问 https://grafana.com/grafana/download

Grafana Web 界面默认端口是 3000,启动后访问 localhost:3000,默认管理员账号:admin 密码:admin

连接 Prometheus 数据库

  1. 打开 Grafana - Configuration - Data source - Add data source 添加 Prometheus 数据库
  2. 填写 Prometheus 连接信息。
    • HTTP URL:localhost:9090
    • Basic auth: 填写 Prometheus 用户密码,如果没有设置密码就忽略。
  3. 点击 Save & test 保存
  4. 测试: 打开 Explore 界面,在 Metric 当中输入 gitea 前缀。如果查询到数据值和自动补全提示,说明数据导入成功。

在 Grafana 导入 Gitea 监控面板

Grafana

导入数据看板

Grafana 网站提供了一些预制的可视化数据看板,可以在官方商店 https://grafana.com/grafana/dashboards/ 搜索。

例如,Gitea 监控看板(ID: 13192):https://grafana.com/grafana/dashboards/13192-gitea/

这里就以ID 13192 为例,在 Grafana 导入上面的模板:

  1. 打开 Dashboards - New - Import 添加要导入的面板 ID
  2. 点击 Load 从 grafana.com 网站导入开源的监控看板
  3. 选择数据源 Prometheus
  4. 最后点击 Import 完成数据导入

使用 Gitea Mixin 生成自定义看板

Gitea Mixin 是一个可以基于 Gitea 内置的 Metrics endpoint 生成 Grafana 看板的小工具。它需要你配置 Gitea 所需的 Golang 开发环境才能运行。

如果有兴趣可以访问 gitea 代码目录下的 contrib/gitea-monitoring-mixin 查看使用说明。

了解详情,请访问 https://github.com/go-gitea/gitea/tree/main/contrib/gitea-monitoring-mixin

posted @ 2022-11-23 17:06  Gitea  阅读(803)  评论(0编辑  收藏  举报