本文介绍Prometheus 监控及在k8s集群中使用node-exporter、prometheus、grafana对集群进行监控。实现原理类似ELK、EFK组合。node-exporter组件负责收集节点上的metrics监控数据,并将数据推送给prometheus, prometheus负责存储这些数据,grafana将这些数据通过网页以图形的形式展现给用户。
Prometheus 监控 k8s集群(介绍)
Prometheus 监控 k8s集群(配置监控自己)
Prometheus 监控 k8s集群(集群部署)
一、安装Prometheus Server
Prometheus基于Golang编写,编译后的软件包,不依赖于任何的第三方依赖。用户只需要下载对应平台的二进制包,解压并且添加基本的配置即可正常启动Prometheus Server。
1. 从二进制包安装
对于非Docker用户,可以从https://prometheus.io/download/找到最新版本的Prometheus Sevrer软件包:
export VERSION=2.10.0
# curl -LO https://github.com/prometheus/prometheus/releases/download/v2.10.0/prometheus-2.10.0.linux-amd64.tar.gz
解压,并将Prometheus相关的命令,添加到系统环境变量路径即可
# tar -xzf prometheus-${VERSION}.linux-amd64.tar.gz
# cd prometheus-${VERSION}.linux-amd64
解压后当前目录会包含默认的Prometheus配置文件promethes.yml
# cat promethes.yml
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
配置文件讲解(不修改)
scrape_interval:
抓取采样数据的 时间间隔, 默认 每15秒去被监控机上 采样一次,这个就是 prometheus的自定义数据采集频率了
evaluation_interval:
监控数据规则的评估频率
这个参数是prometheus多长时间 会进行一次 监控规则的评估
例: 假如 我们设置 当 内存使用量 > 70%时 发出报警 这么一条rule(规则) 那么prometheus 会默认 每15秒来执行一次这个规则 检查内存的情况
Alertmanager: