外部监视方法
使用 OpenTelemetry 进行外部监控,您可以将 GitHub Enterprise Server 实例与现有的监控基础结构和工具集成。 GitHub Enterprise Server 提供了两种外部监控的主要方法:
-
**Prometheus 端点**:以 Prometheus 格式公开指标,供外部工具抓取 -
**自定义 OpenTelemetry 管道**:配置 OpenTelemetry 收集器以将指标推送到外部监视系统
注意
在群集部署中,每个节点公开自己的本地指标。 这包括节点服务器,这些服务器从群集中的所有服务器收集指标,但仅通过监视终结点公开自己的本地指标。 若要从群集中的所有节点收集指标,必须将监视系统配置为单独从每个节点收集。
先决条件
- 启用了 OpenTelemetry 指标的 GitHub Enterprise Server 3.18 或更高版本
- GitHub Enterprise Server 实例与外部监控系统之间的网络连接
- 对您的 GitHub Enterprise Server 实例和监控系统的管理访问权限
选择监视方法
选择最适合基础结构和要求的监视方法。
Prometheus 接口(推荐给大多数用户)
在以下情况下使用 Prometheus 终结点:
- 你已有基于 Prometheus 的监视基础结构
- 首选基于拉取的监控模型
- 你想要使用外部工具来抓取 GitHub Enterprise Server 的指标
- 需要通过最少的配置进行简单集成
自定义 OpenTelemetry 管道
在以下情况下使用自定义 OpenTelemetry 管道:
- 需要同时将指标推送到多个监视系统
- 想要在外部发送指标之前对其进行转换、筛选或聚合
- 你正在使用优先支持 OTLP 的云原生监控解决方案
- 需要高级指标处理功能
选项 1:使用 Prometheus 终结点
OpenTelemetry 监视堆栈包括与 Prometheus 兼容的终结点,该终结点以 Prometheus 格式公开所有收集的指标,从而实现与外部监视工具的集成。 请参阅 Prometheus 文档中 的基于文本的格式 。
启用 Prometheus 终结点
您可以使用 管理控制台 或命令行界面启用 Prometheus 端点。
使用管理控制台
-
在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击“”。
-
如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。1. 在“ 站点管理”边栏中,单击“管理控制台”****。
-
在监视设置中,选择“ 启用 OpenTelemetry”。
-
(可选)调整 指标保留 期和 指标抓取间隔 字段以优化性能。
-
选择 “启用 Prometheus 兼容(/指标)”端点。
-
在 “终结点密码 ”字段中,输入强密码来控制对终结点的访问。
-
(可选)在 逗号分隔的列表字段中的受信任 IPv4/IPv6 地址或 CIDR 块 中,输入允许访问终结点的 IP 地址或 CIDR 块。
-
在“设置”边栏下,单击“保存设置”。
注意
保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。
-
等待配置运行完毕。
使用命令行接口
-
通过 SSH 登录到您的 GitHub Enterprise Server 实例。
-
启用 Prometheus 接口:
ghe-config observability.metrics.prometheus-endpoint-enabled true ghe-config-apply -
为终结点设置身份验证(强烈建议):
ghe-config observability.metrics.prometheus-endpoint-password your-secure-password ghe-config-apply
访问 Prometheus 终结点
Prometheus 终结点将在以下位置可用:
https://[hostname]:8010/metrics
身份验证的用途:
-
**用户名**:`ghes-metrics` -
**密码**:配置中设置的值
配置外部工具以擦除指标
可以将各种外部监控工具配置为从 Prometheus 终结点中收集指标。
Prometheus
将以下作业配置添加到 Prometheus 配置文件:
scrape_configs:
- job_name: 'github-enterprise-server'
static_configs:
- targets: ['your-ghes-hostname:8010']
basic_auth:
username: 'ghes-metrics'
password: 'your-secure-password'
scrape_interval: 30s
metrics_path: '/metrics'
scheme: https
tls_config:
# Set `true` only when testing with self-signed certificates
insecure_skip_verify: false
其他监视工具
Prometheus 端点与任何可以抓取 Prometheus 格式指标的监控工具兼容,包括:
- Grafana (使用 Prometheus 数据源)
- Datadog (使用 Prometheus 监控)
- New Relic (使用 Prometheus 集成)
- 维多利亚指标
- InfluxDB (使用 Prometheus 输入插件)
Prometheus 端点的安全注意事项
可以实施其他安全措施来保护指标终结点。
密码保护
Prometheus 终结点支持使用密码来限制访问。
可以通过 管理控制台 或命令行接口来进行配置。
-
**使用管理控制台**:在监视设置中,使用 “终结点密码 ”字段输入强密码来控制对终结点的访问。
-
**使用命令行接口**:ghe-config observability.metrics.prometheus-endpoint-password your-secure-password ghe-config-apply
IP 允许列表
Prometheus 终结点支持 IP 允许列表,以提高安全性。
可以通过 管理控制台 或命令行接口来进行配置。
-
**使用管理控制台**:在监视设置中,使用 逗号分隔列表字段中的“受信任的 IPv4/IPv6 地址”或“CIDR 块 ”输入应有权访问终结点的 IP 地址或 CIDR 块。
-
**使用命令行接口**:ghe-config observability.metrics.prometheus-endpoint-trusted-ips "10.0.0.0/8,192.168.0.0/16" ghe-config-apply
测试终结点
检查是否导出了指标:
# Test the Prometheus endpoint
curl -u ghes-metrics:your-password https://your-ghes-hostname:8010/metrics
选项 2:使用自定义 OpenTelemetry 管道
GitHub Enterprise Server 支持自定义 OpenTelemetry 收集器配置,允许通过添加自定义管道、导出器和处理器来扩展监控功能。 这可以让您在保持 GitHub Enterprise Server 默认可观测性堆栈的同时,将指标发送到外部监控系统。
自定义配置的重要注意事项
- 自定义配置将叠加到默认的 GitHub Enterprise Server OpenTelemetry 配置中
-
**保留路径**:路径 `/ghes` 和 `/internal` 为 GitHub Enterprise Server 的内部使用而保留,禁止在自定义配置文件中使用。 -
`otlp/ghes` 和 `prometheus/ghes` 接收器是 GitHub Enterprise Server 指标的内置来源,可以在自定义管道中使用 - 在应用到生产环境之前,在非生产环境中彻底测试配置
- 启用自定义配置后监视资源使用情况,因为其他管道可能会增加 CPU 和内存消耗
启用自定义 OpenTelemetry 配置
您可以通过 管理控制台 或命令行界面启用自定义 OpenTelemetry 配置。
使用管理控制台
-
在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击“”。
-
如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。1. 在“ 站点管理”边栏中,单击“管理控制台”****。
-
在监视设置中,首先选择“ 启用 OpenTelemetry”。
-
选择“ 启用自定义 OpenTelemetry 收集器管道”。
-
使用 “浏览...” 按钮上传自定义 OpenTelemetry 收集器配置文件(*.yml),请参阅 常用监视系统的示例配置。
-
在“设置”边栏下,单击“保存设置”。
注意
保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。
-
等待配置运行完毕。
使用命令行
-
SSH 到 GitHub Enterprise Server 实例,并运行以下命令。
ghe-config observability.metrics.custom-config-enabled true -
在
/data/user/common/otelcol.yaml创建您的自定义 OpenTelemetry 配置文件:sudo nano /data/user/common/otelcol.yaml -
添加自定义配置(请参阅 常用监视系统的示例配置)。
-
应用该配置:
ghe-config-apply
常用监视系统的示例配置
以下示例演示如何为常用监视平台配置自定义 OpenTelemetry 管道。 有关其他导出程序或创建自己的导出程序的信息,请参阅 OpenTelemetry 收集器的存储库。
Grafana Cloud
---
exporters:
prometheusremotewrite:
endpoint: "https://prometheus-us-central1.grafana.net/api/prom/push"
headers:
Authorization: "Bearer your-grafana-cloud-token"
service:
pipelines:
metrics:
receivers: [otlp/ghes, prometheus/ghes]
processors: [batch/ghes]
exporters: [prometheusremotewrite]
Datadog
---
exporters:
datadog:
api:
site: datadoghq.com
key: your-datadog-api-key
host_metadata:
enabled: true
service:
pipelines:
metrics:
receivers: [otlp/ghes, prometheus/ghes]
processors: [batch/ghes]
exporters: [datadog]
New Relic
---
exporters:
otlp:
endpoint: "https://otlp.nr-data.net:4317"
headers:
api-key: "your-new-relic-license-key"
service:
pipelines:
metrics:
receivers: [otlp/ghes, prometheus/ghes]
processors: [batch/ghes]
exporters: [otlp]
通用的 OTLP 终结点
---
exporters:
otlp:
endpoint: "https://your-otel-collector:4317"
headers:
api-key: "your-api-key"
tls:
insecure: false
service:
pipelines:
metrics:
receivers: [otlp/ghes, prometheus/ghes]
processors: [batch/ghes]
exporters: [otlp]
网络安全注意事项
根据所选的监视方法配置网络和安全设置。
TLS 和证书
若要安全连接到外部监视系统:
- 尽可能使用有效的 TLS 证书
- 在监视系统中配置适当的
tls_config设置 - 考虑使用双向 TLS [mTLS] 来增强安全性
后续步骤
- 若要配置 OpenTelemetry 设置,请参阅 为实例配置 OpenTelemetry。
- 若要了解有关可用指标的详细信息,请参阅 关于 OpenTelemetry 指标。