乐趣区

关于docker:Prometheus-Grafana-搭建监控系统

前言

本文次要记录下如何应用 Prometheus + Grafana 搭建对各种服务的性能监控,涵盖对 Prometheus、Grafana 的根本介绍,以及如何应用二者进行对 Linux、MySQL、Redis 等监控。为了不便操作,所有的组件都是基于 Docker 容器进行操作。

概述

Prometheus

概述

Prometheus 是云原生计算基金会的我的项目,是一个零碎和服务监控零碎。它以给定的工夫距离从配置的指标收集指标,评估规定表达式,显示后果,并在察看到指定条件时触发警报。

Prometheus 与其余指标和监控零碎的区别在于:

  • 多维数据模型(由指标名称和键 / 值维度集定义的工夫序列)
  • 反对 PromQL,一种弱小且灵便的查询语言,可利用此维度
  • 不依赖分布式存储,单个服务器节点是自治的
  • 用于工夫序列收集的 HTTP 拉取模型
  • 通过用于批处理作业的两头网关反对推送工夫序列
  • 通过服务发现或动态配置发现指标
  • 反对多种模式的图形和仪表板
  • 反对分层和程度联结

官网地址

Github 地址

架构图

装置

  1. 应用原生形式装置:下载地址
  2. 应用 Docker 装置

    1. 拉取镜像

      docker pull prom/prometheus:v2.35.0
    2. 启动命令

      docker run --name prometheus -d -p 9090:9090 prom/prometheus:v2.35.0
    3. 配置文件挂载

      • 将容器外部的配置文件拷贝到宿主机

        docker cp prometheus:/etc/prometheus /data/software/docker/prometheus/
      • 配置文件

        prometheus.yml

        # my global config
        global:
          scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
          evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
          # scrape_timeout is set to the global default (10s).
        
        # Alertmanager configuration
        alerting:
          alertmanagers:
            - static_configs:
                - targets:
                  # - alertmanager:9093
        
        # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
        rule_files:
          # - "first_rules.yml"
          # - "second_rules.yml"
        
        # A scrape configuration containing exactly one endpoint to scrape:
        # Here it's Prometheus itself.
        scrape_configs:
          # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
          - job_name: "prometheus"
        
            # metrics_path defaults to '/metrics'
            # scheme defaults to 'http'.
        
            static_configs:
              - targets: ["localhost:9090"]
    4. 挂载配置文件启动容器

      docker run --name prometheus -d -p 9090:9090 -v /data/software/docker/prometheus/conf:/etc/prometheus  prom/prometheus:v2.35.0
    5. 测试后果:

      浏览器拜访:http://ip:9090

Grafana

概述

Grafana 是一个能够监控,剖析指标、日志,进行团队治理,提供丑陋仪表板的平台零碎。无论数据存储在何处,都能够进行查问、可视化、揭示。

Grafana 官网地址

装置

原生形式装置

下载地址

Docker 装置

  1. 拉取镜像

    docker pull grafana/grafana:7.5.16
  2. 启动容器

    docker run -d --name=grafana -p 3000:3000 grafana/grafana:7.5.16
  3. 测试后果:

    浏览器拜访:http://ip:3000,胜利拜访如下页面

初始用户名:admin

初始密码:admin

配置 Prometheus 数据源

Grafana 展现 Promethus 监控须要配置对应的数据源,如下步骤进行配置:

  1. 新建数据源

  2. 抉择 Prometheus

  3. 填写 Prometheus 地址(留神:要以 http 结尾)

  4. 保留测试

利用

搭建 Linux 服务器性能监控

概述

应用 Node exporter 能够来收集 Linux 服务器相干的性能指标。

装置

  1. 拉取镜像

    docker pull prom/node-exporter:v1.3.0
  2. 启动容器

    docker run --name node-export -p 9100:9100 -d prom/node-exporter:v1.3.0
  3. 浏览器拜访:http://ip:9100,呈现如下页面:

配置

  1. Prometheus 配置文件 prometheus.yml 增加配置

      - job_name: "linux"
    
        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.
        
        static_configs:
          - targets: ["ip:9100"]
  2. 重启 Prometheus 容器

    docker restart prometheus
  3. 进行测试,浏览器拜访 http://ip:9090/service-discovery 呈现如下页面:

展现

在 Grafana 中展现上述配置的 Node exporter,一些丑陋的 DashBoard 模板能够在 插件核心 中下载

  1. 下载对应 dashboard 的 JSON 文件

    下载地址

  2. 在 Grafana 导入对应的 json 文件

也能够通过 url 或 id 进行导入

  ![image-20220527151900505](https://chen-coding.oss-cn-shenzhen.aliyuncs.com/middleware/prometheus/prometheus_start/image-20220527151900505.png?versionId=CAEQKRiBgMD83IGuiBgiIDk3YjNjZGM4MGEwODRjNDQ4MjYzZDg1NjE4ZDc0OTYw)

  1. 展现成果

搭建 MySQL 服务器性能监控

概述

应用 MySQLd exporter 能够来收集 MySQL 服务器相干的性能指标。

装置

  1. 拉取镜像

    docker pull prom/mysqld-exporter:v0.13.0
  2. 启动容器

    docker run -d -p 9104:9104 --name mysql-exporter  -e DATA_SOURCE_NAME="username:password@(ip:3306)/" prom/mysqld-exporter:v0.13.0
  3. 测试,浏览器拜访:http://ip:9104

配置

  1. Prometheus 配置文件 prometheus.yml 增加配置

      - job_name: "mysql"
    
        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.
    
        static_configs:
          - targets: ["ip:9104"]
            labels:
              instance: mysql
  2. 重启 Prometheus 容器

    docker restart prometheus
  3. 进行测试,浏览器拜访 http://ip:9090/service-discovery 呈现如下页面:

展现

在 Grafana 中展现上述配置的 MySQLd exporter,一些丑陋的 DashBoard 模板能够在 插件核心 中下载

  1. 下载对应 dashboard 的 JSON 文件

    下载地址

  2. 在 Grafana 导入对应的 json 文件

    也能够通过 url 或 id 进行导入

  3. 展现成果

搭建 Redis 服务器性能监控

概述

应用 Redis exporter 能够来收集 Redis 服务器相干的性能指标。

装置

  1. 拉取镜像

    docker pull oliver006/redis_exporter:v1.37.0
  2. 启动容器

    docker run -d --name redis-exporter -p 9121:9121 oliver006/redis_exporter:v1.37.0 --redis.addr redis://ip:6379 --redis.password password
  3. 测试,浏览器拜访:http://ip:9121

    配置

    1. Prometheus 配置文件 prometheus.yml 增加配置

        - job_name: "redis"
      
          # metrics_path defaults to '/metrics'
          # scheme defaults to 'http'.
      
          static_configs:
            - targets: ["ip:9121"]
              labels: 
                instance: redis
    2. 重启 Prometheus 容器

      docker restart prometheus
    3. 进行测试,浏览器拜访 http://ip:9090/service-discovery 呈现如下页面:

展现

在 Grafana 中展现上述配置的 Redis exporter,一些丑陋的 DashBoard 模板能够在 插件核心 中下载

  1. 下载对应 dashboard 的 JSON 文件

    下载地址

  2. 在 Grafana 导入对应的 json 文件

    也能够通过 url 或 id 进行导入

  3. 展现成果

退出移动版