美文网首页Kuberne...
Prometheus监控Docker容器和主机

Prometheus监控Docker容器和主机

作者: Linux丶晨星 | 来源:发表于2020-07-08 16:21 被阅读0次

    1. 简介

    Prometheus是SoundCloud开源的一款开源软件。它的实现参考了Google内部的监控实现,与源自Google的Kubernetes结合起来非常合适。另外相比influxdb的方案,性能更加突出,而且还内置了报警功能。它针对大规模的集群环境设计了拉取式的数据采集方式,你只需要在你的应用里面实现一个metrics接口,然后把这个接口告诉Prometheus就可以完成数据采集了。

    区别:

    Zabbix

    • 图形页面友好
    • 成熟,资料较多
    • 告警,分级,完善
    • 架构成熟

    Prometheus

    • 不是很友好,各种配置都需要手写
    • 对docker、k8s监控有成熟解决方案

    特点:

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

    架构图

    Prometheus Server:收集指标和存储时间序列数据,并提供查询接口
    ClientLibrary:客户端库
    Push Gateway:短期存储指标数据。主要用于临时性的任务
    Exporters:采集已有的第三方服务监控指标并暴露metrics
    Alertmanager:告警
    Web UI:简单的Web控制台

    image

    2. 安装

    Docker部署方式:https://prometheus.io/docs/prometheus/latest/installation/

    prometheus配置文件解读:https://prometheus.io/docs/prometheus/latest/getting_started/

    [root@k8s-master tmp]# cat /tmp/prometheus.yml 
    # my global config
    global:
      scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
      evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
      # scrape_timeout is set to the global default (10s).
    
    # Alertmanager configuration
    alerting:
      alertmanagers:
      - static_configs:
        - targets:
          # - alertmanager:9093
    
    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
      # - "first_rules.yml"
      # - "second_rules.yml"
    
    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    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']
    

    启动容器

    docker run  -d \
          --name prometheus \
        -p 9090:9090 \
        -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml \
        prom/prometheus
    
    image image

    3. cadvisor + prometheus + grafana

    1. docker cadvisor监控 + influxdb + grafana

    2. docker cadvisor监控 + prometheus + grafana

    #添加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
    
    #添加grafana容器
    docker run -d \
    --name grafana \
    -p 3000:3000 \
    grafana/grafana
    
    image 在这里插入图片描述
    #在/tmp目录下的prometheus.yml文件添加job
     static_configs:
        - targets: ['localhost:9090']
    
      - job_name: "Linux_cadvisor"
        static_configs:
        - targets: ['192.168.0.10:8080']
    
      - job_name: "Docker_grafana"
        static_configs:
        - targets: ['192.168.0.10:3000']
    
    
    #重启下容器
    docker restart prometheus
    
    image

    识别到cadvisor后即可查看数据

    可以看出 prometheus 自身带的查询格式非常的难看

    image

    我们使用grafana来做展示数据;使用创建好的grafana容器

    访问地址 192.168.0.10:3000

    第一步 添加数据源

    image

    第二步 选择prometheus数据源

    image

    第三步 配置prometheus的访问地址

    image
    image

    第四步 添加仪表盘

    docker主机监控模板 193

    linux主机监控模板 9276


    image
    image

    第五步 监测Docker容器成功

    image

    第六步 监测linux主机

    下载一个exporter

    [root@k8s-master prometheus]# cat node_exporter.sh 
    #!/bin/bash
    
    wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
    
    tar zxf node_exporter-0.17.0.linux-amd64.tar.gz
    mv node_exporter-0.17.0.linux-amd64 /usr/local/node_exporter
    
    cat <<EOF >/usr/lib/systemd/system/node_exporter.service
    [Unit]
    Description=https://prometheus.io
    
    [Service]
    Restart=on-failure
    ExecStart=/usr/local/node_exporter/node_exporter
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    systemctl daemon-reload
    systemctl enable node_exporter
    systemctl restart node_exporter
    
    #默认启动9100端口
    [root@k8s-master prometheus]# netstat -lntup|grep exporter
    tcp6    0   0 :::9100           :::*            LISTEN      61202/node_exporter
    

    去prometheus的容器配置文件中添加上linux的exporter

     [root@k8s-master tmp]# vim /tmp/prometheus.yml
     ...
     - job_name: "Linux"
        static_configs:
        - targets: ['192.168.0.10:9100']
    
    docker restart prometheus
    
    image

    然后就可以导入grafana模板 9276

    image
    image

    相关文章

      网友评论

        本文标题:Prometheus监控Docker容器和主机

        本文链接:https://www.haomeiwen.com/subject/xjmccktx.html