基于 Prometheus + Grafana 监控微服务和数据库

以下是基于 Prometheus + Grafana 监控微服务和数据库的详细指南,包含架构设计、安装配置及验证步骤:

一、整体架构设计

二、监控微服务

1. 微服务指标暴露
  • Spring Boot 应用

    xml

    <!-- 添加 Micrometer 依赖 -->
    <dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
    
     
    • 配置文件 (application.yml):

      yaml

      management:endpoints:web:exposure:include: prometheusmetrics:tags:application: your-service-name
      
    • 访问指标:http://<微服务IP>:端口/actuator/prometheus
2. Prometheus 配置

修改 prometheus.yml 添加微服务监控:

yaml

scrape_configs:- job_name: 'microservices'static_configs:- targets: ['ms1:8080', 'ms2:8080']  # 微服务实例地址

三、监控数据库

1. MySQL 监控
  • 安装 mysqld_exporter

    bash

    wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.0/mysqld_exporter-0.15.0.linux-amd64.tar.gz
    tar -zxvf mysqld_exporter-0.15.0.linux-amd64.tar.gz
    
  • 配置数据库权限

    sql

    CREATE USER 'exporter'@'%' IDENTIFIED BY 'password';
    GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';
    
  • 启动 Exporter

    bash

    ./mysqld_exporter --config.my-cnf=~/.my.cnf
    
2. Oracle 监控
  • 安装 oracledb_exporter

    bash

    wget https://github.com/iamseth/oracledb_exporter/releases/download/v0.2.8/oracledb_exporter.linux-amd64
    chmod +x oracledb_exporter.linux-amd64
    
  • 配置连接信息

    yaml

    # config.yml
    data_source: system/password@//localhost:1521/orcl
    
  • 启动 Exporter

    bash

    ./oracledb_exporter --config.path=config.yml
    
3. Prometheus 配置

yaml

scrape_configs:- job_name: 'mysql'static_configs:- targets: ['mysql-server:9104']  # mysqld_exporter 默认端口 9104- job_name: 'oracle'static_configs:- targets: ['oracle-server:9182']  # oracledb_exporter 默认端口 9182

四、Grafana 配置

