Docker 部署普罗米修斯监控

介绍Prometheus
Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。

Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker。

Prometheus应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。

输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:https://github.com/prometheus。

与其他监控系统相比,Prometheus的主要特点是:

一个多维数据模型(时间序列由指标名称定义和设置键/值尺寸)。
非常高效的存储,平均一个采样数据占~3.5bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。

一种灵活的查询语言。
不依赖分布式存储,单个服务器节点。
时间集合通过HTTP上的PULL模型进行。
通过中间网关支持推送时间。
通过服务发现或静态配置发现目标。
多种模式的图形和仪表板支持。

一 安装运行Prometheus(docker版)

下面介绍如何使用Prometheus、Grafana、CAdvisor、node-exporter、mysqld-exporter对本机服务器性能、Docker容器、MySQL数据库进行监控。

监控本机,只需要一个exporter

node_exporter – 用于机器系统数据收集

mysqld-exporter 用于MySQL数据库数据收集

Cadvisor 用于收集宿主机上的docker容器数据

Grafana是一个开源的功能丰富的数据可视化平台,通常用于时序数据的可视化。它内置了以下数据源的支持:

下面是我们安装时用到的架构图:

二 拉取镜像
docker pull prom/node-exporter
docker pull prom/mysqld-exporter
docker pull google/cadvisor
docker pull prom/prometheus
docker pull grafana/grafana

1 启动node-exporter
docker run -d --name node-exporter --restart=always -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" prom/node-exporter

验证是否启动成功

在这里插入图片描述

访问url:

http://ip:9100/metrics
在这里插入图片描述

启动mysqld-exporter
docker run -d --name mysqld_exporter --restart=always -p 9104:9104 -e DATA_SOURCE_NAME="admin:admin@(192.168.232.3:3306)/" prom/mysqld-exporter

验证

在这里插入图片描述

http://ip:9104/metrics

在这里插入图片描述

启动cadvisor

docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8081:8080 --detach=true --name=cadvisor --privileged --device=/dev/kmsg google/cadvisor:latest

1验证http://ip:9104/metrics

2验证访问8081端口

在这里插入图片描述

在这里插入图片描述

添加redis监控


docker pull oliver006/redis_exporter:latest

docker run -d --name redis_exporter -p 9121:9121 oliver006/redis_exporter:latest --redis.addr redis://192.168.232.3:6379 --redis.password "myredis"
创建目录挂载启动prometheus
mkdir /home/prometheus
cd /home/prometheus/
vim prometheus.yml
global:
  scrape_interval:     60s
  evaluation_interval: 60s

scrape_configs:

  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus

  - job_name: linux
    static_configs:
      - targets: ['172.17.0.2:9100']
        labels:
          instance: localhost
   #  - targets: ['192.168.232.3:9100']  
   #这里添加targets,可以使用Prometheus监控其他装有node_exporter的节点,单节点则不需要
   #    labels:
   #      instance: 192.168.232.3

  - job_name: cadvisor
    static_configs:
      - targets: ['172.17.0.6:8081']
        labels:
          instance: cAdvisor

  - job_name: mysqld
    static_configs:
      - targets: ['172.17.0.4:9104']
        labels:
          instance: mysql-exporter
  - job_name: redis
   static_configs:
     - targets: ['172.17.0.10:9121']
       labels:
         instance: redis-exporter       

注意:修改IP地址,这里的172.17.0. xx就是docker容器内的私网,需要自行查询

挂载启动prometheus
docker run  -d --name prometheus --restart=always -p 9090:9090 -v /home/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

验证 ip+端口

http://ip:port/graph

在这里插入图片描述

http://ip:port/targets

在这里插入图片描述

启动grafana

新建空文件夹grafana-storage,用来存储数据

mkdir /home/grafana-storage

赋予权限因为grafana用户会在这个目录写入文件,直接设置777,比较简单粗暴!

chmod 777 -R /home/grafana-storage

启动grafana

docker run -d --name grafana --restart=always -p 3000:3000 --name=grafana -v /home/grafana-storage:/var/lib/grafana grafana/grafana

访问url:

http://ip:3000/

选择Prometheus

name名字写Prometheus

type 选择Prometheus,因为数据都从它那里获取

url 输入Prometheus的ip(docker容器私网ip)+端口
在这里插入图片描述

点击下面的Save & Test,如果出现绿色的,说明ok了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eh1RVl0U-1686815749423)(D:\word\1686810373099.png)]

导入对应模版驾驶舱

MySQL Overview

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M3UW73qd-1686815749424)(D:\word\1686815362970.png)]

Docker Registry

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-12G9eXDT-1686815749424)(D:\word\1686815422011.png)]

Linux主机详情

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RdBjx5mT-1686815749425)(D:\word\1686815346142.png)]

redis

外链图片转存中...(img-eh1RVl0U-1686815749423)]

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