基于prometheus监控k8s集群

ilinux_one ilinux_one     2022-08-26     723

关键词:

本文建立在你已经会安装prometheus服务的基础之上,如果你还不会安装,请参考:prometheus多维度监控容器

如果你还没有安装库k8s集群,情参考: 从零开始搭建基于calico的kubenetes

前言

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

  1. heapster+influxDB

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

  2. heapster+hawkular

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

  3. 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集群

 

 

prometheus+grafan监控k8s集群详解(代码片段)

一,Prometheus概述1,什么是Prometheus?Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包,自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源... 查看详情

用于 k8s 多集群的 Prometheus

】用于k8s多集群的Prometheus【英文标题】:Prometheusfork8smulticlusters【发布时间】:2021-03-0305:18:32【问题描述】:我有3个Kubernetes集群(产品、测试、监控)。我是prometheus的新手,所以我通过helmchart在我的测试环境中安装它来测试它... 查看详情

kubernetes(k8s)之在集群环境部署prometheus(普罗米修斯监控)和集群的ui管理工具grafana(代码片段)

PrometheusPrometheus演示环境部署Prometheus和Grafana测试PrometheusPrometheus是一个开源系统监控和警报工具包。现在是一个独立的开源项目,独立于任何公司进行维护。Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,... 查看详情

kube-prometheus监控k8s集群外服务的两种方式(代码片段)

方式一:通过ServiceMonitor方式创建Service和ServiceMonitor文件名为external-node.yaml---apiVersion:v1kind:Servicemetadata:name:external-node-exporternamespace:monitoringlabels:app:external-node-exporterapp.kubernetes. 查看详情

基于victoriametrics的prometheus集群监控报警方案

VictoriaMetrics是一个不错的prometheus集群方案,同时也提供了比较全的周边工具,同时社区也很活跃,以下 是一个简单的集成,后续落地实施踩坑参考方案图主要是基于VictoriaMetrics提供的周边工具做的集成   参考说... 查看详情

基于victoriametrics的prometheus集群监控报警方案

VictoriaMetrics是一个不错的prometheus集群方案,同时也提供了比较全的周边工具,同时社区也很活跃,以下 是一个简单的集成,后续落地实施踩坑参考方案图主要是基于VictoriaMetrics提供的周边工具做的集成   参考说... 查看详情

搭建prometheus监控k8s服务(代码片段)

理论提示:在这里部署的prometheus,是使用的coreos提供的prometheus项目MetricsServer:是k8s集群资源使用情况的聚合器,收集数据给k8s集群内使用,如kubectl,hpa,scheduler等。PrometheusOperator:是一个系统检测和警报工具箱,... 查看详情

k8snetworkpolicylimitrange和resourcequota详解k8s运行zookeeper,mysql,jenkins集群k8s集群及应用监控prometheus(代码片段)

1.基于NetworkPolicy限制magedunamespace中的所有pod不能跨namespace访问(只能访问当前namespace中的所有pod)。#在default下创建2个deploy,centos7-default和nginx1-defaultroot@k8s-master1:~/20230328#vimcentos7-default.yamlapiVersion:apps/v1kind:Deploymentmetadata:labels:app:c... 查看详情

基于prometheus的监控

...能进行评估优化,所以其监控系统的建设显得尤为重要。Prometheus作为云原生时代最火的监控软件,很多大数据组件或原生或以第三方插件/exporter的形式对Prometheus做了支持。我使用的大数据平台是基于K8s运行的,有部署灵活管理... 查看详情

prometheus+grafana(代码片段)

一、Prometheus简介、容器监控的实现方对比虚拟机或者物理机来说比大的区别,比如容器在k8s环境中可以任意横向扩容与缩容,那么就需要监控服务能够自动对新创建的容器进行监控,当容器删除后又能够及时的从监控服务中删... 查看详情

k8s+prometheus+grafana的监控部署(代码片段)

...署k8s集群可以参考https://www.cnblogs.com/liugp/p/12115945.html二、Prometheus+Grafana的监控部署2.1、master/node节点环境部署在【master】可以进行安装部署安装git,并下载相关yaml文件https://gitee.com/liugpwwwroot/k8s-prometheus-grafana.git在【node】节点下... 查看详情

kubernetes集群全栈监控报警方案kube-prometheus(代码片段)

参考文档http://www.servicemesher.com/blog/prometheus-operator-manual/https://github.com/coreos/prometheus-operatorhttps://github.com/coreos/kube-prometheus背景环境kubernetes集群1.13版本,纯二进制版本打造,参考k8s1.13集群部署core 查看详情

kubernetes集群监控解决方案kube-prometheus-stack(prometheus-operator)helm安装(代码片段)

...理分享给小伙伴。博文内容为K8s集群通过helm方式创建kube-prometheus-stack监控平台教程折腾了一晚上,搞定了,一开始一直用prometheus-operator这个chart来装,报错各种找问题,后来才发现我的集群版本太高了,1.22的... 查看详情

kubernetes集群监控解决方案kube-prometheus-stack(prometheus-operator)helm安装(代码片段)

...理分享给小伙伴。博文内容为K8s集群通过helm方式创建kube-prometheus-stack监控平台教程折腾了一晚上,搞定了,一开始一直用prometheus-operator这个chart来装,报错各种找问题,后来才发现我的集群版本太高了,1.22的... 查看详情

在微服务架构下基于prometheus构建一体化监控平台的最佳实践

...书",获取后台回复“k8s”,可领取k8s资料随着Prometheus逐渐成为云原生时代的可观测事实标准,那么今天为大家带来在微服务架构下基于Prometheus构建一体化监控平台的最佳实践和一些相关的思考,内容主要包括... 查看详情

k8s的kafka监控(prometheus+grafana)

欢迎访问我的GitHub对于部署在K8S上的Kafka来说,Prometheus+Grafana是常用的监控方案,今天就来实战通过Prometheus+Grafana监控K8S环境的Kafka;准备工作今天聚焦的是Kafka监控,因此需要K8S、Helm、Kafka、Prometheus、Grafana等服务都已就绪,下... 查看详情

prometheus监控k8s(代码片段)

文章目录一、监控方案二、监控流程三、Kubernetes监控指标四、服务发现:五、使用Prometheus监控Kubernetes(1)部署前准备(2)采用daemonset方式部署node-exporter(3)部署Prometheus(4)部署grafana࿰ 查看详情

prometheus监控k8s(代码片段)

文章目录一、监控方案二、监控流程三、Kubernetes监控指标四、服务发现:五、使用Prometheus监控Kubernetes(1)部署前准备(2)采用daemonset方式部署node-exporter(3)部署Prometheus(4)部署grafana࿰ 查看详情