运维别卷系列 - 云原生监控平台 之 02.prometheus exporter 实践

news2024/11/18 5:55:31

文章目录

    • @[toc]
    • exporter 简介
    • 常用的 exporter
    • node-exporter 实践
      • 创建 svc
      • 创建 daemonset
      • prometheus 配置服务发现

exporter 简介

随着 Prometheus 的流行,很多系统都已经自带了用于 Prometheus 监控的接口,例如 etcd、Kubernetes、CoreDNS 等,所以这些系统可以直接被 Prometheus 所监控。

但是,有很多应用目前还没有提供用于 Prometheus 监控的接口(一些出现的比 Prometheus 还要早的应用),针对这这类应用,Prometheus 提出了 Exporter 的解决方案。

Exporter 是需要独立部署的服务

Exporter 是 Prometheus 的指标数据收集组件。它负责从目标 Jobs 收集数据,并把收集到的数据转换为 Prometheus 支持的时序数据格式。和传统的指标数据收集组件不同的是,他只负责收集,并不向 Server 端发送数据,而是等待 Prometheus Server 主动抓取

常用的 exporter

EXPORTERS AND INTEGRATIONS

  • Elasticsearch exporter
  • MySQL server exporter
  • Kafka exporter
  • Gluster exporter
  • Ceph exporter
  • Node/system metrics exporter
  • Blackbox exporter
  • kube-state-metrics
  • cAdvisor

node-exporter 实践

  • node-exporter 用于采集类 *NIX 内核的硬件以及系统指标
  • windows exporter 用于采集 windows 系统指标
  • dcgm-exporter 用于采集 NVIDIA GPU 指标
  • 同 Prometheus,这里的 node-exporter 也是在 k8s 内部署的,部署的 node-exporter 版本是 v1.8.0

创建 svc

---
apiVersion: v1
kind: Service
metadata:
  annotations:
  labels:
    app: node-exporter
  name: node-exporter-svc
  namespace: monitor
spec:
  clusterIP: None
  ports:
  - name: http
    port: 9100
    protocol: TCP
  selector:
    app: node-exporter
  type: ClusterIP

创建 daemonset

要采集每个机器的指标,所以采用 daemonset 的方式来部署,保证有新增节点的时候,会自动启动 node-exporter

---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  annotations:
  labels:
    app: node-exporter
  name: node-exporter
  namespace: monitor
spec:
  selector:
    matchLabels:
      app: node-exporter
  template:
    metadata:
      labels:
        app: node-exporter
      annotations:
        prometheus.io/port: "9100"
        prometheus.io/scrape: "true"
        prometheus.io/type: "node_exporter"
    spec:
      hostNetwork: true
      hostPID: true
      hostIPC: true
      containers:
      - name: node-exporter
        image: prom/node-exporter:v1.8.0
        args:
        - "--path.rootfs=/rootfs"
        ports:
        - containerPort: 9100
          hostPort: 9100
          name: http
        volumeMounts:
        - mountPath: /rootfs
          name: root
      volumes:
      - hostPath:
          path: /
        name: root

prometheus 配置服务发现

因为之前的 prometheus 配置文件只简单的配置了 prometheus 自身的 target,现在要增加一个关于 kubernetes 的服务发现,这样,如果后面有新增节点,也会被加入到 promethus 内

kubernetes_sd_config

global:
  scrape_interval: 30s
  evaluation_interval: 30s
  scrape_timeout: 10s
  external_labels:
    prometheus: monitor/k8s
