Skip to main content

Enterprise Server 3.20 目前作为发布候选版本提供。

使用 OpenTelemetry 设置外部监视

配置外部监视系统,以收集和分析来自 GitHub Enterprise Server 实例的 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] 来增强安全性

后续步骤