Prometheus是一款开源的监控工具,支持k8s metrics的数据格式,同时也支持通过k8s api进行服务发现从而实现对自定义的metrics进行监控。下面通过一个示例来介绍如何将Prometheus集成到k8s集群中。

参考资料

文中的示例具体参考了这篇文章:https://coreos.com/blog/monitoring-kubernetes-with-prometheus.html

Prometheus官方文档:https://prometheus.io/docs

镜像:quay.io/prometheus/prometheus:v1.0.1

示例

编排需要两个文件:prom-deployment.ymlprom-service.yml。前者用于创建deployment并运行一个pod,还创建了一个configmap用于配置Prometheus。后者用于对外提供Prometheus服务。

下面介绍一下configmap中的几个关键配置:

  • scrape_configs用来配置数据源(Prometheus称之为target),每个target可以用job_name来命名。Prometheus会定期向每个target发送http请求来获取metrics数据,默认path为/metrics。
  • 示例中以kubernetes开头的job都是k8s相关的target,每个target配置的kubernetes_sd_configs就是告诉Prometheus如何通过k8s api发现target服务。
  • 大多数情况下我们只需要配置示例中的kubernetes-nodes,其中kubernetes_sd_configs.role=node是必须的。配置之后Prometheus会自动发现各k8s node,并通过kubelet的api来获取metrics,如其中一个node target为192.168.1.97:10250/metrics。
  • kubelet提供的metrics通常已满足大多数需求,它能提供各容器的CPU、内存、流量、FS IO等监控数据。
  • 我们也可以提供自定义的metrics数据,包括service维度和pod维度。这需要我们自己实现/metrics接口供Prometheus获取数据。配置方式可参考示例中的kubernetes-services和kubernetes-pods
  • 每个target的relabel_configs用来处理数据对应的label,__meta开头的label是Prometheus为我们封装好的label,可以用它来生成我们需要的label。label可以理解为索引,在Prometheus查询中扮演着重要角色。
  • 大多数情况下,只需要设置kubernetes_sd_configs.in_cluster=true配置就可以完成k8s api的认证方式配置(该方式自动使用serviceaccount)。示例运行的环境有一些特殊设置,为此使用了tls_config和bearer_token进行了配置。

通过两个yaml文件就可以完成Prometheus的部署,在浏览器中访问service可以进入Prometheus的控制台。通常在Prometheus pod启动几分钟之后才能看到监控数据。

相比于heapster api,Prometheus提供的查询API功能更加强大,可以基于label来实现复杂查询。文档也相对完善。但Prometheus从kubelet api中查询到的metrics种类很多,每种metric含义需要进一步查找文档甚至看源码来确认。

monitoring with Prometheus的更多相关文章

  1. kubernetes之监控Prometheus实战--prometheus介绍--获取监控(一)

    Prometheus介绍 Prometheus是一个最初在SoundCloud上构建的开源监控系统 .它现在是一个独立的开源项目,为了强调这一点,并说明项目的治理结构,Prometheus 于2016 ...

  2. Prometheus使用入门

    Monitoring with Prometheus读书笔记 原书见: https://www.safaribooksonline.com/library/view/monitoring-with-p ...

  3. 部署 Prometheus Operator - 每天5分钟玩转 Docker 容器技术(179)

    本节在实践时使用的是 Prometheus Operator 版本 v0.14.0.由于项目开发迭代速度很快,部署方法可能会更新,必要时请参考官方文档. 下载最新源码 git clone https: ...

  4. k8s部署prometheus

    https://www.kancloud.cn/huyipow/prometheus/527092 https://songjiayang.gitbooks.io/prometheus/content ...

  5. Monitor Minio server with Prometheus

    转自:https://blog.minio.io/monitor-minio-server-with-prometheus-4ed537abcb74 Prometheus is an open sou ...

  6. kubernetes监控--Prometheus

    本文基于kubernetes 1.5.2版本编写 kube-state-metrics kubectl create ns monitoring kubectl create sa -n monito ...

  7. 微服务监控神器Prometheus的安装部署

    本文涉及:如何在k8s下搭建Prometheus+grafana的监控环境 基本概念 Prometheus提供了容器和云原生领域数据搜集.存储.处理.可视化和告警一套完整的解决方案,最初时是由Soun ...

  8. Kubernetes 系列(六):Kubernetes部署Prometheus监控

    1.创建命名空间 新建一个yaml文件命名为monitor-namespace.yaml,写入如下内容: apiVersion: v1 kind: Namespace metadata: name: ...

  9. k8s Helm安装Prometheus Operator

    Ubuntu 18 Kubernetes集群的安装和部署 以及Helm的安装完成了k8s的集群和helm的安装,今天我们来看看Prometheus的监控怎么搞.Prometheus Operator ...

随机推荐

  1. AJAX使用说明书

    AJAX简介 什么是AJAX AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异 ...

  2. MYSQL之库操作

    一.系统数据库 information_schema :虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等 mysql:核心数据库,里面包含用户.权限. ...

  3. Android TabLayout 在宽屏幕上tab不能平均分配的问题解决

    当TabLayout 在宽屏幕的设备上,如平板横屏的时候,tab的宽度超过一定值后,就不在平均分配宽度,而是居中显示.此时设置 app:tabMode="fixed"或者 top_ ...

  4. shiro的sessionManager类继承结构及主要类方法

    shiro1.3.2 sessionManage的作用是对会话进行管理. 1.类结构 2.主要接口介绍 SessionManager: 包括两个方法,一个是新建会话,一个是通过key获取会话 Vali ...

  5. Linux-centos-7.2-64bit 安装配置mysql

    2018-04-12 安装在/usr/local/下,配置文件在/etc/my.ini 1.下载mysql安装包到 /usr/local/software cd /usr/local/software ...

  6. from sys import argv

    from sys import argv  初学理解: sys 为内置模块,提供了许多函数和变量来处理 Python 运行时环境的不同部分.是固定的用法,不能自己随便写名字代替它,这行的作用就是要把用 ...

  7. 基于gin框架和jwt-go中间件实现小程序用户登陆和token验证

    本文核心内容是利用jwt-go中间件来开发golang webapi用户登陆模块的token下发和验证,小程序登陆功能只是一个切入点,这套逻辑同样适用于其他客户端的登陆处理. 小程序登陆逻辑 小程序的 ...

  8. java--Iterator迭代问题:集合并发访问异常

    用Iterator对数组进行迭代后,如果在迭代过程中对数组进行增加元素操作(这里iterator本身没有提供增加操作方法)时,就会抛出并发访问异常: 异常如下: Exception in thread ...

  9. [ Java学习基础 ] String字符串的基本操作

    字符串的拼接 String字符串虽然是不可变的字符串,但也同样可以进行拼接,只是会产生一个新的对象.String字符串拼接的时候可以使用"+"运算符或String的concat(S ...

  10. 分析 ajax 请求并抓取今日头条街拍美图

    首先分析街拍图集的网页请求头部: 在 preview 选项卡我们可以找到 json 文件,分析 data 选项,找到我们要找到的图集地址 article_url: 选中其中一张图片,分析 json 请 ...