Prometheus 的核心,多维数据模型
传统监控工具统计数据方式
指标多
- 需求1,统计app1-3,的(总)内存,则定义3个指标
container.memory_usage_bytes.webapp* - 获取值
container.memory_usage_bytes.webapp1 - 定义指标,搜集app1
container.memory_usage_bytes.webapp2 - 定义指标,搜集app2
container.memory_usage_bytes.webapp3 - 定义指标,搜集app3
例如: Graphite函数
sum(container.memory_usage_bytes.webapp*)- 求app1-3总占内容
- 需求2: 对比一下某一组容器在生产环境和测试环境中对内存使用的不同
container.memory_usage_bytes.webapp1.test
container.memory_usage_bytes.webapp1.prod
Prometheus多维数据模型
定义多列,通过PromQL来组合数据,聚合能力超强悍.
比如对于前面 webapp1 的三条取样数据,转换成 Prometheus 多维数据将变成:
后面三列 container_name、image、env 就是数据的三个维度。
如果不同 env(prod、test、dev),不同 image(mycom/webapp:1.2、mycom/webapp:1.3)的容器,它们的内存使用数据中标注了这三个维度信息,那么将能满足很多业务需求,比如:
1.计算 webapp2 的平均内存使用情况
avg(container_memory_usage_bytes{container_name=“webapp2”})
2.计算运行 mycom/webapp:1.3 镜像的所有容器内存使用总量:
sum(container_memory_usage_bytes{image=“mycom/webapp:1.3”})
3.统计不同运行环境中 webapp 容器内存使用总量:
sum(container_memory_usage_bytes{container_name=~“webapp”}) by (env)
容器指标数据收集利器 cAdvisor
- 展示 Host 和容器两个层次的监控数据。
- 展示历史变化数据
- cAdvisor 的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。
- cAdvisor 定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据。
- 运行cadvisor搜集容器指标
docker run -v=/:/rootfs:ro -v=/var/run:/var/run:rw -v=/sys:/sys:ro -v=/dev/disk/:/dev/disk:ro -v=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor
访问: http://192.168.14.11:8080/metrics
其本质上也是一个容器的metric api对接代码集.
node-expolore(9100)+cadvisor(8080)+prometheus(9090) metric搜集,grafana展示
- 运行node-expolore容器监听9100
通过: http://192.168.14.11:9100/metrics可访问
docker run -d -p 9100:9100 -v "/proc:/host/proc" -v "/sys:/host/sys" -v "/:/rootfs" --net=host prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
- 运行cadvisor,监听8080
通过: http://192.168.14.11:8080/metrics可访问
docker run -v=/:/rootfs:ro -v=/var/run:/var/run:rw -v=/sys:/sys:ro -v=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach=true --name=cadvisor --net=host google/cadvisor:latest
- 运行prometheus
通过: http://192.168.14.11:9090/metrics可访问
docker run -d -p 9090:9090 -v /root/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus --net=host prom/prometheus
- 运行grafana容器
docker run -d -i -p 3000:3000 -e "GF_SERVER_ROOT_URL=http://192.168.14.11" -e "GF_SECURITY_ADMIN_PASSWORD=admin" --net=host grafana/grafana
添加数据源
https://grafana.com/dashboards?dataSource=prometheus&search=docker 有很多docker的dashboard
比如下载 Docker and system monitoring,得到一个 json 文件,然后点击 Grafana 左上角菜单 Dashboards -> Import。
得到如下效果图:
docker安装普罗
- 直接启动
docker run --name prometheus -d -p 9090:9090 quay.io/prometheus/prometheus
- 需要预置配置文件
docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml -v /tmp/prometheus-data:/prometheus-data prom/prometheus
- 访问
http://localhost:9090 /访问。
原文地址:https://www.cnblogs.com/iiiiher/p/8252623.html
时间: 2024-11-10 15:57:52