【Prometheus】k8s集群部署node-exporter

news/2024/5/18 23:41:18 标签: prometheus, kubernetes, 容器, node-exporter, 指标采集

目录

一、概述

1.1 prometheus简介

1.2 prometheus架构图

1.3 Exporter介绍

1.4 监控指标

1.5 参数定义

1.6 默认启用的参数

1.7 prometheus如何收集k8s/服务的–三种方式收集

二、安装node-exporter组件


【Prometheus】概念和工作原理介绍-CSDN博客

【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0-CSDN博客


一、概述


1.1 prometheus简介


Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。

文档地址:

prometheus官网文档地址:Overview | Prometheus

prometheus中文文档地址:第1节:Prometheus 简介 - Prometheus 中文文档

1.2 prometheus架构图


从上图可发现,Prometheus整个生态圈组成主要包括prometheus server,Exporter,pushgateway,alertmanager,grafana,Web ui界面,Prometheus server由三个部分组成,Retrieval,Storage,PromQL。

1.3 Exporter介绍


Exporter是Prometheus的指标数据收集组件。它负责从目标Jobs收集数据,并把收集到的数据转换为Prometheus支持的时序数据格式。 和传统的指标数据收集组件不同的是,他只负责收集,并不向Server端发送数据,而是等待Prometheus Server 主动抓取,node-exporter 默认的抓取url地址:http://ip:9100/metrics 。

因为环境原因,网络不可达的场景,Prometheus可以使用Pushgateway这个组件推送node-exporter的指标数据到远端Prometheus,node-exporter用于采集node的运行指标,包括node的cpu、load、filesystem、meminfo、network等基础监控指标,类似于zabbix监控系统的的zabbix-agent。node-exporter由Prometheus官方提供、维护,属于监控指标收集类UNIX内核操作系统的必备的exporter。

GitHub地址:GitHub - prometheus/node_exporter: Exporter for machine metrics。

1.4 监控指标


  • CPU
  • 内存
  • 硬盘
  • 网络流量
  • 文件描述符
  • 系统负载
  • 系统服务

1.5 参数定义


黑名单: 关闭某一项默认开启的采集项,使用--no-collector参数可指定不需要的模块,如果不指定,将使用默认配置。

白名单:关闭默认采集项而只开启某些采集,使用--collector.disable-defaults参数关闭默认采集项,使用--collector.<name>指定开启的采集项。

使用--collectors.enabled参数打开node_exporter默认的采集项。

部分参数默认关闭的原因是:

  • 太重
  • 太慢,超过Prometheus scrape_interval或scrape_timeout的长时间运行时间
  • 太多资源开销,主机资源需求过大

1.6 默认启用的参数


Name

Description

OS

arp

从/proc/net/ARP中显示ARP统计信息

Linux

bcache

显示/sys/fs/bcache/中的bcache统计信息。

Linux

bonding

显示Linux绑定接口的已配置和活动从属设备的数量。

LInux

boottime

显示从kern.boottime sysctl派生的系统启动时间

Darwin, Dragonfly, FreeBSD, NetBSD, OpenBSD, Solaris

conntrack

显示连接统计信息(如果没有/proc/sys/net/netfilter/present,则不执行任何操作)。

Linux

cpu

显示CPU统计信息

Darwin, Dragonfly, FreeBSD, Linux, Solaris

cpufreq

显示CPU频率统计信息

Linux, Solaris

diskstats

显示磁盘I/O统计信息。

Darwin, Linux, OpenBSD

edac

显示错误检测和更正统计信息。

Linux

entropy

显示可用熵。

Linux

exec

显示执行统计信息。

Dragonfly, FreeBSD

filefd

显示/proc/sys/fs/file-nr中的文件描述符统计信息。

Linux

filesystem

显示文件系统统计信息,如使用的磁盘空间。

Darwin, Dragonfly, FreeBSD, Linux, OpenBSD

hwmon

暴露/sys/class/hwmon/中的硬件监控和传感器数据。

Linux

infiniband

显示特定于InfiniBand和Intel OmniPath配置的网络统计信息。

