gpt4 book ai didi

kubernetes - 使用外部 Prometheus 抓取 CoreDNS 指标

转载 作者:行者123 更新时间:2023-12-02 11:38:33 24 4
gpt4 key购买 nike

我有一个 kubernetes 集群(使用 Typhoon 模块构建)和一个位于不同 VPC 中的 Prometheus 实例(在 docker-compose 上运行,而不是在 Kubernetes 集群上运行)。我启用了 vpc 对等连接,并且所需的端口对这个 vpc 开放。除 coredns pod 外,所有指标都按预期被抓取。这里的问题是 coredns pod 分配了 10.2.. IP,这与我为 pod 运行而配置的 IP 范围不同。
如果 coredns pod 获得 IP 172...*,我的 prometheus 将能够解决它,并且抓取将成功。
现在,我不确定如何抓取这些指标。如果您知道我做错了什么,请告诉我。

$ kubectl get pods -n kube-system -o wide | grep coredns

coredns-7d8995c4cd-4l4ft 1/1 Running 1 7d1h 10.2.5.2 ip-172-*-*-* <none> <none>
coredns-7d8995c4cd-vxd9d 1/1 Running 1 6d3h 10.2.3.9 ip-172-*-*-* <none> <none>
Prometheus.yml 文件配置有以下作业。
  - job_name: 'kubernetes-service-endpoints'
kubernetes_sd_configs:
- role: endpoints
api_server: https://kubernetes-cluster:6443
tls_config:
insecure_skip_verify: true
bearer_token: "TOKEN"

bearer_token: "TOKEN"

honor_labels: true
relabel_configs:
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
action: replace
target_label: __scheme__
regex: (https?)
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
action: replace
target_label: __address__
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
- action: labelmap
regex: __meta_kubernetes_service_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: namespace
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: pod
- source_labels: [__meta_kubernetes_service_name]
action: replace
target_label: job

metric_relabel_configs:
- source_labels: [__name__]
action: drop
regex: etcd_(debugging|disk|request|server).*
P.S:我使用 Flannel 作为我的网络 CNI,以便获得使用主机网络本身的 IP 创建的 pod。
更新信息:
我尝试在 kubernetes 上部署 prometheus,并尝试按照 Yaron 的建议将此数据联合到我的 prometheus docker。
我正在尝试联邦的以下配置,但没有看到任何指标加载到我的目标普罗米修斯。
  - job_name: 'federate'
scrape_interval: 10s

honor_labels: true
metrics_path: '/federate'

params:
'match[]':
- '{job="prometheus"}'
- '{job="kubernetes-nodes"}'
- '{job="kubernetes-apiservers"}'
- '{job="kubernetes-service-endpoints"}'
- '{job="kubernetes-cadvisor"}'
- '{job="kubelet"}'
- '{job="etcd"}'
- '{job="kubernetes-services"}'
- '{job="kubernetes-pods"}'
scheme: https
static_configs:
- targets:
- prom.mycompany.com

最佳答案

解决此问题的最佳实践是在运行 Coredns 的集群内运行一个 prometheus 实例,并将该 prometheus 抓取的指标联合到使用 docker-compose 运行的外部 prometheus 中。
您可以阅读有关联邦的更多信息 here ,以了解如何开始利用它。
更高级的用例是使用 Thanos 更好地在不同的 prometheus 服务器之间分配查询,但重点仍然是在每个集群中运行内部 prometheus 服务器。

关于kubernetes - 使用外部 Prometheus 抓取 CoreDNS 指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64088375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com