本篇文章分析下Grafana 1860
使用的PromQL来加深下对PromQL语法的理解
docker-compose
docker-compose可以快速搭建实验环境.
- docker-compose.yaml
version: '3.2'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- 9090:9090
command:
- --config.file=/etc/prometheus/prometheus.yml
volumes:
- ./prom/prometheus.yml:/etc/prometheus/prometheus.yml:ro
grafana:
image: grafana/grafana-enterprise
ports:
- 3000:3000
node_exporter:
image: prom/node-exporter:latest
container_name: node_exporter
command:
- '--path.rootfs=/host'
network_mode: host
pid: host
restart: unless-stopped
volumes:
- '/:/host:ro,rslave'
node_exporter docker: https://github.com/prometheus/node_exporter.git
- /prom/prometheus.yml
scrape_configs:
- job_name: prom
scrape_interval: 5s
static_configs:
- targets:
- localhost:9090
- job_name: node_exporter
scrape_interval: 5s
static_configs:
- targets:
- 192.168.10.64:9100
运行下面命令启动:
docker-compose up -d
样例
可用内存百分比
100 - ((node_memory_MemAvailable_bytes{instance="$node",job="$job"} * 100) /
node_memory_MemTotal_bytes{instance="$node",job="$job"})
可用内存百分比= 可用内存/内存总量
node_memory_MemAvailable_bytes{instance="$node",job="$job"}
代表每个job每个node的可用内存,这里node
和job
都是变量,属于指标项里的标签。
prometheus可以看到标签项:
job
和node
属于graphna配置的变量:
可以在dashboard上通过下拉列表来切换:
CPU占比
每个实例cpu在system模式
sum by (instance)(rate(node_cpu_seconds_total{mode="system",instance="$node",job="$job"}
[$__rate_interval])) * 100
node_cpu_seconds_total
是一个Counter类型,rate(node_cpu_seconds_total{mode="system",instance="$node",job="$job"}[$__rate_interval])
代表$__rate_interval
时间内每秒cpu处于system调用的时间sum by (instance)
标签中仅包含实例instance
,也就是每个实例每秒system调用时长sum by (instance)(rate(node_cpu_seconds_total{mode="system",instance="$node",job="$job"}[$__rate_interval])) * 100
代表每个实例system调用百分比。
假如每秒system调用是100ms=0.1s的话,0.1*100=10%
, 即system调用占用10%的cpu.