Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
除了 Azure Monitor Prometheus 代理默认抓取的默认抓取目标外,可通过以下步骤使用 configmap 向代理提供更多抓取配置。 Azure Monitor Prometheus 代理不理解也不处理 operator CRD 来获得抓取配置,而是使用 Prometheus 配置中定义的本机 Prometheus 配置。
可用于自定义目标抓取的三个 configmap 包括 -
- ama-metrics-prometheus-config(推荐)- 创建具有此名称的 configmap 后,将从在群集中运行的 Azure Monitor 指标副本 Pod 运行其中定义的抓取作业。
- ama-metrics-prometheus-config-node(高级)- 创建具有此名称的 configmap 后,将从在群集中运行的每个 Linux DaemonSet Pod 运行其中定义的抓取作业。 有关详细信息,请参阅高级设置。
- ama-metrics-prometheus-config-node-windows(高级)- 创建具有此名称的 configmap 后,将从每个 Windows DaemonSet 运行其中定义的抓取作业。 有关详细信息,请参阅高级设置。
创建 Prometheus 配置文件
创作 Prometheus 抓取配置作业的一种更简单方法:
- 步骤:1 使用配置文件 (yaml) 创作/定义抓取作业
- 步骤:2 使用本文中指定的自定义工具验证抓取配置文件,然后将该配置文件转换为 configmap
- 步骤:3 将抓取配置文件作为 configmap 部署到群集。
这种方法可以更轻松地创作 yaml 配置(它对空间非常敏感),并且不会通过在 configmap 中直接创作抓取配置来添加意外的空间。
创建一个名为 prometheus-config
的 Prometheus 抓取配置文件。 要详细了解如何为 Prometheus 创作抓取配置,请参阅配置提示和示例。 还可查看 Prometheus.io 抓取配置参考。 配置文件将在 scrape_configs
部分下列出抓取配置,并且可选择使用“全局”部分来设置全局 scrape_interval
、scrape_timeout
和 external_labels
。
小窍门
对全局部分的更改将影响默认配置和自定义配置。
以下是一个示例 Prometheus 抓取配置文件:
global:
scrape_interval: 30s
scrape_configs:
- job_name: my_static_config
scrape_interval: 60s
static_configs:
- targets: ['my-static-service.svc.cluster.local:1234']
- job_name: prometheus_example_app
scheme: http
kubernetes_sd_configs:
- role: service
relabel_configs:
- source_labels: [__meta_kubernetes_service_name]
action: keep
regex: "prometheus-example-service"
验证抓取配置文件
代理将使用 promconfigvalidator
工具验证通过 configmap 提供给它的 Prometheus 配置。 如果配置无效,则附加代理将会拒绝给定的自定义配置。 获得 Prometheus 配置文件后,可选择性地使用 工具来验证配置,然后再创建代理使用的配置映射。
promconfigvalidator
工具包含在 Azure Monitor 指标加载项 pod 中。 可使用群集中 ama-metrics-node-*
命名空间中的任何 kube-system
Pod 下载该工具来进行验证。 使用 kubectl cp
下载工具及其配置:
for podname in $(kubectl get pods -l rsName=ama-metrics -n=kube-system -o json | jq -r '.items[].metadata.name'); do kubectl cp -n=kube-system "${podname}":/opt/promconfigvalidator ./promconfigvalidator; kubectl cp -n=kube-system "${podname}":/opt/microsoft/otelcollector/collector-config-template.yml ./collector-config-template.yml; chmod 500 promconfigvalidator; done
复制可执行文件和 yaml 后,找到所创作的 Prometheus 配置文件的路径。 然后,替换命令中的 <config path>
并使用以下命令运行验证程序:
./promconfigvalidator/promconfigvalidator --config "<config path>" --otelTemplate "./promconfigvalidator/collector-config-template.yml"
如果可选 merged-otel-config.yaml
参数未提供路径,则运行验证程序会生成合并的配置文件 output
。 请勿将此自动生成的合并文件作为配置用于指标收集器代理,因为它仅用于工具验证和调试目的。
将配置文件部署为 configmap
自定义 Prometheus 配置文件在 prometheus-config
命名空间中用作指标附加 configmap ama-metrics-prometheus-config
(或)ama-metrics-prometheus-config-node
(或)ama-metrics-prometheus-config-node-windows
中名为 kube-system
的字段。 可以根据上面创建的抓取配置文件创建 configmap,其方法是将 Prometheus 配置文件重命名为 prometheus-config
(没有文件扩展名),并运行一个或多个以下命令,具体取决于要为自定义抓取作业配置创建的 configmap。
例如;- 创建要由 replicsset 使用的 configmap
kubectl create configmap ama-metrics-prometheus-config --from-file=prometheus-config -n kube-system
这会在 ama-metrics-prometheus-config
命名空间中创建名为 kube-system
的 configmap。 Azure Monitor 指标 pod 将会在 30-60 秒后重启以应用新的配置。要查看配置验证、处理或合并是否存在任何问题,可以查看 ama-metrics
副本 Pod
例如;- 创建要由 Linux DaemonSet 使用的 configmap
kubectl create configmap ama-metrics-prometheus-config-node --from-file=prometheus-config -n kube-system
这会在 ama-metrics-prometheus-config-node
命名空间中创建名为 kube-system
的 configmap。 每个 Azure Monitor 指标 Linux DaemonSet 将在 30-60 秒后重启,以应用新的配置。要查看配置验证、处理或合并是否存在任何问题,可以查看 ama-metrics-node
Linux Deamonset Pod
例如;- 创建要由 Windows DaemonSet 使用的 configmap
kubectl create configmap ama-metrics-prometheus-config-node-windows --from-file=prometheus-config -n kube-system
这会在 ama-metrics-prometheus-config-node-windows
命名空间中创建名为 kube-system
的 configmap。 每个 Azure Monitor 指标 Windows DaemonSet pod 将会在 30-60 秒后重启以应用新的配置。要查看配置验证、处理或合并是否存在任何问题,可以查看 ama-metrics-win-node
Windows Deamonset Pod
确保在运行以下命令之前将 Prometheus 配置文件命名为 prometheus-config
,因为该文件名用作配置映射设置名称。
这会在 ama-metrics-prometheus-config
命名空间中创建名为 kube-system
的 configmap。 Azure Monitor 指标 pod 将会重启以应用新的配置。要查看配置验证、处理或合并是否存在任何问题,可以查看 ama-metrics
Pod。
ama-metrics-prometheus-config
提供了 配置映射示例。
故障排除
如果在 kube-system 命名空间中成功创建了 configmap(ama-metrics-prometheus-config 或 ama-metrics-prometheus-config-node),但仍然看不到抓取自定义目标,请使用 kubectl 日志检查 ama-metrics-prometheus-config configmap 的副本 pod 日志或 ama-metrics-prometheus-config-node configmap 的 DaemonSet pod 日志中是否存在错误,并确保在带有前缀 prometheus-config-merger 的开始合并默认和自定义 Prometheus 配置部分中没有错误
注释
高级设置:为 daemonset 配置自定义 Prometheus 抓取作业
ama-metrics
副本 Pod 使用自定义的 Prometheus 配置并抓取指定目标。 对于具有大量节点和 Pod 以及要抓取的大量指标的群集,可以将一些适用的自定义抓取目标从单个ama-metrics
副本 Pod 卸载到ama-metrics
DaemonSet Pod。
ama-metrics-prometheus-config-node configmap类似于副本集 configmap,且可以创建以在每个节点上具有静态抓取配置。 抓取配置应仅面向单个节点,而不应使用服务发现/pod 注释。 否则,每个节点会尝试抓取所有目标,并对 Kubernetes API 服务器进行多次调用。
通过将 static_configs
用于目标,使用 $NODE_IP
环境变量并指定要抓取的端口,自定义抓取目标可以遵循相同的格式。 DaemonSet 的每个 pod 都会获取配置,抓取指标,然后针对该节点发送。
示例:- 下面的node-exporter
配置是 DaemonSet Pod 的默认目标之一。 它使用 $NODE_IP
环境变量,该变量已为每个 ama-metrics
加载项容器设置,以针对节点上的特定端口:
- job_name: nodesample
scrape_interval: 30s
scheme: http
metrics_path: /metrics
relabel_configs:
- source_labels: [__metrics_path__]
regex: (.*)
target_label: metrics_path
- source_labels: [__address__]
replacement: '$NODE_NAME'
target_label: instance
static_configs:
- targets: ['$NODE_IP:9100']