rule_files:
- /etc/prometheus/rules/*.yml
scrape_configs:
- job_name: prometheus
  metrics_path: '/metrics'
  static_configs:
  - targets: ['prometheus-svc.monitor.svc.cluster.local:9090']

- job_name: 'kubernetes-pods'
  kubernetes_sd_configs:
  - role: pod
  relabel_configs:
  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
    action: keep
    regex: true
  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
    action: replace
    target_label: __metrics_path__
    regex: (.+)
  - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
    action: replace
    regex: ([^:]+)(?::\d+)?;(\d+)
    replacement: $1:$2
    target_label: __address__
  - action: labelmap
    regex: __meta_kubernetes_pod_label_(.+)
  - source_labels: [__meta_kubernetes_namespace]
    action: replace
    target_label: kubernetes_namespace
  - source_labels: [__meta_kubernetes_pod_name]
    action: replace
    target_label: kubernetes_pod_name

使用 reload 来刷新 prometheus 配置,下面的 ip 和端口要换成自己环境的

curl -XPOST http://192.168.11.167:31090/-/reload

再次查看 prometheus 的页面,可以发现 target 里面增加了每个节点的 node-exporter 了

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1675999.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果电脑卡顿反应慢怎么办 苹果电脑卡顿严重解决方法 mac电脑太卡了怎么办

作为Mac用户,你是否正在经历或者曾经遭遇过电脑卡顿、反应慢的困扰?这可能是由于多种原因导致的,包括自启动程序过多、系统与应用未及时更新、内存管理不当等。今天和你一起来探讨下,苹果电脑卡顿反应慢时怎么办。希望能够帮助你解…

记一次跨域问题

线上跨域问题,在自己配置确认没问题下,要及时找运维看看是不是nginx配置问题。 两个方面: 项目代码 nginx配置 SpringBoot 解决跨域问题的 5 种方案! SpringBoot解决CORS跨域问题 SpringBoot-实现CORS跨域原理及解决方案

JVM 自定义类加载器

文章目录 1. 为什么要自定义类加载器1.1 隔离加载类1.2 修改类加载的方式1.3 扩展加载源1.4 防止源码泄漏 2. 自定义类加载器应用场景有哪些3. 两种实现方式 自定义类加载器是Java中的一个高级特性,允许您在运行时动态加载类。通过自定义类加载器,您可以…

windows无法启动硬件设备,代码(19)解决办法

遇到一台电脑,摄像头无法使用,查看设备管理器看到设备名前出现感叹号,双击打开看到“由于其配置信息(注册表中的)不完整或已损坏,windows无法启动硬件设备,代码(19)”错误…

测试 vs2019 c++ 在 32 位系统和 64 位系统里的 sizeof ( void * )

再看下反汇编: 接着给出 32 位系统的结果: 谢谢阅读

voceChat - 支持独立部署的个人云社交媒体聊天服务(使用场景及体验分享)

序言 在工作室的发展中,我们急需一个更加简单便捷,高效,适用于团队内部交流的组织平台。起因是我们团队一直是直接使用QQ进行活动,发现QQ很多功能不是很方便并且过于臃肿,越来越不契合工作室的生产环境,于…

Power query与Excel的区别,优势?

Power Query是Microsoft Excel的一个强大数据导入、转换和自动化的插件工具,它在Excel 2010之后的版本中被发布出来,随着时间的发展,功能不断增强。 以下是Power Query的一些优势以及它与Excel传统数据处理方式的区别和一些令人印象深刻的功…

网络完全精通版

一、目录结构 1.1目的的特点 windows和linux windows中C、D、E盘,每个都是一个根系统【多跟系统】 linux中只有一个根【单根系统】 1.2各个目录存储的内容 /root:linux中挂管理员用户的家目录 /home:linux中挂存储普通用户的家目录的目…

RS422一主多从MAX3490

RS422一主多从MAX3490 最近项目用到了RS422一主多从,一个主机4个从机。芯片用的MAX3490,几经折腾,最终只能从一拖4改为一拖2。 主机发送端,从机4个接收端都是正常的,没有问题。波形非常完美,没有太大变形 …

el-table组件选中后使用toggleRowSelection无法取消已选中的数据——bug记录-骚操作解决

先说本文重点解决的问题: 存在的问题:当右侧已选中的数据中,删除了左侧其他页面的数据,但是左侧数据切换到其他页面后,左侧还保留选中的状态。 最近在写后台管理系统的时候,遇到一个需求: 左…

纯电动汽车的发展趋势简述

纯电车简介 纯电动汽车是使用电池驱动电动马达而不是传统的内燃机的汽车。它们通常使用电池组储存能量,然后通过电动马达转化为动力来驱动车辆。相比于传统的燃油车,纯电动汽车具有零排放、低噪音、低维护成本等优点,因此在环保和能源效率方…

【知识拓展】大白话说清楚:IP地址、子网掩码、网关、DNS等

前言 工作中常听别人说的本地网络是什么意思?同一网段又是什么意思?它俩有关系吗? 在工作中内经常会遇到相关的网络问题,涉及网络通信中一些常见的词汇,如IP地址、子网掩码、网关和DNS等。具体一点:经常会…

YOLO数据集制作(二)|json文件转txt验证

以下教程用于验证转成YOLO使用的txt格式,适用场景:矩形框,配合json格式文件转成YOLO使用的txt格式脚本使用。 https://blog.csdn.net/StopAndGoyyy/article/details/138681454 使用方式:将img_path和label_path分别填入对应的图…

分布式光伏监控系统功能模块详解

目前,分布式光伏发电系统的总容量比较小,并且光伏电站的功率受外界环境影响容易出现大起大落的现象。这使电压调整变得很困难。光伏电站运行维护人员不足,长时间不保养维护会影响光伏电站的发电效率。针对上述问题,鹧鸪云基于无线…

pip镜像源

1.1 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple 1.2 阿里云 https://mirrors.aliyun.com/pypi/simple/ 1.3 网易 https://mirrors.163.com/pypi/simple/ 1.4 豆瓣 https://pypi.douban.com/simple/ 1.5 百度云 https://mirror.baidu.com/pypi/simple/ 1.6 中科大 ht…

LLM Agent智能体综述(超详细)

前言 🏆🏆🏆在上一篇文章中,我们介绍了如何部署MetaGPT到本地,获取OpenAI API Key并配置其开发环境,并通过一个开发小组的多Agent案例感受了智能体的强大,在本文中,我们将对AI Agent…

Java获取请求参数

1.简单参数接收 前端请求参数与Controller接受变量名一致 如果参数名不一致,接受不成功。 可以用RequestParam指定参数名,可以用username接收(不推荐)。 required true,表示参数必须传递,如果不传递会报错…

c#多态性的应用

设计一个电脑游戏,游戏中有猪、牛、兔子、青蛙、鸭子等动物,这些动 物都继承于Vertebrata 类(脊椎动物类),Vertebrata类有一个抽象方法Display(),每个动 物都从Vertebrata 类那里继承并重写了Display()方法…

upload-labs靶场通关详解(1-15)

1.pass-01 查看源代码 是js,属于前端校验 可以通过禁用js来上传文件 2.pass-02 根据提示是MIME绕过 MIME:是设定某种扩展名的文件 用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来…

基于springboot+vue+Mysql的在线BLOG网

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…