Linux

ipvs

显示/proc/net/ip_vs中的IPVS状态和/proc/net/ip_vs_stats中的统计信息。

Linux

loadavg

显示平均负载。

Darwin, Dragonfly, FreeBSD, Linux, NetBSD, OpenBSD, Solaris

mdadm

在/proc/mdstat中显示有关设备的统计信息(如果不存在/proc/mdtat,则不执行任何操作)。

Linux

meminfo

显示内存统计信息。

Darwin, Dragonfly, FreeBSD, Linux, OpenBSD

netclass

显示/sys/class/net中的网络接口信息/

Linux

netdev

显示网络接口统计信息,如传输的字节数。

Darwin, Dragonfly, FreeBSD, Linux, OpenBSD

netstat

从/proc/net/netstat中显示网络统计信息。这是与netstat-s相同的信息。

Linux

nfs

从/proc/net/rpc/NFS中显示NFS客户端统计信息。这是与nfsstat-c相同的信息。

Linux

nfsd

从/proc/net/rpc/nfsd中显示NFS内核服务器统计信息。这与nfsstat-s的信息相同。

Linux

pressure

显示/proc/pressure/中的压力失速统计信息。

Linux (kernel 4.20+ and/or CONFIG_PSI)

rapl

显示/sys/class/powercap中的各种统计信息。

Linux

schedstat

显示/proc/schedstat中的任务调度程序统计信息。

Linux

sockstat

显示/proc/net/sockstat中的各种统计信息。

Linux

softnet

显示/proc/net/softnet_stat中的统计信息

Linux

stat

显示/proc/stat中的各种统计信息。这包括启动时间、分叉和中断。

Linux

textfile

显示从本地磁盘读取的统计信息。必须设置--collector.textfile.directory标志。

any

thermal_zone

显示/sys/class/thermal中的热区和冷却设备统计信息。

Linux

time

显示当前系统时间。

any

timex

显示选定的adjtimex(2)系统调用统计信息

Linux

udp_queues

显示/proc/net/UDP和/proc/net/udp6中rx_queue和tx_queue的UDP总长度。

Linux

uname

显示uname系统调用提供的系统信息。

Linux

vmstat

显示/proc/vmstat中的统计信息。

Linux

xfs

显示XFS运行时统计信息。

Linux (kernel 4.4+)

zfs

显示ZFS性能统计信息。

Linux, Solaris

1.7 prometheus如何收集k8s/服务的–三种方式收集


  • Exporters(指标暴露器):收集节点的信息、将数据格式化或转化为 promtheus 可识别的http这种转化方式/镜像拉取方式
  • Instrumentation (应用内置的指标暴露器): 收集有内置指标暴露器的信息
  • Pushgateway : 收集短周期的数据

二、安装node-exporter组件


机器规划:

IP

主机名

192.168.40.130

k8s-master1

192.168.40.131

k8s-node1

192.168.40.132

k8s-node2

安装node-exporter组件,node-export.yaml

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-exporter
  namespace: monitor-sa
  labels:
    name: node-exporter
spec:
  selector:
    matchLabels:
     name: node-exporter
  template:
    metadata:
      labels:
        name: node-exporter
    spec:
      hostPID: true        # 使用主机的PID
      hostIPC: true        # 使用主机的IPC
      hostNetwork: true    # 使用主机的网络
      containers:
      - name: node-exporter
        image: prom/node-exporter:v0.16.0
        ports:
        - containerPort: 9100
        resources:
          requests:
            cpu: 0.15
        securityContext:
          privileged: true
        args:
        - --path.procfs
        - /host/proc
        - --path.sysfs
        - /host/sys
        - --collector.filesystem.ignored-mount-points
        - '"^/(sys|proc|dev|host|etc)($|/)"'
        volumeMounts:
        - name: dev
          mountPath: /host/dev
        - name: proc
          mountPath: /host/proc
        - name: sys
          mountPath: /host/sys
        - name: rootfs
          mountPath: /rootfs
      tolerations:
      - key: "node-role.kubernetes.io/master"
        operator: "Exists"
        effect: "NoSchedule"
      volumes:
        - name: proc
          hostPath:
            path: /proc
        - name: dev
          hostPath:
            path: /dev
        - name: sys
          hostPath:
            path: /sys
        - name: rootfs
          hostPath:
            path: /

