写点什么

运维训练营第 19 周作业

作者:好吃不贵
  • 2023-03-19
    浙江
  • 本文字数:1251 字

    阅读完需:约 4 分钟

20230318 作业:

  1.总结 prometheus 服务发现实现过程

  2.总结 prometheus 标签重写 relabel_configs

  3.kubernetes 环境中部署 prometheus 并基于 kubernetes_sd_config 实现 pod、node、endpoint 等监控目标动态发现

  4.kubernetes 环境外部署 prometheus 并基于 kubernetes_sd_config 实现 pod、node、endpoint 等监控目标动态发现

  扩展:

    1.基于 HPA 控制器对 pod 副本实现弹性伸缩

prometheus 服务发现实现过程

Prometheuds 是基于 Pull 模式抓取监控数据,首先需要能够发现监控的目标对象 target。而 Prometheus 最终的监控,一般都是 pod,可以通过 service 来发现,就需要 service discovery(SD)。

目前支持很多种协议。

<azure_sd_config><consul_sd_config><digitalocean_sd_config><docker_sd_config><dockerswarm_sd_config><dns_sd_config><ec2_sd_config><openstack_sd_config><file_sd_config><gce_sd_config><hetzner_sd_config><http_sd_config><kubernetes_sd_config><kuma_sd_config><lightsail_sd_config><linode_sd_config><marathon_sd_config><nerve_sd_config><serverset_sd_config><triton_sd_config><eureka_sd_config><scaleway_sd_config><static_config>
复制代码

大致由 3 部分组成:

scrape_config:在 prometheus.yaml 中,job 生成一个个 discovery 的服务。

discovery manager:有定时周期触发任务,有变更,就将 targets 容器的 target 信息放入到 syncCh 通道中。

scrape 组件,监听 syncCh 通道,监控的 targets 信息传递给 scrape 组件,然后 reload 间 target 纳入监控。

具体的配置项可以看官方配置

prometheus 标签重写 relabel_configs

通过 relabel_configs,采集数据后,写入数据前,通过 metric relabeling 进行配置。

relabel_config 里,每个配置块都是一个规则列表,规则依次应用于每个标记的对象。

比如这里会应用正则表达式的值,地址和端口,把它们合并为一个字符串。

prometheus 在 k8s 内实现服务发现

集群内的发现比较容易,因为默认在 pod 里,自带了 k8s 的密钥等信息。所以 Prometheus 一般会放在 k8s 的内部。

如果 pod 很多,可以过滤,比如配置只发现 myserver 和 magedu 的 ns 下的 pod。

prometheus 在 k8s 外实现服务发现

k8s 里需要加上 annotations:

  1. api-server

先查看 api-server,在 default 的 ns 下,访问方式一般是 https,端口是 6443。

tls 相关证书可以通过指定 ca 证书路径,或者 insecure_skip_verify:true 跳过。

  1. controller-manager

监听地址要修改为 127.0.0.1

  1. scheduler

默认是 80 端口,需要指定为 10251 端口,同时指定 token,否则会返回 400。

4. state-metrics

默认是 8080 和 801 端口,需指定为 8080 端口。

  1. kubelet

指标采集地址是/metrics/cadvisor,需要配置 https 访问,可以通过 insecure_skip_verify:true 跳过。

  1. node exporter

默认是 10250,替换为 9100。

  1. coreDNS

默认 53 端口,需指定为 9153。

  1. etcd

默认是 127.0.0.1:2379 地址,需修改为 0.0.0.0:2381 端口。

参考资料

https://zhuanlan.zhihu.com/p/402856605

https://p8s.io/docs/service-discovery/relabel/

https://blog.csdn.net/qq_33816243/article/details/126863790

用户头像

好吃不贵

关注

还未添加个人签名 2018-11-20 加入

还未添加个人简介

评论

发布
暂无评论
运维训练营第19周作业_好吃不贵_InfoQ写作社区