12 Prometheus 之监控 Kubernetes
在 Kubernetes 上部署 Prometheus 有多种方法,其中哪一种方法最适合很大程度上取决于你的环境。比如,你可以构建自己的部署然后通过服务的形式暴露 Prometheus,这种方法已经有一些配置可供参考,或者可以使用 CoreOS 的 Prometheus Operato。
Node Exporter 可访问许多 root 级别的资源,在 Docker 容器中运行它需要将这些资源挂载到容器中,对于 systemd 收集器来说,需要以 root 身份运行容器。这带来了潜在的安全风险,如果你无法接受该风险,则应将 Node Exporter 直接安装到实例上。
DaemonSet 使用 toleration(容忍)确保 pod 在所有节点上运行,可能也包含主节点。它非常适合监控或日志代理等项目。
以用户 0 或 root 运行 pod(这允许访问 systemd),并且还启用了 hostNetwork、hostPID 和 hostIPC,以指定实例的网络、进程和 IPC 命名空间在容器中可用。这些都是潜在的安全风险,你必须考虑是否可以承担此风险。如果这种风险是不可接受的,那么将 Node Exporter 放到实例的镜像中可能是一种更好的方法。
为了 Node Exporter pod 保持健康并提高它们的正常运行时间,可以在 Node Exporter 容器中添加了 liveness 和 readiness 探针,其中 liveness 探针检测容器内应用程序的状态。
将在 Kubernetes 集群上使用部署和服务来安装 Kube-state-metrics。部署使用 Docker 镜像 Kube-state-metrics,并在集群的一个节点上运行。服务在端口 8080 上暴露指标,由于它是一项服务,因此我们可以利用在上一节中创建的 Prometheus 服务作业。当作业运行时,Prometheus 将自动发现新的服务端点并开始抓取 Kube-state-metrics。
使用 apiserver_request_latencies_bucket 指标来计算延迟,该指标包含特定 API 资源、子资源和谓词的维度,用于衡量请求延迟。我们为第 50、90 和 99 百分位数创建了三个规则,将 quantile 设置为特定百分位数,然后使用 histogram_quantile 函数从指标桶中创建百分位数。我们已经指定了正在寻找的百分位数,例如 0.99,然后计算了 5 分钟向量的速率 rate,并将结果除以 1e+06 或 1000000 以获得微秒延迟。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/55cb90784ee3dba4d962586ba】。文章转载请联系作者。
评论