在k8s集群的master1节点操作

kubectl create ns monitor-sa
kubectl apply -f node-export.yaml
kubectl get pods -n monitor-sa

查看创建的node-exporter

浏览器访问:

命令行查看服务器负载指标采集


参考文章:

Prometheus监控实战之node_exporter详解_node-exporter-CSDN博客

Prometheus监控实战之node_exporter详解_node-exporter-CSDN博客


http://www.niftyadmin.cn/n/5420348.html

相关文章

010Editor汉化版+下载+注册码+模板bug

项目场景&#xff1a; 这天我想使用我的不知名的一个破解版本的010Edit来查看一个EXE程序&#xff0c;并想使用模板功能&#xff0c;但是发现没有该模板还无法下载最新模板 问题描述 010Edit联网后需要注册码&#xff1a; 010 Editor 激活码生成器 使用方法 参照教程使用0…

SSM框架,MyBatis-Plus的学习(下)

条件构造器 使用MyBatis-Plus的条件构造器&#xff0c;可以构建灵活高效的查询条件&#xff0c;可以通过链式调用来组合多个条件。 条件构造器的继承结构 Wrapper &#xff1a; 条件构造抽象类&#xff0c;最顶端父类 AbstractWrapper &#xff1a; 用于查询条件封装&#xf…

【Golang星辰图】Go语言之光照耀数据科学:揭开强大库的神秘面纱

Go语言赋能数据科学&#xff1a;探索多样化工具的无限可能 前言 在数据科学和分析领域&#xff0c;使用合适的工具和库对数据进行处理、分析和建模至关重要。本文将介绍一系列功能强大的Go语言库&#xff0c;涵盖了特征值分解、矩阵运算、深度学习、机器学习以及统计分析等方…

SSM整合项目(Vue3环境搭建)

SSM整合项目&#xff08;Vue3环境搭建&#xff09; 1.下载node.js 1.卸载原来的node.js 2.检测是否卸载成功 3.下载node.js&#xff08;10.16.3&#xff09; 一路next就可以 4.检测是否安装成功 2.全局安装Vue插件cli 命令行输入 npm install -g vue/cli 3.新建Vue项目 1.…

Rust 语言的 println! 宏的格式占位符

一、占位符 println! 宏的占位符主要基于 Rust 的格式化语法&#xff0c;它支持多种占位符格式来插入和格式化不同的值。除了 {} 和 {:?} 之外&#xff0c;还有其他几种形式&#xff1a; 基本占位符 {}&#xff1a;用于插入任何实现了 Display trait 的类型的值。 调试占位符…

【机器学习】神经网络 | 神经网络基础知识全梳理,神经网络组成,优化及其常见的神经网络

文章目录 1 神经网络组成2 神经网络的优化2.1 反向传播算法 BP算法2.2 梯度下降算法2.3 训练中可能会遇到的问题2.3.1 如何避免过拟合&#xff1f;2.3.2 如何避免到局部最小&#xff1f;2.3.3如何避免梯度消失和梯度爆炸 &#xff1f; 3 常见的一些神经网络3.1 感知机&#xff…

VR全景数字工厂,制造业企业线上营销新助手

VR全景技术逐渐渗透到各行各业&#xff0c;其中&#xff0c;很多实体工厂的线上营销宣传也借助720云VR全景技术也迎来了新的变革。 一、VR全景技术的独特魅力 VR全景技术是一种基于虚拟现实技术的全新视觉呈现方式&#xff0c;能够为用户带来身临其境的沉浸式体验。通过VR全景…

电子电气架构——车载电子电气系统

电子电气架构——车载电子电气系统 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 没有人关注你。也无需有人关注你。你必须承认自己的价值&#xff0c…