use*_*367 6 prometheus prometheus-operator prometheus-node-exporter
prometheus-operator 包含 DaemonSet,用于将节点导出器部署到集群中的每个节点。它有效,但我们缺少一些有用的标签信息,例如:
# kubectl get nodes --all-namespaces --show-labels=true
NAME STATUS ROLES AGE VERSION LABELS
ip-1 Ready master 2d v1.10.12 ...,kubernetes.io/role=master,...
=
ip-2 Ready node 2d v1.10.12 ...,kubernetes.io/role=node,...
Run Code Online (Sandbox Code Playgroud)
所以我们在标签中有有用的信息——ip-1是master,ip-2是worker等。
但此信息在节点导出器目标上丢失,因为节点标签不会传播到 daemonset 节点导出器 pod。
例如,在普罗米修斯中,我无法按节点的类型对节点进行分组。
也许有办法实现这一目标?谢谢!
Bra*_*ken 10
prometheus中的node-exporter指标缺少节点信息但有pod信息的原因是因为prometheus-operator为node-exporter提供了一个ServiceMonitor,它设置了一个带有端点的scrape配置kubernetes_sd_config.role,这只获取__meta_kubernetes_endpoint和 元__meta_kubernetes_pod标签。
我们想要使用带有kubernetes_sd_config.roleof节点的抓取配置。为此,节点导出器抓取端点必须可在节点地址上访问,为节点导出器提供的守护进程集已在节点上公开端口 9100。
下一步是为 prometheus-operator 提供额外的抓取配置,以通过节点而不是服务发现节点导出器,并复制我们可能需要的任何节点标签:
- job_name: node-exporter
relabel_configs:
- source_labels: [__address__]
action: replace
regex: ([^:]+):.*
replacement: $1:9100
target_label: __address__
- source_labels: [__meta_kubernetes_node_name]
target_label: name
- source_labels: [__meta_kubernetes_node_label_beta_kubernetes_io_arch]
target_label: arch
- source_labels: [__meta_kubernetes_node_label_beta_kubernetes_io_instance_type]
target_label: instance_type
- source_labels: [__meta_kubernetes_node_label_kubernetes_io_os]
target_label: os
- source_labels: [__meta_kubernetes_node_label_topology_kubernetes_io_region]
target_label: region
- source_labels: [__meta_kubernetes_node_label_topology_kubernetes_io_zone]
target_label: zone
- source_labels: [__meta_kubernetes_node_label_dedicated] # or any other custom label
target_label: dedicated
kubernetes_sd_configs:
- role: node
Run Code Online (Sandbox Code Playgroud)
此后,您可以删除节点导出器的 ServiceMonitor。
重新标签__address__很重要,感谢如何配置 prometheus kubernetes_sd_configs 以指定特定主机端口?
看来你需要使用relabel_config
这是一个示例: https: //www.robustperception.io/automatically-monitoring-ec2-instances
PS 至于特定角色,您也可以找到有用的这篇文章:How to have labels for machine Roles
更新:要获取元数据中无法提供的其他节点详细信息,可以使用 sidecar 或 init 容器,例如:节点属性的 init 容器 example。
此外,使节点标签可用于 pod 也是一个未解决的问题:40610
| 归档时间: |
|
| 查看次数: |
4809 次 |
| 最近记录: |