使用prometheus监控k8s集群

1. Prometheus 简介

以下是网上看到的简介:

Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。

作为新一代的监控框架,Prometheus 具有以下特点:

  • 强大的多维度数据模型:
  • 时间序列数据通过 metric 名和键值对来区分。
  • 所有的 metrics 都可以设置任意的多维标签。
  • 数据模型更随意,不需要刻意设置为以点分隔的字符串。
  • 可以对数据模型进行聚合,切割和切片操作。
  • 支持双精度浮点类型,标签可以设为全 unicode。
  • 灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作。
  • 易于管理: Prometheus server 是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。
  • 高效:平均每个采样点仅占 3.5 bytes,且一个 Prometheus server 可以处理数百万的 metrics。
  • 使用 pull 模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的 metrics。
  • 可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端。
  • 可以通过服务发现或者静态配置去获取监控的 targets。
  • 有多种可视化图形界面。
  • 易于伸缩。
    需要指出的是,由于数据采集可能会有丢失,所以 Prometheus 不适用对采集数据要 100% 准确的情形。但如果用于记录时间序列数据,Prometheus 具有很大的查询优势,此外,Prometheus 适用于微服务的体系架构。

2. Prometheus部署

先生成prometheus的命名空间和prometheus配置文件:
prometheus_configmap.yaml:

创建prometheus所需的SA和RABC,Deployment等配置文件:
prometheus.yaml:

部署prometheus:

部署成功,可以看看运行有没有什么问题:

找到node port:

现在可以通过http://10.19.0.21:31304/来访问了:

这个时候我们会发现,pods,ingress,deployment等监控数据都没有进来。这是因为这些监控是依赖另一个独立的应用:kube-state-metrics

3.部署kube-state-metrics

部署kube-state-metrics需要注意一下版本的兼容性:

我的k8s版本是1.10,这个版本可以使用kube-state-metrics 1.5的版本:

yaml被墙,从github上下载不下来,我干脆clone下来,clone可以,然后换到tag v1.5.0:

k8s官方镜像库也被墙了,需要换成一个镜像地址,镜像在docker官方的仓库里,地址为:https://hub.docker.com/r/mirrorgooglecontainers. 这是k8s官方仓库的一个镜像.
修改后的kube-state-metrics-deployment.yaml文件如下:

然后再批量部署,就安装完成了:

过一会就可以发现之前没有的监控指标都有了。

4. k8s节点node exporter部署

生成下面的daemonset配置文件:
vim node-exporter-ds.yml

创建daemonset:

过一会就能看到node exporter的监控信息了。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

5 − 3 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据