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:
启动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
验证
启动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
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+端口
启动grafana
新建空文件夹grafana-storage,用来存储数据
mkdir /home/grafana-storage
赋予权限因为grafana用户会在这个目录写入文件,直接设置777,比较简单粗暴!
chmod777 -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:
选择Prometheus
name名字写Prometheus
type 选择Prometheus,因为数据都从它那里获取
url 输入Prometheus的ip(docker容器私网ip)+端口
点击下面的Save & Test,如果出现绿色的,说明ok了
导入对应模版驾驶舱
MySQL Overview
Docker Registry
Linux主机详情
redis
![外链图片转存中...(img-eh1RVl0U-1686815749423)]](https://img-blog.csdnimg.cn/35ddecb827b040eb9ac7bf8262556cad.png)
版权归原作者 zhuzhibo666 所有, 如有侵权,请联系我们删除。