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 ...
随机推荐
- HTTP协议扫盲(二)HTTP协议的请求方法、请求头和响应头
一.HTTP请求方法 Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST ...
- Python入门之迭代器/生成器/yield的表达方式/面向过程编程
本章内容 迭代器 面向过程编程 一.什么是迭代 二.什么是迭代器 三.迭代器演示和举例 四.生成器yield基础 五.生成器yield的表达式形式 六.面向过程编程 ================= ...
- JavaScript 重点笔记
JavaScript 重点笔记 ## 数组 // 必须掌握 - arr.length:获取数组元素的长度 - arr.splice(起始位置,长度):从数组中添加或删除元素. - arr.indexO ...
- python基础——多态与多态性
python基础--多态与多态性 1 多态 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承) 1. 序列类型有多种形态:字符串,列表,元组. 2. 动物有多种形态:人, ...
- NGUI----简单聊天系统一
1:聊天背景的创建 新建一个场景-----保存场景 NGUI---->Create-----Panel 选中UIRoot,然后新建一个sprite 选择图集 效果如下图 添加一个可拖拽的功能 选 ...
- SpringCloud异常(Euruka):Application run failed java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder
在测试Euruka作为服务注册中心的时候碰到了这个问题,错误提示如下: "C:\Program Files\Java\jdk1.8.0_161\bin\java" -XX:Tier ...
- Node.js系列文章:如何进行代码调试
使用任何一门编程语言,都少不了代码调试这一功能.我们在使用JavaScript编写浏览器端代码时,Chrome提供了强大的调试工具Dev Tools,但是在编写Node.js代码时,大多数人最开始都使 ...
- .NET Core Community 首个千星项目诞生:CAP
项目简介 在我们构建 SOA 或者 微服务系统的过程中,我们通常需要使用事件来对各个服务进行集成,在这过程中简单的使用消息队列并不能保证数据的最终一致性, CAP 采用的是和当前数据库集成的本地消息表 ...
- 常用linux命令备忘
备忘: 关闭防火墙:# systemctl stop firewalld 查看防火墙状态:# systemctl status firewalld 停止防火墙:# systemctl disabl ...
- Mysql之视图的操作
视图的操作: 1.视图的创建: create view view_name as 查询语句; 2.视图的查看: show tables;// 显示所有的表和视图 show create view vi ...