1. 添加数据源
  1. 登录 Grafana(http://<服务器IP>:3000),进入 Configuration → Data Sources
  2. 选择 Prometheus,填写 URL(如 http://prometheus-server:9090),保存并测试连接。
2. 导入仪表盘
  • 微服务监控
    • 模板 ID:13978(Spring Boot 监控)
  • MySQL 监控
    • 模板 ID:7362(MySQL Overview)
  • Oracle 监控
    • 模板 ID:15222(Oracle Database Monitoring)
3. 自定义告警规则

在 Grafana 中创建告警规则(如数据库连接数阈值):

  1. 进入 Alerting → Rules,选择数据源。
  2. 编写 PromQL 查询,设置阈值和通知渠道(邮件 / Slack / 钉钉)。

五、验证与调优

  1. Prometheus 验证

    • 访问 http://prometheus-server:9090/targets,确保所有 Exporter 状态为 UP
    • 使用 PromQL 查询指标(如 node_cpu_seconds_total)。
  2. Grafana 验证

    • 检查仪表盘数据是否实时更新。
    • 测试告警规则是否触发通知。
  3. 性能优化

    • 调整 scrape_interval(默认 15s)以平衡数据密度和性能。
    • 配置 storage.tsdb.retention.time 控制数据保留时长(默认 15 天)。

六、扩展方案

  • 动态服务发现
    • 使用 Kubernetes DNS 或 Consul 自动发现微服务实例。
    • 修改 Prometheus 配置为:

      yaml

      scrape_configs:- job_name: 'kubernetes-pods'kubernetes_sd_configs:- role: pod
      
  • 高可用部署
    • 使用 Prometheus Operator 在 Kubernetes 中部署集群。
    • 配置 Grafana 主从节点和持久化存储。

案例:

下面将详细介绍如何使用 Prometheus 和 Grafana 对 Spring Boot 应用以及 MySQL、Redis、MongoDB 数据库进行监控。

1. 监控 Spring Boot 应用

1.1 暴露 Spring Boot 应用指标

在 Spring Boot 项目的 pom.xml 中添加以下依赖:

xml

<dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

在 application.yml 或 application.properties 中进行如下配置:

yaml

management:endpoints:web:exposure:include: prometheusmetrics:tags:application: your-application-name

配置完成后,Spring Boot 应用会在 /actuator/prometheus 端点暴露 Prometheus 格式的指标。

1.2 配置 Prometheus 监控 Spring Boot 应用

在 prometheus.yml 中添加如下配置:

yaml

scrape_configs:- job_name: 'spring-boot-app'static_configs:- targets: ['your-spring-boot-app-ip:port']

2. 监控 MySQL 数据库

2.1 安装并配置 mysqld_exporter

从 mysqld_exporter 发布页面 下载适合你系统的版本并解压。
为 mysqld_exporter 创建 MySQL 用户并授予必要的权限:

sql

CREATE USER 'exporter'@'%' IDENTIFIED BY 'password';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';

启动 mysqld_exporter

bash

./mysqld_exporter --config.my-cnf=~/.my.cnf
2.2 配置 Prometheus 监控 MySQL

在 prometheus.yml 中添加以下配置:

yaml

scrape_configs:- job_name: 'mysql'static_configs:- targets: ['your-mysql-server-ip:9104']

3. 监控 Redis 数据库

3.1 安装并配置 redis_exporter

从 redis_exporter 发布页面 下载适合你系统的版本并解压。
启动 redis_exporter

bash

./redis_exporter --redis.addr redis://your-redis-server-ip:port
3.2 配置 Prometheus 监控 Redis

在 prometheus.yml 中添加以下配置:

yaml

scrape_configs:- job_name: 'redis'static_configs:- targets: ['your-redis-exporter-ip:9121']

4. 监控 MongoDB 数据库

4.1 安装并配置 mongodb_exporter

从 mongodb_exporter 发布页面 下载适合你系统的版本并解压。
启动 mongodb_exporter

bash

./mongodb_exporter --mongodb.uri mongodb://your-mongodb-server-ip:port
4.2 配置 Prometheus 监控 MongoDB

在 prometheus.yml 中添加以下配置:

yaml

scrape_configs:- job_name: 'mongodb'static_configs:- targets: ['your-mongodb-exporter-ip:9216']

5. 配置 Grafana

5.1 添加 Prometheus 数据源

登录 Grafana(http://your-grafana-server-ip:3000),进入 Configuration -> Data Sources,选择 Prometheus,填写 Prometheus 的 URL(如 http://your-prometheus-server-ip:9090),然后保存并测试连接。

5.2 导入仪表盘

你可以从 Grafana 的 仪表盘库 导入预定义的仪表盘:

  • Spring Boot 应用:可以使用 ID 为 13978 的仪表盘。
  • MySQL 数据库:使用 ID 为 7362 的仪表盘。
  • Redis 数据库:使用 ID 为 11835 的仪表盘。
  • MongoDB 数据库:使用 ID 为 10577 的仪表盘。

在 Grafana 中点击 + -> Import,输入相应的仪表盘 ID,选择数据源后导入即可。

6. 验证与优化

6.1 验证 Prometheus 采集

访问 http://your-prometheus-server-ip:9090/targets,确保所有监控目标的状态为 UP

6.2 验证 Grafana 展示

在 Grafana 中查看导入的仪表盘,确认数据正常展示。

6.3 优化建议
  • 调整 scrape_interval 以平衡数据采集频率和性能开销。
  • 配置 storage.tsdb.retention.time 控制数据保留时长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/73748.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用GoogleNet实现对花数据集的分类预测

使用GoogleNet实现对花数据集的分类预测 1.作者介绍2.关于理论方面的知识介绍2.1GooLeNet的知识介绍2.2CNN发展阶段2.2GooLeNet创新模块 3.关于实验过程的介绍&#xff0c;完整实验代码&#xff0c;测试结果3.1数据集介绍3.2实验过程3.3实验结果 1.作者介绍 王海博, 男 , 西安…

流量密码破解:eBay店铺首页改版后的黄金展示位

流量密码破解&#xff1a;eBay店铺首页改版后的黄金展示位 近年来&#xff0c;跨境电商行业竞争日趋激烈&#xff0c;流量分配机制的调整成为平台卖家最为关注的核心议题之一。作为全球领先的在线电商平台&#xff0c;eBay的每一次页面优化都可能对卖家的经营策略产生深远影响…

从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!

我正在参加Trae「超级体验官」创意实践征文&#xff0c; 本文所使用的 Trae 免费下载链接&#xff1a; www.trae.ai/?utm_source… 前言 大家好&#xff0c;我是小Q&#xff0c;字节跳动近期推出了一款 AI IDE—— Trae&#xff0c;由国人团队开发&#xff0c;并且限时免费体…

Netty:java高性能网络编程的基石(下)

一、Netty是什么&#xff1f;为什么需要它&#xff1f; Netty是一个异步事件驱动的网络应用框架&#xff0c;基于Java NIO技术封装&#xff0c;用于快速开发高性能、高可靠性的网络服务器和客户端程序。作为当前最流行的NIO框架之一&#xff0c;支撑着Dubbo、RocketMQ、Elasti…

leetcode-47.全排列II

如何在有重复值的时候节省时间是优化重点。 基础写法肯定是按无重复值时的全排列写&#xff0c;在其中要加上防止走重复路径的分支。 能防止的也只有同层&#xff0c;如果同层走一个值&#xff0c;但是该值重复&#xff0c;且走过了&#xff0c;则放弃走该分支。所以设layer_u…

函数(函数的概念、库函数、自定义函数、形参和实参、return语句、数组做函数参数、嵌套调用和链式访问、函数的声明和定义、static和extern)

一、函数的概念 •C语⾔中的函数&#xff1a;⼀个完成某项特定的任务的⼀⼩段代码 •函数又被翻译为子函数&#xff08;更准确&#xff09; •在C语⾔中我们⼀般会⻅到两类函数&#xff1a;库函数 ⾃定义函数 二、库函数 1 .标准库和头文件 •C语⾔的国际标准ANSIC规定了⼀…

孜然SEO静态页面生成系统V1.0

孜然SEO静态页面生成系统&#xff0c;1秒生成上万个不同的静态单页系统&#xff0c;支持URL裂变采集&#xff0c;采集的内容不会重复&#xff0c;因为程序系统自带AI重写算法&#xff0c;AI扩写算法&#xff0c;可视化的蜘蛛池系统让您更清楚的获取到信息&#xff01; 可插入二…

Secs/Gem第一讲 · 总结精华版(基于secs4net项目的ChatGpt介绍)

好的&#xff01;这就是《第一讲 总结精华版》——为背诵准备的口述速成稿&#xff0c;适合面试前复习答题用。我们会分为两个部分&#xff1a; 第一部分&#xff1a;一整段口述稿&#xff0c;可以当成面试时开口自我介绍用&#xff1b;第二部分&#xff1a;要点清单关键词串…

预处理指令中#if 和 #endif的用法

在 C 语言中&#xff0c;#if 和 #endif 是预处理指令&#xff0c;用于条件编译。它们的核心作用是&#xff1a;根据预处理器能够识别的条件&#xff08;通常是宏定义或常量表达式&#xff09;&#xff0c;决定某段代码是否参与编译。 — 基本功能 #if 用于开启一个条件编译块…

【数据库】掌握MySQL事务与锁机制-数据一致性的关键

在数据库的世界里&#xff0c;数据就是一切。而确保数据的准确性和一致性&#xff0c;则是数据库系统的核心任务之一。想象一下&#xff0c;如果没有合适的机制&#xff0c;当多个用户同时试图修改同一条数据时&#xff0c;会发生什么&#xff1f; chaos&#xff08;混乱&#…

linux 基础网络配置文件

使用“ifconfig”命令查看网络接口地址 直接执行“iconfg”命令后可以看到ens33、10、virbr0这3个网络接口的信息&#xff0c;具体命令如下 ifconfig ##查看网络接口地址 ens33:第一块以太网卡的名称 lo:“回环”网络接口 virbr0:虚拟网桥的连接接口 查看指…

OpenCV特征提取与深度学习CNN特征提取差异

一、特征生成方式 ‌OpenCV传统方法‌ ‌手工设计特征‌&#xff1a;依赖人工设计的算法&#xff08;如SIFT、FAST、BRIEF&#xff09;提取图像中的角点、边缘等低层次特征&#xff0c;需手动调整参数以适应不同场景‌。‌数学驱动‌&#xff1a;基于梯度变化、几何变换等数学规…

五种方案实现双链路可靠数据传输

本文介绍五种双链路数据传输方案,目标是利用设备的多个传输通道,(如双有线网口,网口+wifi, 网口+5G等场景 , 网口+ 自组网, 自组网 + 5G等),将数据复制后分流、分路同时传输,以期提高数据传输可靠性,满足高可靠性传输的应用场景需求。部分方案给出了实际验证结果 。 …

【备赛】遇到的小问题-1

问题描述-1 想实现的功能是&#xff0c;通过ADC实时测量某引脚的电压及其占空比。 可以通过旋转电位器&#xff0c;更改其电压。 首先我定义了这几个变量 uint32_t adc_value;//HAL库函数里面得出的采样值(实时更新) uint32_t percentage6;//占空比&#xff0c;随着adc_val…

最大公约数

4.最大公约数 - 蓝桥云课 最大公约数 题目描述 给定两个正整数 A,B&#xff0c;求它们的最大公约数。 输入描述 第1行为一个整数 T&#xff0c;表示测试数据数量。 接下来的 T 行每行包含两个正整数 A,B。 1≤T≤105&#xff0c;1≤A,B≤109。 输出描述 输出共 T 行&…

TMHMM2.0-蛋白跨膜螺旋预测工具-centos-安装+配置+排错

参考&#xff1a; A. Krogh, B. Larsson, G. von Heijne, and E. L. L. Sonnhammer. Predicting transmembrane protein topology with a hidden Markov model: Application to complete genomes. Journal of Molecular Biology, 305(3):567-580, January 2001. centos&#x…

docker run 命令常用参数

docker run 命令 用于从镜像创建并启动一个新的容器。 基本语法&#xff1a; docker run [OPTIONS] IMAGE [COMMAND] [ARG...]常用选项分类说明 容器配置 --name 为容器指定名称&#xff08;默认随机生成&#xff09;。 示例&#xff1a; docker run --name my_container …

Zbrush插件安装

安装目录在: ...\Zbrush2022\ZStartup\ZPlugs64

pandas中excel自定义单元格颜色

writerpd.ExcelWriter(filepathf05教师固定学生占比1月{today}.xlsx,engineopenpyxl) df.to_excel(writer,sheet_name明细) piv1.to_excel(writer,sheet_name1月分布) wswriter.book.create_sheet(口径) ws.cell(1,1).value综合占比&#xff1a; ws.cell(1,2).value固定学生占比…

整体二分算法讲解及例题

算法思想 整体二分&#xff0c;带有二分二字那么就一定和二分脱不了干系。 整体二分算法常用来解决询问区间的第 k k k小值的问题&#xff0c;思路如下&#xff1a; 我们二分的对象是这道题目给定的值域&#xff0c;及最小值与最大值之间的区间&#xff0c;在题目给定的数组中…