首页 > 其他分享 >Prometheus 监控

Prometheus 监控

时间:2023-06-13 15:36:52浏览次数:39  
标签:kubernetes Kubernetes state metrics Prometheus 监控 kube

Prometheus最开始设计是一个面向云原生应用程序的开源的监控&报警工具,在对 Kubernetes服务发现协议分析之前,我们先来梳理下 Prometheus 如何接入云原生,实现对 Kubernetes 集群进行监控。

Kubernetes 云原生集群监控主要涉及到如下三类指标:node 物理节点指标、pod & container 容器资源指标和Kubernetes 云原生集群资源指标。针对这三类指标都有比较成熟的方案,见下图:

 

除了kube-state-metrics,node-exporter、cadvisor之外还有k8s集群的监控 kubernetes_sd_config ,至此四大组件已经完成

 

kubernetes_sd_config 是一种用于 Prometheus 目标发现的机制,是其中一种服务发现方式。它提供了与 Kubernetes 集成的能力,通过自动发现 Kubernetes 上运行的 Pod、Service、Node 等对象,并将其挂载到 Prometheus 的目标列表中,从而方便 Prometheus 进行采集和监控。

Prometheus 是一种流行的开源监控和告警工具,它可以对各种数据源进行采集和处理,并支持使用自定义的查询语言进行复杂指标的计算和分析。为了实现对 Kubernetes 集群的监控,需要使用 kubernetes_sd_config 去指导 Prometheus 进行目标发现。kubernetes_sd_config 可以通过配置 Kubernetes API 访问参数,从 Kubernetes 中获取对象元数据,然后结合特定的标签筛选规则过滤出符合要求的 targets,并将它们加入 Prometheus 的监控列表中。

通过 kubernetes_sd_config,可以轻松实现对 Kubernetes 集群各组件(如 API server、etcd、kubelet、kube-proxy 等)以及应用程序的监控,同时支持动态扩展和灵活配置。当有新的 Kubernetes 对象添加到集群中时,kubernetes_sd_config 会自动检测并将其加入到 Prometheus 的监控列表中,无需手动添加或修改配置文件,极大地减轻了管理员的工作负担。

 

这里举一个实际场景的例子,以帮助更好地理解 kubernetes_sd_config 和 kube-state-metrics 的应用。

假设有一个基于 Kubernetes 集群部署的微服务应用程序,由多个 Pod、Service、Deployment 和 ReplicaSet 等对象组成。为了对该应用程序进行监控和性能评估,可以使用 Prometheus、Grafana 和 Alertmanager 等工具来搭建完整的监控和告警系统。

在该环境中,kubernetes_sd_config 可以用于自动发现和监控 Kubernetes 的各个组件,如 API server、etcd、kubelet、kube-proxy 等。通过 kubernetes_sd_config 配置文件中定义的筛选规则,将符合条件的 targets 聚合到一个或多个 job 中,并为其绑定适当的 metrics 和 labels。

举例而言,我们可以使用以下配置文件(prometheus.yml)来定义一组监控目标:

Copy Code
scrape_configs:
- job_name: 'kubernetes-nodes'
  kubernetes_sd_configs:
  - api_server: null
    role: node
  relabel_configs:
  - source_labels: [__meta_kubernetes_node_label_kubelet_ready]
    action: keep
    regex: true
- job_name: 'kubernetes-pods'
  kubernetes_sd_configs:
  - api_server: null
    role: pod
  relabel_configs:
  - source_labels: [__meta_kubernetes_pod_label_app]
    action: replace
    target_label: app

这个配置文件定义了两个 jobs,一个是监控 Kubernetes 集群中的 Node,另一个是监控 Pod。其中,kubernetes_sd_configs 部分指定了从 Kubernetes API 中发现 Node 和 Pod 的方式,relabel_configs 部分则定义了 labels 和 metrics 的映射关系。

而 kube-state-metrics 则可以用于自动发现和监控所有对象的状态指标,比如各个 Pod、Service、Deployment 和 ReplicaSet 的运行状态、健康状态、副本数、重启次数等。可以使用以下 manifest 文件来部署 kube-state-metrics:

Copy Code
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kube-state-metrics
  namespace: kube-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kube-state-metrics
  template:
    metadata:
      labels:
        app: kube-state-metrics
    spec:
      containers:
      - name: kube-state-metrics
        image: quay.io/coreos/kube-state-metrics:v2.2.0
        ports:
        - containerPort: 8080
        args:
        - --metric-resolution=30s

这个部署文件定义了一个名为 kube-state-metrics 的 Deployment,并将它部署到 Kubernetes 集群的 kube-system 命名空间中。kube-state-metrics 容器的镜像是 quay.io/coreos/kube-state-metrics:v2.2.0,使用的端口号为 8080。args 部分则是指定了 kube-state-metrics 的参数,这里设置了 metric-resolution 参数为 30s,表示每 30 秒更新一次指标数据。

