docker-compose 搭建 Prometheus+Grafana监控系统
有关监控选型之前有写过一篇文章: 监控系统选型,一文轻松搞定!

监控对象
- Linux服务器
- Docker
- Redis
- MySQL
数据采集
1)、prometheus: 采集数据
2)、node-exporter: 收集操作系统和硬件信息的metrics
3)、cadvisor : 收集Docker的metrics
4)、redis-exporter: 收集Redis的metrics
5)、 mysql-exporter: 收集MySQL的metrics
报表
- grafana: 图表展示
一、环境搭建
1、MySQL用户授权
之前想用root账号尝试收集MySQL的metrics,但在启动docker的时候一直报错:
“Error pinging mysqld" err="Error 1049: Unknown database
后来去官方地址在发现,需要对用户进行授权才能收集监控数据信息。
gitHub开源项目有说明: https://github.com/prometheus/mysqld_exporter
所以这里重新创建用户并授权。
CREATE USER 'exporter'@'%' IDENTIFIED BY '123456';
GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'exporter'@'%';
GRANT SELECT ON performance_schema.* TO 'exporter'@'%';
注意:建议为用户设置最大连接限制,以避免在重负载下监控抓取使服务器过载。
2、配置docker-compose.yml
我在/etc/prometheus创建一个docker-compose.yml文件,文件内容如下
version: '2'
networks:
monitor:
driver: bridge
services:
prometheus:
image: prom/prometheus
container_name: prometheus
hostname: prometheus
restart: always
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
networks:
- monitor
alertmanager: #预警模块
image: prom/alertmanager
container_name: alertmanager
hostname: alertmanager
restart: always
ports:
- "9093:9093"
networks:
- monitor
grafana:
image: grafana/grafana
container_name: grafana
hostname: grafana
restart: always
ports:
- "3000:3000"
networks:
- monitor
node-exporter:
image: quay.io/prometheus/node-exporter
container_name: node-exporter
hostname: node-exporter
restart: always
ports:
- "9100:9100"
networks:
- monitor
cadvisor:
image: google/cadvisor:latest
container_name: cadvisor
hostname: cadvisor
restart: always
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
ports:
- "8899:8080"
networks:
- monitor
redis-exporter:
image: oliver006/redis_exporter
container_name: redis-exporter
hostname: redis-exporter
restart: always
ports:
- "9121:9121"
command:
- "--redis.addr=redis://127.0.0.1:6379"
networks:
- monitor
mysql_xporter:
image: prom/mysqld-exporter
container_name: mysql-exporter
hostname: mysql-exporter
restart: always
ports:
- "9104:9104"
environment:
DATA_SOURCE_NAME: 'exporter:123456@(127.0.0.1:3306)'
networks:
- monitor
因为这里prometheus容器的配置文件重新挂载了,挂载到/etc/prometheus/目录下,所以在该目录创建好prometheus.yml文件。
3、配置prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['ip:9090'] //ip为自己服务器IP
- job_name: 'cadvisor'
static_configs:
- targets: ['ip:8899']
- job_name: 'node'
static_configs:
- targets: ['ip:9100']
- job_name: 'redis_exporter'
static_configs:
- targets: ['ip:9121']
- job_name: 'mysql_exporter'
static_configs:
- targets: ['ip:9104']
二、docker-compose启动
在docker-compose.yml文件目录下通过 docker-compose up -d 启动容器。
我们可以通过 docker-compose ps 容器是否成功。

启动成功,就可以分别访问:
http://ip:9090:prometheus的原生web-uihttp://ip:3000:Grafana开源的监控可视化组件页面http://ip:9100:收集服务器的metricshttp://ip:8899:收集docker的metricshttp://ip:9100:收集redis的metricshttp://ip:9104:收集mysql的metrics
打开 http://ip:9090/targets ,如果State都是UP即代表Prometheus工作正常,如下图所示:

从图中可以看出所有State都是UP,说明已经搭建成功了,接下来就通过Grafana来展示监控数据。
三、Grafana配置监控
打开http://ip:3000, 使用默认账号密码admin/admin登录

默认进来是创建数据库的页面,在如下图所示中,选择Prometheus

输入prometheus数据源的信息,主要是输入name和url

数据源配置好之后,我们就可以配置对应的监控信息了,常见的配置监控已经有对应的模板了,就不需要我们一个一个地去配置了。(如果不满足的话,那可以手动配置)
四、选择监控模版
grafana提供了许许多多精美的模版,我们可以在模版库中选择我们需要到模版导入到当前项目就可以了,使用非常方便。
模板地址: https://grafana.com/grafana/dashboards/
1、Linux硬件信息监控
本次要导入的模板:https://grafana.com/grafana/dashboards/11074

选择好模版后,只需要导入到Grafana中就可以了。

导入成功后,选择数据源,为该模版命名

即可看到逼格非常高的系统主机节点监控信息了

2、docker监控
模版ID :893

监控效果

