Prometheus 如何做到“活学活用”,大神汇总的避坑攻略

监控系统的历史悠久,是一个很成熟的方向,而 Prometheus 作为新生代的开源监控系统,慢慢成为了云原生体系的事实标准,也证明了其设计很受欢迎。

本文主要分享在 Prometheus 实践中遇到的一些问题和思考,如果你对 K8S 监控体系或 Prometheus 的设计还不太了解,可以先看下容器监控系列。

几点原则:

  • 监控是基础设施,目的是为了解决问题,不要只朝着大而全去做,尤其是不必要的指标采集,浪费人力和存储资源(To B商业产品例外)。
  • 需要处理的告警才发出来,发出来的告警必须得到处理。
  • 简单的架构就是最好的架构,业务系统都挂了,监控也不能挂。Google Sre 里面也说避免使用 Magic 系统,例如机器学习报警阈值、自动修复之类。这一点见仁见智吧,感觉很多公司都在搞智能 AI 运维。
  • Prometheus 属于 CNCF 项目,拥有完整的开源生态,与 Zabbix 这种传统 agent 监控不同,它提供了丰富的 exporter 来满足你的各种需求。你可以在这里看到官方、非官方的 exporter。如果还是没满足你的需求,你还可以自己编写 exporter,简单方便、自由开放,这是优点。

    但是过于开放就会带来选型、试错成本。之前只需要在 zabbix agent里面几行配置就能完成的事,现在你会需要很多 exporter 搭配才能完成。还要对所有 exporter 维护、监控。尤其是升级 exporter 版本时,很痛苦。非官方exporter 还会有不少 bug。这是使用上的不足,当然也是 Prometheus 的设计原则。

    K8S 生态的组件都会提供/metric接口以提供自监控,这里列下我们正在使用的:

    • cadvisor: 集成在 Kubelet 中。
    • kubelet: 10255为非认证端口,10250为认证端口。
    • apiserver: 6443端口,关心请求数、延迟等。
    • scheduler: 10251端口。
    • controller-manager: 10252端口。
    • etcd: 如etcd 写入读取延迟、存储容量等。
    • docker: 需要开启 experimental 实验特性,配置 metrics-addr,如容器创建耗时等指标。
    • kube-proxy: 默认 127 暴露,10249端口。外部采集时可以修改为 0.0.0.0 监听,会暴露:写入 iptables 规则的耗时等指标。
    • kube-state-metrics: K8S 官方项目,采集pod、deployment等资源的元信息。
    • node-exporter: Prometheus 官方项目,采集机器指标如 CPU、内存、磁盘。
    • blackbox_exporter: Prometheus 官方项目,网络探测,dns、ping、http监控
    • process-exporter: 采集进程指标
    • nvidia exporter: 我们有 gpu 任务,需要 gpu 数据监控
    • node-problem-detector: 即 npd,准确的说不是 exporter,但也会监测机器状态,上报节点异常打 taint
    • 应用层 exporter: mysql、nginx、mq等,看业务需求。
    • 还有各种场景下的自定义 exporter,如日志提取后面会再做介绍。
【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章