monitoring with Prometheus
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.yml和prom-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的更多相关文章
- kubernetes之监控Prometheus实战--prometheus介绍--获取监控(一)
Prometheus介绍 Prometheus是一个最初在SoundCloud上构建的开源监控系统 .它现在是一个独立的开源项目,为了强调这一点,并说明项目的治理结构,Prometheus 于2016 ...
- Prometheus使用入门
Monitoring with Prometheus读书笔记 原书见: https://www.safaribooksonline.com/library/view/monitoring-with-p ...
- 部署 Prometheus Operator - 每天5分钟玩转 Docker 容器技术(179)
本节在实践时使用的是 Prometheus Operator 版本 v0.14.0.由于项目开发迭代速度很快,部署方法可能会更新,必要时请参考官方文档. 下载最新源码 git clone https: ...
- k8s部署prometheus
https://www.kancloud.cn/huyipow/prometheus/527092 https://songjiayang.gitbooks.io/prometheus/content ...
- Monitor Minio server with Prometheus
转自:https://blog.minio.io/monitor-minio-server-with-prometheus-4ed537abcb74 Prometheus is an open sou ...
- kubernetes监控--Prometheus
本文基于kubernetes 1.5.2版本编写 kube-state-metrics kubectl create ns monitoring kubectl create sa -n monito ...
- 微服务监控神器Prometheus的安装部署
本文涉及:如何在k8s下搭建Prometheus+grafana的监控环境 基本概念 Prometheus提供了容器和云原生领域数据搜集.存储.处理.可视化和告警一套完整的解决方案,最初时是由Soun ...
- Kubernetes 系列(六):Kubernetes部署Prometheus监控
1.创建命名空间 新建一个yaml文件命名为monitor-namespace.yaml,写入如下内容: apiVersion: v1 kind: Namespace metadata: name: ...
- k8s Helm安装Prometheus Operator
Ubuntu 18 Kubernetes集群的安装和部署 以及Helm的安装完成了k8s的集群和helm的安装,今天我们来看看Prometheus的监控怎么搞.Prometheus Operator ...
随机推荐
- Ansible实战演练
[root@Ansible-server ~]# rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.n ...
- Python-面向对象(二)-Day7
1.字段 12.方法 43.属性 63.1.属性的基本使用 73.2.实例:对于主机列表 83.3.属性的两种定义方式 94.对于类的成员而言都有两种形式: 144.1.私有成员和公有成员的访问限制不 ...
- xftp上传文件失败,执行程序发现磁盘满了:No space left on device
参考链接 No space left on device 解决Linux系统磁盘空间满的办法http://www.cnblogs.com/aspirant/p/3604801.html如何解决linu ...
- YML(1)什么是 YML
YAML(IPA: /ˈjæməl/,尾音类似camel骆驼) YAML 是一个可读性高,用来表达资料序列的编程语言. YAML参考了其他多种语言,包括:XML.C语言.Python.Perl以及电子 ...
- 我对let和const理解
let和const是es6新出的两种变量声明的方式,接下来我来分别针对这两个,聊一聊. let let它的出现,我认为主要是解决了块级作用域的需求.因为js以前本身是没有什么块级作用域的概念的(顶 ...
- python多进程之间的通信:消息队列Queue
python中进程的通信:消息队列. 我们知道进程是互相独立的,各自运行在自己独立的内存空间. 所以进程之间不共享任何变量. 我们要想进程之间互相通信,传送一些东西怎么办? 需要用到消息队列!! 进程 ...
- 推荐几个IDEA插件,Java开发者撸码利器。
这里只是推荐一下好用的插件,具体的使用方法不一一详细介绍. JRebel for IntelliJ 一款热部署插件,只要不是修改了项目的配置文件,用它都可以实现热部署.收费的,破解比较麻烦.不过功能确 ...
- Django小范围傻瓜总结
1.母版: layout.html {% block x %}{% endblock %} 2.子版: {% extends 'layout' %} {% block x %}.......{% en ...
- Maven使用本地jar包(两种方式)
有些项目会用到一些Maven库上没有的jar包,这就需要我们自己引入了 这种情况有两种办法: 第一种方式,在pom文件中引用时使用本地路径: 首先把jar包放到项目中: 然后在pom文件中引入: &l ...
- Maven 私服的简单使用
所有的 Java 开发者应该是没有没用过 Maven 的吧.Maven 作为 Java 项目管理工具,它不仅可以用作包管理,还有许多的插件,可以支持整个项目的开发.打包.测试.部署等一系列行为.而包管 ...