一分钟部署prometheus&grafana全方面监控SpringBoot项目

prometheus,grafana,springboot · 浏览次数 : 0

小编点评

**0x01 创建目录和配置文件** ```bash mkdir /data/prometheus0x02 cd /data/prometheus0x02 ``` **0x02 创建docker-compose.yml配置文件** ```yaml version: '3' networks: monitor: driver: bridgeservices: prometheus: image: prom/prometheus container_name: prometheus hostname: prometheus restart: always volumes: - /prometheus/reload:/etc/prometheus/reload - /prometheus/prometheus.yml:/etc/prometheus/prometheus.yml - /prometheus/node_down.yml:/etc/prometheus/node_down.yml grafana: image: grafana/grafana container_name: grafana hostname: grafana restart: always ports: - "3000:3000" networks: - monitor redis-exporter: image: oliver006/redis_exporter container_name: redis_exporter hostname: redis_exporter restart: always ports: - "9121:9121" networks: - monitor node-exporter: image: quay.io/prometheus/node-exporter container_name: node_exporter hostname: node_exporter restart: always ports: - "9100:9100" networks: - monitor mysql-exporter: image: prom/mysqld-exporter container_name: mysql_exporter hostname: mysql_exporter restart: always ports: - "9104:9104" networks: - monitor ``` **0x03 启动容器** ```bash docker-compose up -d ``` **0x04 FAQ** * **基于文件自动加载新监控任务**项目启动后,会在根目录中生产一个名叫 `reload` 的文件夹。 * 这文件夹中包含了新增的监控配置,用于注册到 Prometheus 服务中。 * 配置书写格式如下: ``` targets: - '10.0.5.79:9100' labels: job: 'pig-web' __metrics_path__: '/web/actuator/prometheus' ``` * 如果无法启动容器,请查看官方文档。

正文

0x01 创建目录

找一个你喜欢的地方,创建项目根目录

example:

[root@demo-78 ~]#  mkdir /data/prometheus

0x02 创建配置文件

进入到项目根目录:

[root@demo-78 ~]#  cd /data/prometheus

需要新建三个文件,分别是docker-compose.ymlprometheus.ymlnode_down.yml,详细配置如下

在以下配置中,除了docker-compose.yml中的端口映射配置以外,所有你能看到的关于hostportusernamepassowrd的配置,都修改成你自己的,顺便注意一下docker-compose.yml配置中关于文件挂载的路劲问题。

prometheus.yml配置如下:

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: ['10.0.5.78:9093']
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "node_down.yml"
  # - "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: ['10.0.5.78:9094']

  - job_name: 'redis'
    static_configs:
     - targets: ['10.0.5.78:9121']
       labels:
         instance: redis

  - job_name: 'node'
    scrape_interval: 8s
    static_configs:
     - targets: ['10.0.5.78:9100']
       labels:
         instance: node

  - job_name: 'cadvisor'
    static_configs:
     - targets: ['10.0.5.78:8088']
       labels:
         instance: cadvisori
         
  #基于文件自动加载新监控任务
  - job_name: 'file_ds'
    file_sd_configs:
    - files: ['/etc/prometheus/reload/*.yml']
      refresh_interval: 5s

docker-compose.yml配置如下:

version: '3'

networks:
    monitor:
        driver: bridge

services:
    prometheus:
        image: prom/prometheus
        container_name: prometheus
        hostname: prometheus
        restart: always
        volumes:
            - /prometheus/reload:/etc/prometheus/reload
            - /prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
            - /prometheus/node_down.yml:/etc/prometheus/node_down.yml
        ports:
            - "9094:9090"
        networks:
            - monitor

    grafana:
        image: grafana/grafana
        container_name: grafana
        hostname: grafana
        restart: always
        ports:
            - "3000:3000"
        networks:
            - monitor
            
    redis-exporter:
        image: oliver006/redis_exporter
        container_name: redis_exporter
        hostname: redis_exporter
        restart: always
        ports:
            - "9121:9121"
        networks:
            - monitor
        command:
            - '--redis.addr=redis://10.0.5.79:6379'
            - '--redis.password=Pig_1234'

    node-exporter:
        image: quay.io/prometheus/node-exporter
        container_name: node-exporter
        hostname: node-exporter
        restart: always
        ports:
            - "9100:9100"
        networks:
            - monitor

    mysql-exporter:
        image: prom/mysqld-exporter
        container_name: mysql-exporter
        hostname: mysql-exporter
        restart: always
        ports:
            - "9104:9104"
        networks:
            - monitor
        command:
            - "--mysqld.address=10.0.5.79:3306"
            - "--mysqld.username=pigdigital:Pigdigital_1234"
          
    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:
            - "8088:8080"
        networks:
            - monitor

node_down.yml配置如下:

groups:
- name: node_down
  rules:
  - alert: InstanceDown
    expr: up == 0
    for: 1m
    labels:
      user: test
    annotations:
      summary: "Instance {{ $labels.instance }} down"
      description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."

0x03 启动容器

# 启动容器
[root@demo-78 prometheus]# docker-compose up -d

自行执行命令查看是否启动成功

0x04 FAQ

  1. 如何使用prometheus.yml配置的 "基于文件自动加载新监控任务"

    项目启动后,在根目录会生产一个名叫reload的文件夹,只需要在当前文件夹中加入新增的监控配置就能自动注册到prometheus服务中,配置书写格式如下:

    [root@demo-78 ~]# cat /prometheus/reload/web.yml 
    - targets:
      - '10.0.5.79:9100'
      labels:
        job: 'pig-web'
        __metrics_path__: '/web/actuator/prometheus'
    

    或:

    [root@demo-piggpt-78 ~]# cat /prometheus/reload/mysql.yml 
    - targets: ['10.0.5.78:9104']
    

    这里只是给个实例,有特别的需求请自行查看资料,这两种写法唯一的区别在于:第一种写法我需要自定义metrics_path,否则默认拉取指标的路径(第二种写法)就是:10.0.5.78:9104/metrics,对于很多官网的exporter,使用第二种方式即可

  2. 容器mysql-export启动报错:caller=mysqld_exporter.go:225 level=info msg="Error parsing host config" file=.my.cnf err="no configuration found"

    由于mysql-exporter更新过后,配置写法有改变,截止2024年5月28日,最新的mysql-exporter:0.15.1按照当前配置部署能够成功启动,如遇无法启动,请自行查看官方文档

与一分钟部署prometheus&grafana全方面监控SpringBoot项目相似的内容:

一分钟部署prometheus&grafana全方面监控SpringBoot项目

0x01 创建目录 找一个你喜欢的地方,创建项目根目录 example: [root@demo-78 ~]# mkdir /data/prometheus 0x02 创建配置文件 进入到项目根目录: [root@demo-78 ~]# cd /data/prometheus 需要新建三个文件,分别是

Grafana监控minio的极简方法

# Grafana监控minio的极简方法 ## 背景 ``` 想监控一下minio的部分信息. 使用过程中需要关注的内容挺多的. 只看简单的node感觉已经不够了. 所以想监控易一下. ``` ## 方式和方法 ``` minio其实集成了prometheus 支持的监控指标 只需要在配置文件中放

strimzi实战之三:prometheus+grafana监控(按官方文档搞不定监控?不妨看看本文,已经踩过坑了)

通过strimzi部署的kafka集群,如何部署prometheus+grafana去监控呢?官方文档信息量太大,即便照着做也可能失败,这里有一份详细的保姆级操作指南,助您成功部署监控服务

[转帖]kafka_export 部署实战

https://zhuanlan.zhihu.com/p/57704357 Kafka Exporter 监控 Kafka 实时数据 需要安装的组件 Prometheus:时序数据库,按时间保存监控历史数据。语言:Go Grafana:metrics 可视化系统 Kafka Exporter:一个用

[转帖]容器监控实践—Prometheus部署方案

容器监控实践—Prometheus部署方案 https://www.jianshu.com/p/ae0500f70acf 一.单独部署 二进制安装各版本下载地址:https://prometheus.io/download/ Docker运行运行命令:docker run --name promet

DHorse v1.3.0 发布,基于k8s的发布平台

# 综述 DHorse是一个简单易用、以应用为中心的云原生DevOps系统,具有持续集成、持续部署、微服务治理等功能,无需安装依赖Docker、Maven、Node等环境即可发布Java、Vue、React应用,主要特点:部署简单、操作简洁、功能快速。 # 新增特性 * 增加prometheus的配

一分钟部署 Llama3 中文大模型,没别的,就是快

前段时间百度创始人李彦宏信誓旦旦地说开源大模型会越来越落后,闭源模型会持续领先。随后小扎同学就给了他当头一棒,向他展示了什么叫做顶级开源大模型。 美国当地时间4月18日,Meta 在官网上发布了两款开源大模型,参数分别达到 80 亿 (8B) 和 700 亿 (70B),是目前同体量下性能最好的开源

httpsok-v1.11.0支持CDN证书自动部署

httpsok-v1.11.0支持CDN证书自动部署 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具,专为 Nginx 、OpenResty 服务器设计。已服务众多中小企业,稳定、安全、可靠。 一行命令,一分钟轻松搞定SSL证书自动续期 v1.11.0 版本新特性 ✅修复某些情

【Azure API 管理】APIM如何实现对部分固定IP进行访问次数限制呢?如60秒10次请求

问题描述 使用Azure API Management, 想对一些固定的IP地址进行访问次数的限制,如被限制的IP地址一分钟可以访问10次,而不被限制的IP地址则可以无限访问? ChatGPT 解答 最近ChatGPT爆火,所以也把这个问题让ChatGPT来解答,然后人工验证它的回答正确与否? 根据

Python Django 零基础从零到一部署服务,Hello Django!全文件夹目录和核心代码!

**在这篇文章中,我将手把手地教你如何从零开始部署一个使用Django框架的Python服务。无论你是一个刚开始接触开发的新手,还是一个有经验的开发者想要快速了解Django,这篇教程都会为你提供一条清晰的路径。我们将从环境搭建开始,一步一步地创建一个可以处理GET和POST请求的服务,让你能在实践