• [k8s]容器化node-expolore(9100)+cadvisor(8080)+prometheus(9090) metric搜集,grafana展示


    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 /访问。
    
  • 相关阅读:
    Remote Desktop manager 连接后无法自动登录
    .net framework 源码调试 与 问题解决
    SQLSever--基础学习--创建登录用户&创建数据库用户&分配权限
    sql server 2008 数据库管理系统使用SQL语句创建登录用户步骤详解
    python 脚本备份mssql数据库并删除数据库
    python 脚本bak文件还原mssql数据库
    python3 爬虫利用Requests 实现下载进度条
    MySQL的四种事务隔离级别
    查看mysql的版本号
    haproxy 配置文件详解 之 backend
  • 原文地址:https://www.cnblogs.com/iiiiher/p/8252623.html
Copyright © 2020-2023  润新知