目录
一、概述
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博客