• 第十一课:容器监控和Prometheus介绍


    为什么要监控

    • 对系统不间断实时监控
    • 实时反馈系统当前状态
    • 抱枕该业务持续性运行

    监控什么

    监控分类 监控内容
    硬件监控 温度,硬件故障等
    系统监控 CPU,内存,硬盘,网卡流量,TCP状态,进程数
    应用监控 nginx,tomcat,php,mysql,redis等
    日志监控 系统日志,服务日志,访问日志,错误日志
    安全监控 WAF,敏感文件监控
    API监控 可用性,接口请求,响应时间
    业务监控 例如电商网站,每分钟产生多少订单,注册多少用户,多少活跃用户,推广活动效果等
    流量分析 根据流量获取用户相关型芯,例如用户地理位置,某页面访问状态,页面停留时间等

    Prometheus概述

    prometheus 是一个最初在soundcloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,prometheus于2016年加入云原生云计算基金会(CNCF),成为继kubernetes之后的第二个托管项目。

    https://prometheus.io
    https://github.com/prometheus

    prometheus特点:

    • 多维度数据模型,由度量名称和键值对标识的时间序列数据。
    • PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询。
    • 不依赖分布式存储,单个服务器节点可直接工作。
    • 基于HTTP的pull方式采集时间序列数据。
    • 推送时间序列数据通过PushGateway组件支持。
    • 通过服务发现或静态配置发现目标。
    • 多种图形模式及仪表盘支持(grafana)

    avitor

    prometheus server: 收集指标和存储时间序列数据,并提供查询接口。
    clientlibrary: 客户端库。
    push gateway: 短期存储指标数据。主要用于临时性的任务。
    exporters: 采集已有的第三方服务监控指标并暴露metrics。
    alertmanager: 告警。
    web UI: 简单的web UI。

    实例: 可以抓取的目标称之为实例(instances)。
    作业: 具有相同䯮的实例集合称为作业(job)。

    运行prometheus容器

    docker run 
        -p 9090:9090 
        -v /root/prom/prometheus.yml:/etc/prometheus/prometheus.yml 
        prom/prometheus
    

    prometheus+grafana监控docker主机

    cadvisor(container advisor)用于收集正在运行的容器资源使用和性能信息。grafana是一个开源的度量分析和可视化系统。

    https://github.com/google/cadvisor
    https://grafana.com/grafana/download
    https://grafana.com/dashboards/193

    运行cadvisor容器

    sudo docker run 
      --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
    

    运行grafana容器

      docker run -d --name=grafana -p 3000:3000 grafana/grafana
    

    prometheus,cadvisor,grafana三个容器均正常运行后,在grafana web页面(192.168.1.88:3000)登录(初始用户名和密码:admin/admin)后添加prometheus地址(192.168.1.88:9090),还需要修改prometheus.yml文件添加cadvisor的地址及监控job。

     scrape_configs:
      # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
      - job_name: 'prometheus'
    
        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.
    
        static_configs:
        - targets: ['localhost:9090']
      - job_name: 'docker'
        static_configs:
        - targets: ['192.168.1.88:8080']
    

    以上监控添加完成后,需要在grafana的dashboards添加监控仪表盘,通过仪表盘显示监控内容
    仪表盘可以从grafana官方获取

    https://grafana.com/grafana/dashboards

  • 相关阅读:
    jquery通过val()取不到textarea中的值
    form表单右边弹窗提示不能为空
    正则表达式
    layui表格的批量删除功能
    layui中table表格的操作列(删除,编辑)等按钮的操作
    layui动态渲染生成select的option值
    layui实现table表格的“关键字搜索”功能
    Python3基础 break while循环示例
    Python3基础 bool类型变量赋值
    Python3基础 assert 断言 确保程序的正确运行条件
  • 原文地址:https://www.cnblogs.com/Doc-Yu/p/12113092.html
Copyright © 2020-2023  润新知