docker-compose 搭建 Prometheus+Grafana监控系统

虚幻大学 xuhss 288℃ 0评论

? 优质资源分享 ?

学习路线指引(点击解锁) 知识定位 人群定位
? Python实战微信订餐小程序 ? 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
?Python量化交易实战? 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

有关监控选型之前有写过一篇文章: 监控系统选型,一文轻松搞定!

ae92d7ac350fc897aa1c41ff1a525c42 - 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 容器是否成功。

9d9d093ac3fbc2b28599f3379872c61f - docker-compose 搭建 Prometheus+Grafana监控系统
启动成功,就可以分别访问:

  • http://ip:9090 :prometheus的原生web-ui
  • http://ip:3000 :Grafana开源的监控可视化组件页面
  • http://ip:9100 :收集服务器的metrics
  • http://ip:8899 :收集docker的metrics
  • http://ip:9100 :收集redis的metrics
  • http://ip:9104 :收集mysql的metrics

打开 http://ip:9090/targets ,如果State都是UP即代表Prometheus工作正常,如下图所示:

a20e8851806b5fb93e5fe0ba9f4d113c - docker-compose 搭建 Prometheus+Grafana监控系统
从图中可以看出所有State都是UP,说明已经搭建成功了,接下来就通过Grafana来展示监控数据。

三、Grafana配置监控

打开http://ip:3000, 使用默认账号密码admin/admin登录

056e332d6393a65998aa6a96efdab34a - docker-compose 搭建 Prometheus+Grafana监控系统
默认进来是创建数据库的页面,在如下图所示中,选择Prometheus

10b6ee8f9014ebd58a96a80669bc63ab - docker-compose 搭建 Prometheus+Grafana监控系统
输入prometheus数据源的信息,主要是输入name和url

5025a456e23156fd98887735e54ce645 - docker-compose 搭建 Prometheus+Grafana监控系统
数据源配置好之后,我们就可以配置对应的监控信息了,常见的配置监控已经有对应的模板了,就不需要我们一个一个地去配置了。(如果不满足的话,那可以手动配置)

四、选择监控模版

grafana提供了许许多多精美的模版,我们可以在模版库中选择我们需要到模版导入到当前项目就可以了,使用非常方便。

模板地址: https://grafana.com/grafana/dashboards/

1、Linux硬件信息监控

本次要导入的模板:https://grafana.com/grafana/dashboards/11074

5d033abd98dffa56f7054a08e24159ca - docker-compose 搭建 Prometheus+Grafana监控系统
选择好模版后,只需要导入到Grafana中就可以了。

c6ff22239570ab78259e5cea057948d0 - docker-compose 搭建 Prometheus+Grafana监控系统
导入成功后,选择数据源,为该模版命名

ce7b572de5348b60615ae212475fceb9 - docker-compose 搭建 Prometheus+Grafana监控系统
即可看到逼格非常高的系统主机节点监控信息了

ae92d7ac350fc897aa1c41ff1a525c42 - docker-compose 搭建 Prometheus+Grafana监控系统

2、docker监控

模版ID :893

e6cb7e997e18f3e6509434cd76cf1bee - docker-compose 搭建 Prometheus+Grafana监控系统
监控效果

d748a41e38d7a8fb217df31fc00f28bb - docker-compose 搭建 Prometheus+Grafana监控系统

3、Mysql监控

模版ID :7362

监控效果

afd56653a30b8148cbcb6c30f472faf0 - docker-compose 搭建 Prometheus+Grafana监控系统

4、Redis监控

模版ID :10534

监控效果

5b4b4b37706668b60d94d6d3e836a8ad - docker-compose 搭建 Prometheus+Grafana监控系统
每种监控都有非常多的模版样式,我们可以去模版库中去找自己喜欢的就可以。这里监控就搭建完成了。

声明: 公众号如需转载该篇文章,发表文章的头部一定要 告知是转至公众号: 后端元宇宙。同时也可以问本人要markdown原稿和原图片。其它情况一律禁止转载!

转载请注明:xuhss » docker-compose 搭建 Prometheus+Grafana监控系统

喜欢 (0)

您必须 登录 才能发表评论!