当前位置: 首页 > news >正文

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

文章目录

    • @[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-exportername: node-exporter-svcnamespace: monitor
spec:clusterIP: Noneports:- name: httpport: 9100protocol: TCPselector:app: node-exportertype: ClusterIP

创建 daemonset

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

---
apiVersion: apps/v1
kind: DaemonSet
metadata:annotations:labels:app: node-exportername: node-exporternamespace: monitor
spec:selector:matchLabels:app: node-exportertemplate:metadata:labels:app: node-exporterannotations:prometheus.io/port: "9100"prometheus.io/scrape: "true"prometheus.io/type: "node_exporter"spec:hostNetwork: truehostPID: truehostIPC: truecontainers:- name: node-exporterimage: prom/node-exporter:v1.8.0args:- "--path.rootfs=/rootfs"ports:- containerPort: 9100hostPort: 9100name: httpvolumeMounts:- mountPath: /rootfsname: rootvolumes:- hostPath:path: /name: root

prometheus 配置服务发现

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

kubernetes_sd_config

global:scrape_interval: 30sevaluation_interval: 30sscrape_timeout: 10sexternal_labels:prometheus: monitor/k8s
rule_files:
- /etc/prometheus/rules/*.yml
scrape_configs:
- job_name: prometheusmetrics_path: '/metrics'static_configs:- targets: ['prometheus-svc.monitor.svc.cluster.local:9090']- job_name: 'kubernetes-pods'kubernetes_sd_configs:- role: podrelabel_configs:- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]action: keepregex: true- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]action: replacetarget_label: __metrics_path__regex: (.+)- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]action: replaceregex: ([^:]+)(?::\d+)?;(\d+)replacement: $1:$2target_label: __address__- action: labelmapregex: __meta_kubernetes_pod_label_(.+)- source_labels: [__meta_kubernetes_namespace]action: replacetarget_label: kubernetes_namespace- source_labels: [__meta_kubernetes_pod_name]action: replacetarget_label: kubernetes_pod_name

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

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

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

在这里插入图片描述

http://www.lryc.cn/news/349226.html

相关文章:

  • OSPF基本配置
  • HIVE大数据平台SQL优化分享
  • JS算法-十大排序算法(上)
  • c++编程(11)——string类的模拟实现
  • Python从0到POC编写--函数
  • 【教程】Linux/Jetson 安装X11VNC同步屏幕内容
  • 【LLM第五篇】名词解释:prompt
  • k8s v1.20二进制部署 部署 CNI 网络组件 部署 Calico
  • 在React中利用Postman测试代码获取数据
  • 嵌入式学习-通用定时器
  • 培训行业有哪些ai工具?
  • 7.STL中string的一些超常用函数 (附习题)
  • GPT搜索鸽了!改升级GPT-4
  • 数字绘画教学实训解决方案
  • C#之如何判断数据类型
  • 算法学习笔记(Tarjan)
  • 一台linux通过另一台linux访问互联网-TinyProxy
  • 探索数据结构:堆的具体实现与应用
  • 网络2--MAC地址,IP地址的理解
  • 类型的转换
  • memset函数
  • Java面向对象——多态
  • python 对矩阵与矩阵之间对应位置的元素,做softmax操作,代码实战
  • Angular前端项目在Apache httpd服务器上的部署
  • Oracle 更改数据文件位置的几种常用方式
  • 【opencv】图像畸变校正
  • Charger之二输入电压动态电源原理(VIN-DPM)
  • 【半夜学习MySQL】表结构的操作(含表的创建、修改、删除操作,及如何查看表结构)
  • 曲线救国:window 安装 docker
  • 番外篇 | 利用PyQt5+YOLOv5来搭建目标检测系统(附可视化界面+功能介绍+源代码)