Docker 容器监控方案随手记

天气:雨转阴

Docker环境准备

官方安装文档

# 卸载旧 软件
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

# 设置 docker 安装库
yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
# 安装 docker-engine,直接装最新版本
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动 docker
systemctl start/stop/restart docker

Prometheus 日志方案

prometheus 提供了监控 服务器资源 中 数据搜集、存储、处理、可视化、告警 一套完整的解决方案

Prometheus架构
使用 Prometheus 监控两台 Docker Host A 、B、C

  • Prometheus Server 容器化部署在 Docker Host A ;
  • Exporter 有多种,详见 官方文档; 使用 NodeExporter 负责收集host硬件和操作系统数据,运行在所有的 DockerHost 上;cAdvisor 负责收集容器的数据,同样运行在所有 Docker Host 上。
  • Grafana 显示多维数据,容器化部署在 Docker Host A 上

Node Exporter 容器部署

github文档参考博客。node_exporter 用于监控主机系统。不建议将其部署为Docker容器,因为它需要访问主机系统。请注意,您要监视的任何非根安装点都需要绑定到容器中。如果启动容器进行主机监视,请指定path.rootfs参数。此参数必须与host root的bind-mount中的路径匹配。node_exporter将path.rootfs用作访问主机文件系统的前缀。

docker run -d --restart on-failure:3 \
  --name prometheus-node-exporter \
  --net="host" \
  -v /proc:/host/proc \
  -v /sys:/host/sys \
  -v /:/rootfs \
  prom/node-exporter  \
  --path.rootfs /host \
  --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

# --net=host,则 container 直接使用 host 的端口,不需映射
# 访问地址:ip:9100/metrics

P.S. 开放防火墙端口

# 开放 9100 等端口
firewall-cmd --permanent --zone=public --add-port=9100/tcp
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --permanent --zone=public --add-port=9090/tcp
firewall-cmd --permanent --zone=public --add-port=3000/tcp
 # 重新加载防火墙
firewall-cmd --reload
# 查看防火墙已经开放的端口
firewall-cmd --list-all

cAdvisor 容器部署

docker run --net="host" --restart on-failure:3 \
  -v /:/rootfs:ro \
  -v /var/run:/var/run:rw \
  -v /sys:/sys:ro \
  -v /var/lib/docker:/var/lib/docker:ro \
  -d --name=prometheus-cadvisor google/cadvisor
  
# 配置 host 网络后 cAdvisor 可以直接与 node-exporter 通信,
# 访问地址:ip:8080/metrics

Prometheus Server 容器部署

创建 挂载文件: vim /root/prometheus/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: ['ipA:9100','ipA:8080','ipA:9090','……']
docker run --net host \
  -v /root/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
  -d --name prometheus-server prom/prometheus
# 只部署一台 Docker Host 即可
# 访问地址:ip:9090/metrics, ip:9090

Grafana 容器部署

docker run -i --net host \
  -e GF_SERVER_ROOT_URL=http://grafana.server.name \
  -e GF_SECURITY_ADMIN_PASSWORD=my_grafana@pass \
  -d --name prometheus-grafana grafana/grafana

# 只部署一台 Docker Host 即可
# 访问地址: ip:3000 admin my_grafana@pass
  • 配置 grafana 的 datasource,即页面展示数据来源;
  • 配置 grafana 的 dashboard,即 以什么形式(仪表/线性图等)展示 prometheus 的哪些多维数据。可以从 官网 搜索和下载,再 import 到 dashboard.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值