3、Mysql监控
模版ID :7362
监控效果

4、Redis监控
模版ID :10534
监控效果

每种监控都有非常多的模版样式,我们可以去模版库中去找自己喜欢的就可以。这里监控就搭建完成了。
声明: 公众号如需转载该篇文章,发表文章的头部一定要 告知是转至公众号: 后端元宇宙。同时也可以问本人要markdown原稿和原图片。其它情况一律禁止转载!
docker-compose 搭建 Prometheus+Grafana监控系统的更多相关文章
- Docker搭建Prometheus+grafana监控系统
一.Prometheus简介 1.简介 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB). Prometheus使用Go语言开发,是Google BorgM ...
- docker-compose快速搭建 Prometheus+Grafana监控系统
一.说明Prometheus负责收集数据,Grafana负责展示数据.其中采用Prometheus 中的 Exporter含:1)Node Exporter,负责收集 host 硬件和操作系统数据.它 ...
- Prometheus + Grafana 监控系统搭
本文主要介绍基于Prometheus + Grafana 监控Linux服务器. 一.Prometheus 概述(略) 与其他监控系统对比 1 Prometheus vs. Zabbix Zabbix ...
- Docker搭建zabbix+grafana监控系统
一.准备工作 1.mysql数据库:192.168.1.5 2.nginx服务:192.168.1.10 3.docker服务器:192.168.1.20 4.zabbix客户端若干 二.docker ...
- 初试 Prometheus + Grafana 监控系统搭建并监控 Mysql
转载自:https://cloud.tencent.com/developer/article/1433280 文章目录1.Prometheus & Grafana 介绍1.1.Prometh ...
- Centos7 搭建prometheus+Grafana监控
https://baijiahao.baidu.com/s?id=1676883786156871051&wfr=spider&for=pc node scrape_configs ...
- [转帖]基于docker 搭建Prometheus+Grafana
基于docker 搭建Prometheus+Grafana https://www.cnblogs.com/xiao987334176/p/9930517.html need good study 一 ...
- Prometheus+Grafana监控-基于docker-compose搭建
前言 Prometheus Prometheus 是有 SoundCloud 开发的开源监控系统和时序数据库,基于 Go 语言开发.通过基于 HTTP 的 pull 方式采集时序数据,通过服务发现或静 ...
- cAdvisor+Prometheus+Grafana监控docker
cAdvisor+Prometheus+Grafana监控docker 一.cAdvisor(需要监控的主机都要安装) 官方地址:https://github.com/google/cadvisor ...
随机推荐
- SpringMVC获取请求参数-基本类型
1.Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配 (json形式) <dependency> <groupId>com.faste ...
- Element instanceof Node
今天看到一个问题,问 Element instance Node 为什么是 false. 首先,我们知道 Element 是 Node 的子类,那么为什么 Element instanceof Nod ...
- LevelDB 学习笔记1:布隆过滤器
LevelDB 学习笔记1:布隆过滤器 底层是位数组,初始都是 0 插入时,用 k 个哈希函数对插入的数字做哈希,并用位数组长度取余,将对应位置 1 查找时,做同样的哈希操作,查看这些位的值 如果所有 ...
- NodeJs学习日报day8——接口编写
今天看了黑马NodeJs中关于接口编写以及跨域问题的视频
- XCTF练习题---WEB---view_source
XCTF练习题---WEB---view_source flag:cyberpeace{662b1cf989a0a7999a5589290ce5a88e} 解题步骤: 1.观察题目,打开场景 2.根据 ...
- c# 一些警告的处理方法
在使用.Net 6开发程序时,发现多了很多新的警告类型.这里总结一下处理方法. CS8618 在退出构造函数时,不可为 null 的 属性"Name"必须包含非 null 值 经常 ...
- Java-GUI 编程之 Swing
Swing概述 实际使用 Java 开发图形界面程序时 ,很少使用 AWT 组件,绝大部分时候都是用 Swing 组件开发的 . Swing是由100%纯 Java实现的,不再依赖于本地平台的 GU ...
- 看完复旦博士用Python统计核酸结果后,我照着也写了一个
前几天,人民日报公众号报道了复旦博士生自己写代码,通过OCR和正则表达式统计核酸截图结果.具体文章见:https://mp.weixin.qq.com/s/l8u9JifKDlRDoz32-jZWQg ...
- 聊聊 HTTPS
聊聊 HTTPS 本文写于 2021 年 6 月 30 日 最近工作也是越来越忙了,不像上学的时候,一天下来闲着没事可以写两篇博客. 今天来聊一下 HTTPS. HTTP HTTP 是不安全的协议. ...
- 移动应用开发迎来哪些新技术?5月24日相约HDD·线上沙龙·创新开发专场
HUAWEI Developer Day(简称HDD),是华为开发者联盟与广大开发者深度交流的平台.围绕移动终端的最新技术和产品形态,持续向广大开发者传递华为终端的最新产品和开放服务能力,结合最新的行 ...