设为首页 收藏本站
查看: 1831|回复: 0

[资源发布] 基于prometheus监控k8s集群

[复制链接]

尚未签到

发表于 2018-1-5 22:52:57 | 显示全部楼层 |阅读模式
  本文建立在你已经会安装prometheus服务的基础之上,如果你还不会安装,请参考:prometheus多维度监控容器
  如果你还没有安装库k8s集群,情参考: 从零开始搭建基于calico的kubenetes

前言
  kubernetes显然已成为各大公司亲睐的容器编排工具,各种私有云公有云平台基于它构建,那么,我们怎么监控集群中的所有容器呢?目前有三套方案:


  •   heapster+influxDB
      heapster为k8s而生,它从apiserver获取节点信息,每个节点kubelet内含了cAdvisor的功能,暴露出api,heapster通过访问这些端点得到容器监控数据。它支持多种储存方式,大家常用的的就是influxDB。这套方案的缺点是缺乏报警等功能,influxDB的单点问题。因此本方案适合需求是只要实时监控展示。

  •   heapster+hawkular
      本方案解决了上面方案的问题,并且大大提升了监控的高可用性和高性能。比较重量级,适合大型集群的监控。目前hawkular开源不久。功能完善。有兴趣可以研究。本文不做详细介绍。

  •   prometheus
      本方案下文详细叙述。

k8s支持prometheus
  prometheus作为一个时间序列数据收集,处理,存储的服务,能够监控的对象必须直接或间接提供prometheus认可的数据模型,通过http api的形式暴露出来。我们知道cAdvisor支持prometheus,同样,包含了cAdivisor的kubelet也支持prometheus。每个节点都暴露了供prometheus调用的api。

prometheus支持k8s
  prometheus获取监控端点的方式有很多,其中就包括k8s,prometheu会通过调用master的apiserver获取到节点信息,然后去调取每个节点的数据。

配置方式
  以下为一个简单的配置例子
  

global:  scrape_interval: 20s
  scrape_timeout: 10s
  evaluation_interval: 20s
  

  
scrape_configs:
  
- job_name: 'kubernetes-nodes-cadvisor'
  kubernetes_sd_configs:
  - api_server: 'http://<YOUR MASTER IP>:8080'
  role: node
  relabel_configs:
  - action: labelmap
  regex: __meta_kubernetes_node_label_(.+)
  - source_labels: [__meta_kubernetes_role]
  action: replace
  target_label: kubernetes_role
  #将默认10250端口改成10255端口
  - source_labels: [__address__]
  regex: '(.*):10250'
  replacement: '${1}:10255'
  target_label: __address__
  
#以下是监控每个宿主机,需要安装node-exporter
  
- job_name: 'kubernetes_node'
  kubernetes_sd_configs:
  - role: node
  api_server: 'http://172.16.100.101:8080'
  relabel_configs:
  - source_labels: [__address__]
  regex: '(.*):10250'
  replacement: '${1}:9100'
  target_label: __address__
  


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  以上为prometheus的配置,如上配置会监控每个节点的容器信息和节点监控信息。需要在k8s中部署node-exporter pod,yaml文件如下:
  

apiVersion: v1  
kind: Service
  
metadata:
  annotations:
  prometheus.io/scrape: 'true'
  labels:
  app: node-exporter
  name: node-exporter
  name: node-exporter
  
spec:
  clusterIP: None
  ports:
  - name: scrape
  port: 9100
  protocol: TCP
  selector:
  app: node-exporter
  type: ClusterIP
  

  
apiVersion: extensions/v1beta1
  
kind: DaemonSet
  
metadata:
  name: node-exporter
  
spec:
  template:
  metadata:
  labels:
  app: node-exporter
  name: node-exporter
  spec:
  containers:
  - image: prom/node-exporter
  name: node-exporter
  ports:
  - containerPort: 9100
  hostPort: 9100
  name: scrape
  hostNetwork: true
  hostPID: true
  


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  node-exporter启动成功后,启动prometheus即可监控到集群的宿主机和容器状态信息。监控端点如下图:


进阶
  不仅监控容器状态,经过k8s,prometheus可以获取到部署到集群中的所有服务。如果是一个exporter服务,依然可以被prometheus收集。prometheus配置文件中
  

- role: node  


  • 1


  • 1
  role支持:node,pod,service,endpoints
  具体的效果你自己去尝试吧。。
  本文来自:一云博客:基于prometheus监控k8s集群

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表