CPU使用率计算html
CPU在t1到t2时间段总的使用时间 = ( user2+ nice2+ system2+ idle2+ iowait2+ irq2+ softirq2) - ( user1+ nice1+ system1+ idle1+ iowait1+ irq1+ softirq1)
CPU在t1到t2时间段空闲使用时间 =(idle2 - idle1)
node
CPU在t1到t2时间段即时利用率 = 1 - CPU空闲使用时间 / CPU总的使用时间
linux
increase()
函数:解决counter类型的时间增量git
多核CPU计算github
sum()
结果求和web
idle
获取总的时间spring
单台机器的CPU总利用率shell
1-(sum(increase(node_cpu_seconds_total{instance="192.168.9.232:9100",mode="idle"}[1m]))/sum(increase(node_cpu_seconds_total{instance="192.168.9.232:9100"}[1m])))
by(instance): 区分不一样实例json
(1-( sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance) )) * 100
计算其余CPU状态时间的使用bash
iowait io等待时间
sum(increase(node_cpu_seconds_total{mode="iowait"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
irq 硬中断
sum(increase(node_cpu_seconds_total{mode="irq"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
soft irq 软中断
sum(increase(node_cpu_seconds_total{mode="softirq"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
steal 虚拟机的分片时间
sum(increase(node_cpu_seconds_total{mode="steal"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
nice 进程分配nice值的时间
sum(increase(node_cpu_seconds_total{mode="nice"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
idle空闲
sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
user用户态
sum(increase(node_cpu_seconds_total{mode="user"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
sytem内核态
sum(increase(node_cpu_seconds_total{mode="system"}[1m])) by(instance) / sum(increase(node_cpu_seconds_total{}[1m]) ) by(instance)
过滤
key{label=""}
key{label=~"web.*"}
key{.} > 400
函数
rate(.[5m])
搭配counter型数据, 按照设置的一个时间段,取counter
在这个时间段的增量的平均每秒
\(value = ∆S/∆t\)
increase(.[5m])
搭配counter
型数据,取一个时间段的增量
\(value=∆S\)
sum()
加和
by()
topk(x,key)
取最高前x位
graph
; 适用于console
查看count()
后台运行
> yum install -y kernel-devel > yum groupinstall -y Development tools > git clone https://github.com/bmc/daemonize.git > cd daemonize > ./configure && make && make install
启动prometheus
额外参数
0.0.0.0:9090
2m
10
90d
/data/prometheus/server/data
20
2m
存储结构
server/ └── data ├── 01DM9HP1PHHK2BD1MGC7J1C0YC │ ├── chunks │ │ └── 000001 │ ├── index │ ├── meta.json │ └── tombstones ├── 01DM9ZDG8QKWTPYZ86K7XW6FKZ │ ├── chunks │ │ └── 000001 │ ├── index │ ├── meta.json │ └── tombstones ├── 01DMAM0NM51YSQ4EVRRV46X2E1 │ ├── chunks │ │ └── 000001 │ ├── index │ ├── meta.json │ └── tombstones ├── 01DMAM0P4CGJWSSA15QPWJGZXF │ ├── chunks │ │ └── 000001 │ ├── index │ ├── meta.json │ └── tombstones ├── lock ├── queries.active └── wal ├── 00000011 ├── 00000012 ├── 00000013 ├── 00000014 ├── 00000015 ├── 00000016 ├── 00000017 ├── 00000018 └── checkpoint.000010 └── 00000000
近期数据保存在wal/
目录中,防止忽然断电或者重启,以用来恢复内存中的数据
global: scrape_interval: 5s #抓取频率 evaluation_interval: 1s alerting: alertmanagers: - static_configs: - targets: rule_files: scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: '233-node-exporter' static_configs: - targets: ['192.168.9.233:9100'] - job_name: '232-node-exporter' static_configs: - targets: ['192.168.9.232:9100'] - job_name: '239-node-exporter' static_configs: - targets: ['192.168.9.239:9200']
介绍
主动推送数据到prometheus server
能够单独运行在不一样节点上,并不要求是监控节点
自定义采集脚本发送到pushgateway
安装pushgeteway
prometheus配置job关联pushgateway
目标主机编写脚本采集数据
#!/bin/bash instance_name=instance_name label=label value=123 echo "$label $value" | curl --data-binary @- http://192.168.9.233:9091/metrics/job/test/instance/$instance_name
介绍
开源数据绘图工具
安装
添加prometheus
数据源
添加dashboard
创建Dashboard
图形配置
通用配置
告警配置
grafana 4.0
的新功能
((node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes)/node_memory_MemTotal_bytes)*100
(rate(node_disk_read_bytes_total[1m])+rate(node_disk_written_bytes_total[1m]))
网络监控
数据来源
bash脚本+pushgateway
脚本编写
采集内网流量ping延迟和丢包率
instance=`hostname -f` #外网联通 lostpk=`timeout 5 ping -q -A -s 500 -W 1000 -c 100 baidu.com | grep transmitted | awk '{print $6}'` #时间 rrt=`timeout 5 ping -q -A -s 500 -W 1000 -c 100 baidu.com | grep transmitted | awk '{print $10}'` # value只容许数值型 value_lostpk=${lostpk%%\%} value_rrt=${rrt%%ms} # 经过 pushgateway 发送给prometheus echo "lostpk_$instance : $value_lostpk" echo "lostpk_$instance $value_lostpk" | curl --data-binary @- http://192.168.9.233:9091/metrics/job/network-traffic/instance/$instance echo "rrt_$instance : $value_rrt" echo "rrt_$instance $value_rrt" | curl --data-binary @- http://192.168.9.233:9091/metrics/job/network-traffic/instance/$instance
定时执行
资料
定时执行步骤:
/etc/crontab
配置cron运行对应可执行脚本查看结果
lostpk
rrt