使用 Prometheus + Grafana 搭建可视化的 Gitea 服务器监控面板
Prometheus 是一个开源的服务监控系统和时序数据库。
Grafana 是一个可视化的数据分析面板,它可以从 Prometheus 中查询时序数据,绘制漂亮的数据图表。
本文作者在实践中使用 Prometheus 抓取和存储 Gitea 服务器的运行数据,并基于 Grafana 提供的开源数据面板创建了一个自己服务器的 Gitea 性能监控面板。
工作原理
为了更清晰地理解 Prometheus 的工作原理,我在下方列出了 Prometheus 官网上的一张结构图。可以看到 Prometheus 的工作主要有五部分:拉取数据(Pull metrics)、推送警告(Push alerts)、存储数据、提供数据查询接口(PromQL)和服务发现(Service discovery)。
Grafana 作为一个数据可视化面板,通过查询 Prometheus 数据库绘制时序图表。
本文仅涉及我们要用到的核心功能:数据拉取和数据查询接口。无需考虑其他工作模式,因此最终的数据会存储在本地磁盘的 SQLite 数据库文件中。
摘要
- 配置 Gitea Metrics
- 安装和配置 Prometheus
- 安装 Grafana
- 连接 Prometheus 数据库
- 在 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 分钟,你可以填写其他时间,如15s
、30s
、5m
等。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 数据库
- 打开 Grafana - Configuration - Data source - Add data source 添加 Prometheus 数据库
- 填写 Prometheus 连接信息。
- HTTP URL:
localhost:9090
- Basic auth: 填写 Prometheus 用户密码,如果没有设置密码就忽略。
- HTTP URL:
- 点击 Save & test 保存
- 测试: 打开 Explore 界面,在 Metric 当中输入
gitea
前缀。如果查询到数据值和自动补全提示,说明数据导入成功。
在 Grafana 导入 Gitea 监控面板
导入数据看板
Grafana 网站提供了一些预制的可视化数据看板,可以在官方商店 https://grafana.com/grafana/dashboards/ 搜索。
例如,Gitea 监控看板(ID: 13192):https://grafana.com/grafana/dashboards/13192-gitea/
这里就以ID 13192 为例,在 Grafana 导入上面的模板:
- 打开 Dashboards - New - Import 添加要导入的面板 ID
- 点击 Load 从 grafana.com 网站导入开源的监控看板
- 选择数据源 Prometheus
- 最后点击 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端