在完成 kubernetes_sd_config 和 kube-state-metrics 的配置和部署后,我们就可以使用 Prometheus 来采集和存储所有对象的监控数据,并通过 Grafana 实现可视化和展示。Alertmanager 则可以用于基于阈值或规则进行告警和通知,帮助管理员快速发现并解决异常情况。

 

 

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back     此页面的语言为中文(简体)   翻译为        
  • 中文(简体)
  • 中文(繁体)
  • 丹麦语
  • 乌克兰语
  • 乌尔都语
  • 亚美尼亚语
  • 俄语
  • 保加利亚语
  • 克罗地亚语
  • 冰岛语
  • 加泰罗尼亚语
  • 匈牙利语
  • 卡纳达语
  • 印地语
  • 印尼语
  • 古吉拉特语
  • 哈萨克语
  • 土耳其语
  • 威尔士语
  • 孟加拉语
  • 尼泊尔语
  • 布尔语(南非荷兰语)
  • 希伯来语
  • 希腊语
  • 库尔德语
  • 德语
  • 意大利语
  • 拉脱维亚语
  • 挪威语
  • 捷克语
  • 斯洛伐克语
  • 斯洛文尼亚语
  • 旁遮普语
  • 日语
  • 普什图语
  • 毛利语
  • 法语
  • 波兰语
  • 波斯语
  • 泰卢固语
  • 泰米尔语
  • 泰语
  • 海地克里奥尔语
  • 爱沙尼亚语
  • 瑞典语
  • 立陶宛语
  • 缅甸语
  • 罗马尼亚语
  • 老挝语
  • 芬兰语
  • 英语
  • 荷兰语
  • 萨摩亚语
  • 葡萄牙语
  • 西班牙语
  • 越南语
  • 阿塞拜疆语
  • 阿姆哈拉语
  • 阿尔巴尼亚语
  • 阿拉伯语
  • 韩语
  • 马尔加什语
  • 马拉地语
  • 马拉雅拉姆语
  • 马来语
  • 马耳他语
  • 高棉语
 

标签:kubernetes,Kubernetes,state,metrics,Prometheus,监控,kube
From: https://www.cnblogs.com/gaoyuechen/p/17477641.html

相关文章

  • Redis服务的集中监控
    一:redmon的安装和使用1:安装rvm,rvm是rubyversionmanager的缩写,ruby语言是鬼子弄出来的,虽然不是程序员,我也一直不待见,真心觉得难用!#bash<<(curl-shttps://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)#echo'[[-s"$HOME/.rvm/scripts/rvm"]]&&......
  • kafka 监控系列kafka manager
    Kafka在雅虎内部被很多团队使用,媒体团队用它做实时分析流水线,可以处理高达20Gbps(压缩数据)的峰值带宽。为了简化开发者和服务工程师维护Kafka集群的工作,构建了一个叫做Kafka管理器的基于Web工具,叫做KafkaManager。这个管理工具可以很容易地发现分布在集群中的哪些topic分......
  • Apache Kafka监控之KafkaOffsetMonitor
    当你将Kafka集群部署之后,你可能需要知道当前消息队列的增长以及消费情况,这时候你就得需要监控它。今天我这里推荐两款Kafka开源的监控系统:KafkaOffsetMonitor和KafkaWebConsole。 KafkaOffsetMonitor是用来实时监控Kafka集群的consumers以及它们在partition中的offset(偏移量)......
  • zabbix监控mysql的QPS和TPS的python写法
    #!/usr/bin/envpython#coding=utf-8importsysimportosimportcommandsclassQpsTps(object):def__init__(self):self.QPS=''self.TPS=''defgetQps(self):(Queries,QPS_result)=commands.getsta......
  • 使用ganglia监控hadoop及hbase集群
    一、Ganglia简介Ganglia是UCBerkeley发起的一个开源监视项目,设计用于测量数以千计的节点。每台计算机都运行一个收集和发送度量数据(如处理器速度、内存使用量等)的名为gmond的守护进程。它将从操作系统和指定主机中收集。接收所有度量数据的主机可以显示这些数据并且可以将这......
  • zabbix监控多JMX端口
    1.开启Tomcat JMX功能CATALINA_OPTS="$CATALINA_OPTS-Dcom.sun.management.jmxremote-Djava.rmi.server.hostname=10.124.129.241-Dcom.sun.management.jmxremote.port=8889-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false&quo......
  • 基于PLC控制的压力转料泵如何数据采集到云平台进行监控?
    压力转料泵是用于向各个工作单元转移物料的设备,处理介质为含有固体颗粒的浆体,适用于电力、冶金、煤炭、建材、矿山开采等领域,是工业生产的重要设备。基于PLC控制的压力转料泵可以实现自动进料、加压、输送等流程,保证生产过程稳定供料,能够有效提高生产效率并降低生产成本。因此,通过......
  • zabbix--监控MySQL主从状态
    zabbix监控MySQL主从状态#搭建MySQL主从后,很多时候不知道从的状态是否ok,有时候出现异常不能及时知道,这里通过shell脚本结合zabbix实现监控并告警一般情况下,在MySQL的从上查看从的运行状态是通过Slave_IO_Running线程和Slave_SQL_Running线程是否ok,通过命令“showslavestatus\G......
  • zabbix--监控服务端口
    zabbix-agent端配置#✏️创建自动发现配置文件#vim/etc/zabbix/zabbix_agentd.d/userparameter_tcp_port.confUserParameter=discovery.tcp_port,/etc/zabbix/scripts/tcp_port_discovery.py✏️创建脚本存放目录#mkdir/etc/zabbix/scripts✏️编写脚本#vim/etc/zabbi......
  • zabbix监控华为服务器硬件状态
    简介zabbix监控华为服务器的硬件是通过iBMC,iBMC系统默认支持V3版本的SNMP服务,SNMPV1和SNMPV2C由于自身机制存在安全隐患,默认是不开启的。如果使用SNMPV1和SNMPV2C需要配置团体名,而用V3只需知道用户名密码及加密算法即可。我们可以现在zabbixserver上安装snmpwalk,然后进行如......