Skip to main content

使用 OpenTelemetry 设置外部监视

配置外部监视系统,以收集和分析来自 GitHub Enterprise Server 实例的 OpenTelemetry 指标。

注意

OpenTelemetry 指标位于 公共预览版 中,可能会更改。 我们很乐意听取你关于预览版的反馈。 你可以与客户成功团队共享它,或在 社区讨论帖子中留下评论。

外部监视方法

使用 OpenTelemetry 进行外部监控,您可以将 GitHub Enterprise Server 实例与现有的监控基础结构和工具集成。 GitHub Enterprise Server 提供了两种外部监控的主要方法:

  1.        **Prometheus 端点**:以 Prometheus 格式公开指标,供外部工具抓取
    
  2.        **自定义 OpenTelemetry 管道**:配置 OpenTelemetry 收集器以将指标推送到外部监视系统
    

注意

在群集部署中,每个节点公开自己的本地指标。 这包括节点服务器,这些服务器从群集中的所有服务器收集指标,但仅通过监视终结点公开自己的本地指标。 若要从群集中的所有节点收集指标,必须将监视系统配置为单独从每个节点收集。

先决条件

  • 启用了 OpenTelemetry 指标的 GitHub Enterprise Server 3.18 或更高版本
  • GitHub Enterprise Server 实例与外部监控系统之间的网络连接
  • 对您的 GitHub Enterprise Server 实例和监控系统的管理访问权限

选择监视方法

选择最适合基础结构和要求的监视方法。

在以下情况下使用 Prometheus 终结点:

  • 你已有基于 Prometheus 的监视基础结构
  • 首选基于拉取的监控模型
  • 你想要使用外部工具来抓取 GitHub Enterprise Server 的指标
  • 需要通过最少的配置进行简单集成

自定义 OpenTelemetry 管道

在以下情况下使用自定义 OpenTelemetry 管道:

  • 需要同时将指标推送到多个监视系统
  • 想要在外部发送指标之前对其进行转换、筛选或聚合
  • 你正在使用优先支持 OTLP 的云原生监控解决方案
  • 需要高级指标处理功能

选项 1:使用 Prometheus 终结点

OpenTelemetry 监视堆栈包括与 Prometheus 兼容的终结点,该终结点以 Prometheus 格式公开所有收集的指标,从而实现与外部监视工具的集成。 请参阅 Prometheus 文档中 的基于文本的格式

启用 Prometheus 终结点

您可以使用 管理控制台 或命令行界面启用 Prometheus 端点。

使用管理控制台

  1. 在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击“”。

  2. 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。1. 在“ 站点管理”边栏中,单击“管理控制台”****。

  3. 在监视设置中,选择“ 启用 OpenTelemetry”。

  4. (可选)调整 指标保留 期和 指标抓取间隔 字段以优化性能。

  5. 选择 “启用 Prometheus 兼容(/指标)”端点

  6. “终结点密码 ”字段中,输入强密码来控制对终结点的访问。

  7. (可选)在 逗号分隔的列表字段中的受信任 IPv4/IPv6 地址或 CIDR 块 中,输入允许访问终结点的 IP 地址或 CIDR 块。

  8. 在“设置”边栏下,单击“保存设置”。

    注意

    保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。

  9. 等待配置运行完毕。

使用命令行接口

  1. 通过 SSH 登录到您的 GitHub Enterprise Server 实例。

  2. 启用 Prometheus 接口:

    ghe-config observability.metrics.prometheus-endpoint-enabled true
    ghe-config-apply
    
  3. 为终结点设置身份验证(强烈建议):

    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 配置。

使用管理控制台

  1. 在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击“”。

  2. 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。1. 在“ 站点管理”边栏中,单击“管理控制台”****。

  3. 在监视设置中,首先选择“ 启用 OpenTelemetry”。

  4. 选择“ 启用自定义 OpenTelemetry 收集器管道”。

  5. 使用 “浏览...” 按钮上传自定义 OpenTelemetry 收集器配置文件(*.yml),请参阅 常用监视系统的示例配置

  6. 在“设置”边栏下,单击“保存设置”。

    注意

    保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。

  7. 等待配置运行完毕。

使用命令行

  1. SSH 到 GitHub Enterprise Server 实例,并运行以下命令。

    ghe-config observability.metrics.custom-config-enabled true
    
  2. /data/user/common/otelcol.yaml创建您的自定义 OpenTelemetry 配置文件:

    sudo nano /data/user/common/otelcol.yaml
    
  3. 添加自定义配置(请参阅 常用监视系统的示例配置)。

  4. 应用该配置:

    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] 来增强安全性

后续步骤