4

docker-compose 搭建 Prometheus+Grafana监控系统 - 雨点的名字

 2 years ago
source link: https://www.cnblogs.com/qdhxhz/p/16325893.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

1090617-20220530095855427-1701088331.jpg
  • 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 容器是否成功。

1090617-20220530095112020-1732714835.jpg

启动成功,就可以分别访问:

  • 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工作正常,如下图所示:

1090617-20220530095200941-36844815.jpg

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

三、Grafana配置监控

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

1090617-20220530095310626-443180488.jpg

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

1090617-20220530095359665-571623813.jpg

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

1090617-20220530095451490-1498010027.jpg

数据源配置好之后,我们就可以配置对应的监控信息了,常见的配置监控已经有对应的模板了,就不需要我们一个一个地去配置了。(如果不满足的话,那可以手动配置)

四、选择监控模版

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

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

1、Linux硬件信息监控

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

1090617-20220530095548352-475733839.jpg

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

1090617-20220530095709127-708015056.jpg

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

1090617-20220530095807095-1055564552.jpg

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

1090617-20220530095855427-1701088331.jpg

2、docker监控

模版ID :893

1090617-20220530100026050-778014119.jpg
1090617-20220530100114475-297036417.jpg

3、Mysql监控

模版ID :7362

1090617-20220530100305545-1465053026.jpg

4、Redis监控

模版ID :10534

1090617-20220530100350416-1366980267.jpg

每种监控都有非常多的模版样式,我们可以去模版库中去找自己喜欢的就可以。这里监控就搭建完成了。

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK