Prometheus+Grafana

一、Prometheus

获取配置文件

bash 复制代码
docker run -d -p 9090:9090 --name prometheus prom/prometheus
bash 复制代码
mkdir -p /app/prometheus
bash 复制代码
docker cp prometheus:/etc/prometheus/prometheus.yml /app/prometheus/prometheus.yml

停止并删除旧的容器,重新启动

bash 复制代码
docker run -d --name prometheus -p 9090:9090 -v /app/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

访问prometheus

bash 复制代码
http://XX.xx.xx.xx:9090

二、Grafana

看板ID 搜CN查询中文看板

bash 复制代码
https://grafana.com/grafana/dashboards/

设置grafana映射文件夹

bash 复制代码
mkdir -p /app/grafana
chmod 777 -R /app/grafana

启动

bash 复制代码
 docker run -d -p 3000:3000 --name=grafana  -v /app/grafana:/var/lib/grafana grafana/grafana

默认密码admin admin

三、引入node-exporter监控服务器

bash 复制代码
docker run -d --name node-exporter -p 9100:9100 \
  -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone \
  prom/node-exporter

将node-exporter服务暴露公网的ip和端口(内网ip也可以) 配置到Prometheus的prometheus.yml文件中

bash 复制代码
  - job_name: 'linux'
    static_configs:
    - targets: ['106.54.220.184:9100']

重启容器,查看Prometheus

bash 复制代码
看板:Node Exporter Dashboard 220413 ConsulManager自动同步版 

四、引入mysqld-exporter监控Mysql

在监控的mysql创建只能读取数据的用户,使用该用户登录返回数据库信息

bash 复制代码
CREATE USER 'mysqlexporter'@'106.54.220.184' IDENTIFIED BY 'mysqlexporter' WITH MAX_USER_CONNECTIONS 3;
bash 复制代码
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqlexporter'@'106.54.220.184';
bash 复制代码
flush privileges;

启动Mysql监听

bash 复制代码
docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME="用户名:密码@(ip:3306)/mysql" prom/mysqld-exporter
bash 复制代码
docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME="mysqlexporter:mysqlexporter@(ip:3306)/mysql" prom/mysqld-exporter

将mysqld-exporter服务暴露公网的ip和端口(内网ip也可以) 配置到Prometheus的prometheus.yml文件中

bash 复制代码
 - job_name: 'mysql'
  static_configs:
  - targets: ['ip:9104']

查看普罗米修斯 是否新增了监听

在Grafana配置Prometheus数据源

bash 复制代码
Configuration -> Data Sources ->add data source -> Prometheus
bash 复制代码
Create import Mysql看板ID:8919  中文Mysql看板:17320


五、Springboot引入prometheus监测Jvm

应用引入prometheus依赖

bash 复制代码
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
            <scope>runtime</scope>
        </dependency>

修改配置文件

bash 复制代码
#prometheus监控平台配置
management:
  endpoint:
    metrics:
      enabled: true #支持metrics
    prometheus:
      enabled: true #支持Prometheus
  metrics:
    export:
      prometheus:
        enabled: true
    tags:
      application: ruoyi-dev #实例名采集
  endpoints:
    web:
      exposure:
        include: '*' #开放所有端口

配置发送资源接口放行

如果应用有app应用上下文,加入上下文/api

bash 复制代码
curl --request GET --url http://106.54.220.184:8080/api/actuator/prometheus

默认的话

bash 复制代码
curl --request GET --url http://ip:端口/actuator/prometheus

配置到prometheus监听

bash 复制代码
  - job_name: "ruoyi-dev"
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    metrics_path: /api/actuator/prometheus
    static_configs:
      - targets: ["106.54.220.184:8080"]

备份prometheus.yml默认配置

bash 复制代码
# 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"]

	# 监测Linux	  
  - job_name: 'Linux-184'
    static_configs:
      - targets: ['106.54.220.184:9100'] 
			
	# 监测Mysql	  
  - job_name: "MySQL-184"
    static_configs:
      - targets: ["106.54.220.184:9104"]

	# 监测Jvm
  - job_name: "ruoyi-dev"
    metrics_path: /api/actuator/prometheus
    static_configs:
      - targets: ["106.54.220.184:8080"]
	  
相关推荐
字节源流6 小时前
关于maven的依赖下不下来的问题
java·maven
pjx9876 小时前
服务间的“握手”:OpenFeign声明式调用与客户端负载均衡
java·运维·spring·负载均衡
prinrf('千寻)7 小时前
MyBatis-Plus 的 updateById 方法不更新 null 值属性的问题
java·开发语言·mybatis
老华带你飞7 小时前
实习记录小程序|基于SSM+Vue的实习记录小程序设计与实现(源码+数据库+文档)
java·数据库·spring boot·小程序·论文·毕设·实习记录小程序
在未来等你7 小时前
互联网大厂Java求职面试:AI与大模型应用集成及云原生挑战
java·微服务·ai·kubernetes·大模型·embedding·spring ai
源码技术栈8 小时前
SaaS基于云计算、大数据的Java云HIS平台信息化系统源码
java·大数据·云计算·云his·his系统·云医院·区域his
编程、小哥哥8 小时前
互联网大厂Java面试:从Spring Boot到微服务架构的技术深挖
java·spring boot·redis·微服务·prometheus·面试技巧
揽你·入怀8 小时前
数据结构:ArrayList简单实现与常见操作实例详解
java·开发语言
okok__TXF8 小时前
SpringBoot3+AI
java·人工智能·spring
AA-代码批发V哥8 小时前
Math工具类全面指南
java·开发语言·数学建模