• docker部署Prometheus+Cadvisor+Grafana实现服务器监控


    一:Prometheus

    1:介绍:

    Prometheus是一个在SoundCloud上构建的开源系统监视和警报工具包

    2:特点

    • 多维度数据模型-由指标键值对标识的时间序列数据组成;
    • PromQL,一种灵活的查询语言;
    • 不依赖分布式存储; 单个服务器节点是自治的;
    • 以HTTP方式,通过pull模型拉取时间序列数据;
    • 支持通过中间网关推送时间序列数据;
    • 通过服务发现或者静态配置,来发现目标服务对象;
    • 支持多种多样的图表和界面展示。

    3:docker部署Prometheus

    (1)拉取Prometheus
    docker pull prom/prometheus
    (2)配置Prometheus

    新建一个prometheus.yml

    1. global:
    2. # 每15s获取一次数据指标
    3. scrape_interval: 15s
    4. # 获取数据超时时长 10s
    5. scrape_timeout: 10s
    6. # 规则评估评率,即计算指标是否有触发规则的计算频率
    7. evaluation_interval: 15s
    8. # 规则文件,从所有匹配的文件中读取规则和警报
    9. rule_files:
    10. - "alert_rules.yml"
    11. # 采集配置列表
    12. scrape_configs:
    13. - job_name: prometheus
    14. static_configs:
    15. - targets: ['localhost:9090']
    16. - job_name: 'node'
    17. scrape_interval: 8s
    18. static_configs:
    19. - targets: ['node-exporter:9100']
    20. - job_name: 'cadvisor'
    21. static_configs:
    22. - targets: ['cadvisor:8080']

    新建一个规则文件alert_rules.yml

    1. groups:
    2. - name: targets
    3. rules:
    4. - alert: monitor_service_down
    5. expr: up == 0
    6. for: 30s
    7. labels:
    8. severity: critical
    9. annotations:
    10. summary: "Monitor service non-operational"
    11. description: "Service {{ $labels.instance }} is down."
    12. - name: host
    13. rules:
    14. - alert: high_cpu_load
    15. expr: node_load1 > 1.5
    16. for: 30s
    17. labels:
    18. severity: warning
    19. annotations:
    20. summary: "Server under high load"
    21. description: "Docker host is under high load, the avg load 1m is at {{ $value}}. Reported by instance {{ $labels.instance }} of job {{ $labels.job }}."
    22. - alert: high_memory_load
    23. expr: (sum(node_memory_MemTotal_bytes) - sum(node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes) ) / sum(node_memory_MemTotal_bytes) * 100 > 85
    24. for: 30s
    25. labels:
    26. severity: warning
    27. annotations:
    28. summary: "Server memory is almost full"
    29. description: "Docker host memory usage is {{ humanize $value}}%. Reported by instance {{ $labels.instance }} of job {{ $labels.job }}."
    30. - alert: high_storage_load
    31. expr: (node_filesystem_size_bytes{fstype="aufs"} - node_filesystem_free_bytes{fstype="aufs"}) / node_filesystem_size_bytes{fstype="aufs"} * 100 > 85
    32. for: 30s
    33. labels:
    34. severity: warning
    35. annotations:
    36. summary: "Server storage is almost full"
    37. description: "Docker host storage usage is {{ humanize $value}}%. Reported by instance {{ $labels.instance }} of job {{ $labels.job }}."
    (3)运行Prometheus
    docker run -d --name=prometheus -p 9090:9090 -v ./prometheus[创建的配置文件目录]:/etc/prometheus -v ./opt/data/prometheus[prometheus数据需要存储的地址]:/prometheus prom/prometheus
    (4)访问Prometheus

    访问127.0.0.1:9090如下表示安装成功

    二:Cadvisor

    1:介绍

     Cadvisor 是Google用来监测单节点资源信息的监控工具。 Cadvisor 提供了基础查询界面和http接口,方便其他组件如Grafana 、Prometheus等进行数据抓取。Cadvisor 可以对Docker主机上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况等。Cadvisor 使用Go语言开发,利用Linux的Cgroups获取容器的资源使用信息。

    2:特点

    • 可以展示主机和容器两个层次的监控数据。
    • 可以展示历史变化数据。
    • 谷歌公司的开源产品。
    • 监控指标齐全。
    • 方便部署,有官方的docker镜像。
    • 默认只在本地保存1分钟数据,可以集成InfluxDB等第三方存储使用。

    3:docker部署Cadvisor

    (1)拉取Cadvisor
    docker pull google/cadvisor
    (2)运行Cadvisor
    docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest
    (3)访问Cadvisor

    访问127.0.0.1:8080如下表示安装成功

    三:Grafana

    1:介绍

    Grafana是一个可视化面板(Dashboard)工具,有着非常漂亮的图表和布局等展示功能,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB等组件作为数据源。

    2:特点

    • 灵活丰富的图形化选项;
    • 可以混合多种风格;
    • 支持白天和夜间模式;
    • 支持多个数据源;

    3:docker部署Grafana

    (1)拉取Grafana
    docker pull grafana/grafana
    (2)运行Grafana
    docker run -d --name=grafana -p 3000:3000 grafana/grafana
    (3)访问Grafana

    访问127.0.0.1:3000如下表示安装成功(默认账号密码都为admin)

    (4)Grafana配置

    1.添加Prometheus数据源 Connections -> Data sources -> Add new data source -> 选择Prometheus 设置Prometheus server URL 为http://prometheus:9090然后保存

    2.添加Dashboards仪表板 Dashboards -> import -> 导入仪表板 可用的仪表版模板:

    Node Exporter Dashboard 220417 通用Job分组版

    Docker monitoring with service selection

    3.设置首页默认仪表板 Administration -> Default preferences -> 选择Home Dashboard

    4.语言设置 用户头像 -> Profile -> 选择Language

    四:dockers部署Prometheus+Cadvisor+Grafana

    参考:https://download.csdn.net/download/huaweichenai/88537114

  • 相关阅读:
    14、Linux的权限管理
    【Spring Boot 集成应用】Spring Boot Admin的集成配置使用
    计算机毕业设计之java+ssm家校通网站
    如果集群状态是HEALTH_ERR 并且有pgs inconsistent,需要进行如下操作
    获取任意时间段内周、季度、半年的二级联动
    Java加载的class无法正常使用的问题
    基于node.js自动写入版本号解决前端vue或webpack项目因分包发版引起的报错问题
    竞赛 深度学习交通车辆流量分析 - 目标检测与跟踪 - python opencv
    [第五空间 2021]WebFTP
    东哥录了一些课程,你能想到应该都有了
  • 原文地址:https://blog.csdn.net/huaweichenai/article/details/134412845