从零搭建Prometheus到Grafana告警推送

news2024/7/7 16:43:49

目录

一、Prometheus源码安装和动态更新配置

 二、Prometheus操作面板和常见配置

三、Prometheus常用监控组件exporter配置

3.1 exporter是什么

3.2 有哪些exporter

3.3 exporter怎么用

3.4 实战 node_exporter 

​3.5 其它exporter都怎么用

四、Promethus整合新版SpringBoot3.X应用监控

4.1 pom.xml引入依赖:

4.2 自定义健康检查

4.3 prometheus整合配置

五、可视化工具Grafana安装

5.1 什么是Grafana

5.2有哪些常用的功能

5.3快速安装部署

5.4 配置prometheus数据源

5.5 Grafana的用户和组织

 5.6Grafana explore

5.7Grafana最重要的dashboard

 5.8 Grafana高效导入仪表盘

八、Promethus的监控告警Alertmanager

8.1 什么是Alertmanager

8.2 Alertmanager安装

8.3 Alertmanager邮件告警配置步骤

​九、Grafana的Alert监控告警

9.1 Granfana的Alert和Alertmanager比对

9.2 Grafana的告警界面

9.3 Grafana新建推送通道

十、Grafana+钉钉群告警机器人

10.1 实战步骤

10.2 Grafana新建推送通道

10.3 面板Panel配置告警规则

10.4 错误信息跳转

10.5 结果验证


 本文主要介绍了使用Prometheus怎么监听应用服务和中间件。当使用Grafana时,怎么优雅快速的导入仪表盘以及设置阈值触发告警-将告警信息推送到邮件或者钉钉

一、Prometheus源码安装和动态更新配置

安装步骤:

配置go环境变量(Prometheus使用go语言开发)

#解压
tar -zxvf go1.17.6.linux-amd64.tar.gz

#配置环境变量 
echo "export PATH=$PATH:/usr/local/software/temp/go/bin" >> /etc/profile 

#立刻生效
source /etc/profile

#测试 go是否安装成功
go version

安装Prometheus:

#解压
tar -zxvf prometheus-2.43.0.linux-amd64.tar.gz

#重命名
mv prometheus-2.43.0.linux-amd64 prometheus

#进入目录启动
./prometheus --config.file=./prometheus.yml

#查看是否启动成功,默认端口9090
lsof -i:9090

#访问 prometheus ,阿里云网络安全组开放端口
  指标数据
  http://ip:9090/metrics
  图界面
  http://ip:9090/

动态更新:

prometheus里面经常需要修改配置,可以利用动态更新

启动时在参数中加入--web.enable-lifecycle   (该参数默认关闭)

#启动, &表示需要守护进程方式运行,不然退出终端则进程消失
./prometheus --config.file=./prometheus.yml --web.enable-lifecycle &

#动态更新配置
curl -X POST http://localhost:9090/-/reload

 二、Prometheus操作面板和常见配置

操作面板:

常见的配置:

#全局配置,默认,可以被覆盖
global:
  scrape_interval: 15s  #全局的抓取间隔
  scrape_timeout: 10s  #抓取超时时间
  evaluation_interval: 15s  #评估间隔

#告警配置
alerting:
  alertmanagers: #告警管理器
  - follow_redirects: true #是否启用重定向
    enable_http2: true #是否启用HTTP2
    scheme: http
    timeout: 10s
    api_version: v2 #指定Alertmanager的API版本,此处为v2
    static_configs: #告诉Prometheus哪些目标是静态的(即不会更改),如果有多个目标,则可以在targets中指定多个地址。
    - targets: []

#抓取配置
scrape_configs:
- job_name: prometheus #任务名称
  honor_timestamps: true #指标的时间戳应该由服务器提供,而不是客户端在发送指标时提供的时间戳
  scrape_interval: 15s #抓取任务的时间间隔,即每15秒抓取一次。
  scrape_timeout: 10s  #抓取任务的超时时间,单位为秒,即每个目标最多等待10秒钟
  metrics_path: /metrics  #抓取指标的路径
  scheme: http #指定抓取时使用的协议,默认为http
  follow_redirects: true  #是否启用重定向。在此处启用
  enable_http2: true  #是否启用HTTP2
  static_configs:
  - targets:
    - 120.xxx.xx.xxx:9090 #目标配置,告诉Prometheus哪些目标需要抓取,如果有多个目标,则可以在targets中指定多个地址
    
#此处抓取了一个名为prometheus的任务,每隔15秒抓取一次localhost:9090上的/metrics路径,超时时间为10秒

三、Prometheus常用监控组件exporter配置

3.1 exporter是什么

向Prometheus提供监控样本数据的程序都可以被称为一个Exporter
它是Prometheus的指标数据收集组件,负责从目标Jobs收集数据
并把收集到的数据转换为Prometheus支持的时序数据格式
只负责收集,并不向Server端发送数据,而是等待Prometheus Server 主动抓取

3.2 有哪些exporter

Prometheus社区以及其他团队开发了大量的Exporter,覆盖了许多不同类型的系统和服务
比如:Node Exporter、MySQL Exporter、Redis Exporter、MongoDB Exporter、Nginx Exporter...

3.3 exporter怎么用

在主机上安装了一个 Exporter程序,该程序对外暴露了一个用于获取当前监控样本数据的HTTP访问地址
Prometheus通过轮询的方式定时从这些Target中获取监控数据样本,并且存储在数据库当中

3.4 实战 node_exporter 

node_exporter  用于采集类UNIX内核的硬件以及系统指标,包括CPU、内存和磁盘

步骤:

#解压
tar -zxvf node_exporter-1.6.0.linux-amd64.tar.gz
 
#进到目录里面,启动
nohup ./node_exporter &

#确认端口
lsof -i:9100

通过浏览器访问 http://IP+9100/metrics可以查看到监控信息

 启动后exporter后,就需要将exporter的地址配置到prometheus.yml中

Prometheus服务器中添加被监控机器的配置 vim  prometheus.yml,   target的也可以写ip

  - job_name: 'agent-1'
    static_configs:
      - targets: ['120.xxx.7.xxx:9100']

 动态更新配置 curl -X POST http://localhost:9090/-/reload

查看Web UI界面的target和configuration是否有对应的数据 

 3.5 其它exporter都怎么用

一样的步骤:

对应的机器安装exporter
启动exporter 并监听对应的程序
访问对应的exporter的metric路径,看是否返回数据
Prometheus配置新的job
访问Prometheus查看target和configuration是否有数据

四、Promethus整合新版SpringBoot3.X应用监控

Promethus整合SpringBoot3.X应用监控

4.1 pom.xml引入依赖:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
	

#暴露指定端点
management.endpoints.web.exposure.include=env,info,config,health

验证:访问 http://localhost:8080/actuator/prometheus, 查看详情

4.2 自定义健康检查

检查当前服务是否存活。继承AbstractHealthIndicator类,覆盖doHealthCheck方法,里面可以自定义up down。具体根据业务来设置即可

@Component
public class NanNanMQIndicator extends AbstractHealthIndicator {
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        //对比两个不同方法
        builder.up().withDetail("MQ中间件","这个自带高可用");

    }
}


@Component
public class NanNanMQIndicator extends AbstractHealthIndicator {
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        //对比两个不同方法
        builder.down().withDetail("DOWN MQ中间件","这个自带高可用");

    }
}

4.3 prometheus整合配置

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

编辑文件 prometheus.yml 15秒拉取一次应用服务数据

  - job_name: "springboot"
    scrape_interval: 15s
    scrape_timeout: 10s
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['120.xx.7.xx8080']

热更新配置 curl -X POST http://ip:9090/-/reload

 刚连接上,在promethus的界面就可以看到了== 界面不太好看==

五、可视化工具Grafana安装

5.1 什么是Grafana

它数据可视化工具,可以做数据监控和数据统计,带有告警功能。
面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件
比如热图、折线图、图表等多种展示方式

5.2有哪些常用的功能

报警:支持可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时进行告警

过滤器:过滤器允许动态创建新的键/值过滤器,这些过滤器将自动应用于使用该数据源的所有查询。
避免混淆各个组件主要的作用概念:
Exporter 数据生产者,采集需要监控的数据
Prometheus 普罗米修斯时序数据库,用来存储和查询的监控数据,从Exporter上拉取
Grafana 可视化工具仪表盘

5.3快速安装部署

 docker run -d -p 3000:3000 --name=nannanw-grafana grafana/grafana:8.1.5

 通过了浏览器访问http://IP+3000就能访问到登陆页面,默认用户名admin密码admin

5.4 配置prometheus数据源

 

 在这就可以看到设置后的数据源

5.5 Grafana的用户和组织

用户:

Grafana 里面用户有三种角色 admin,editor,viewer
admin 权限最高,可以执行任何操作,包括创建用户,新增 Datasource、DashBoard。
editor 角色不可以创建用户,不可以新增 Datasource,可以创建 DashBoard。
viewer 角色仅可以查看 DashBoard

新增用户后,可以分配角色

组织:
每个用户可以拥有多个 Organization,用户登录后可以在不同的 Organization 之间切换
不同的 Organization 之间完全不一样,包括 datasource,dashboard 等都不一样
创建一个 Organization 就相当于开了一个全新的视图,所有的 datasource,dashboard 等都要再重新开始创建

 5.6Grafana explore

explore和prometheus中的功能很相似

5.7Grafana最重要的dashboard

最重要 UI 界面 仪表盘,通过数据源定义好可视化的数据来源,Dashboard 来组织和管理数据可视化图表
仪表盘可以视为一组一个或多个面板组成的一个集合,来展示各种各样的面板。

第一步:

第二步:

再拖动到最下方点击'Use query'

然后就可以看到内存使用情况的图表展示

有没有发现,这样虽然可以展示出来,但是很麻烦?而且 样式没有那么炫酷,一个个调整起来也很费劲。

继续往下看~

 5.8 Grafana高效导入仪表盘

Grafana应用市场
地址:https://grafana.com/grafana/dashboards/

是Grafana社区和其他用户分享的可装载的仪表板和面板集合
Grafana模板使得共享可装载的仪表板变得容易,从而帮助用户减少了工作量,并促进了最佳设置和最佳配置的使用

举例:JVM相关监控仪表盘

点击  Copy ID to clipboard 

点击Import

在文本框中输入上一步的ID 点击load

然后就可以看到炫酷的仪表盘拉

根据上面的步骤,后续可以根据需要从应用市场中获取各个中间件的仪表数据进行展示

八、Promethus的监控告警Alertmanager

8.1 什么是Alertmanager

Prometheus的一个组件,用于定义和发送告警通知,内置多种第三方告警通知方式,同时还提供了对Webhook通知的支持
基于警报规则对规则产生的警报进行分组、抑制和路由,并把告警发送给合适的接收端,例如邮件、钉钉或Webhook

关键特点
分组:将详细的告警信息合并成一个通知,某些情况下,如由于系统宕机导致大量的告警被同时触发
抑制:当某一告警发出后,可以停止重复发送由此告警引发的其它告警的机制,避免告警轰炸
静默:根据标签对告警进行静默处理,如果接收到的告警符合静默的配置, Alertmanager则不会发送告警通知

8.2 Alertmanager安装

源码安装,默认端口9093
#解压
tar -zxvf alertmanager-0.24.0.linux-amd64.tar.gz
#启动
./alertmanager --config.file=alertmanager.yml
#守护进程方式启动
nohup ./alertmanager --config.file=alertmanager.yml &

访问 ip+port ,比如 http://112.74.xx.xxx:9093/#/alerts

8.3 Alertmanager邮件告警配置步骤

需求:部署的shop-project服务挂了,就触发邮件给开发人员

步骤:

1.Prometheus的rules.yaml编写告警规则,配置Prometheus,定义在哪些情况下被告警

Prometheus的rule.yaml(需要自己新建一个)配置文件

groups: # 告警规则组
- name: server-alarm
  rules: #规则,可以配置多个alert告警
  
  - alert: # 告警名称
    expr:  # 告警表达式,基于PromQL表达式告警触发条件,用于计算是否有时间序列满足该条件。
    for:  # 评估等待时间,可选,用于表示只有当触发条件持续一段时间后才发送告警,在等待期间新产生告警 的状态为pending。
    labels: #自定义标签,允许用户指定要附加到告警上的一组附加标签。
      severity:  # 告警严重程度
    annotations: #用于指定一组附加信息,比如用于描述告警详细信息的文字等
      summary: # 告警摘要
      description: # 告警详细描述

  配置Prometheus关联Alertmanager地址和rules规则启用   vim prometheus.yml

 动态更新配置 curl -X POST http://localhost:9090/-/reload

在这也可以看到

当前状态:

2.配置Alertmanager 添加Email、钉钉或者短信接收程序,为告警通知指定目标和通知媒介

Alertmanager的alertmanager.yml配置文件

主要包含两个部分:路由(route) + 接收器(receivers)
告警信息会从配置中的顶级路由(route)进入路由树,根据路由规则将告警信息发送给相应的接收器

global:
  smtp_smarthost: 'smtp.126.com:25' # SMTP服务器地址和端口
  smtp_from: '131131777337@126.com' # 显示在邮件“发件人”字段中的地址
  smtp_auth_username: '131131777337@126.com' # STMP认证时使用的用户名
  smtp_auth_password: 'VBZGEVZXTIEJFOHW' # SMTP认证时使用的密码,不是密码
  smtp_require_tls: false # SMTP服务器是否需要TLS加密

route:
  receiver: 'email' # 发送告警通知的收件人,和下面的接受者名称匹配
  group_wait: 10s # 在发送前等待各个警报的时间
  group_interval: 30s # 相同警报名称的警报发送间隔
  repeat_interval: 10m # 重复发送警报的时间间隔
  group_by: ['alertname'] # 根据警报名分组告警接收者

# 告警接收者
receivers:
- name: 'email' # 接收者名称
  email_configs:
  - to: '71111222333@qq.com' # 接收告警邮件的收件人

邮箱准备:126.com

 然后重启Alertmanager

 #启动
./alertmanager --config.file=alertmanager.yml

#守护进程方式启动
nohup ./alertmanager --config.file=alertmanager.yml &

 验证步骤:

停止spring boot程序(停止其他服务都可以)

查看prometheus

这是挂了后的 

查看alertmanager

查看邮件

到这就可以收到邮件告警提示拉~

九、Grafana的Alert监控告警

Grafana也有告警功能,两个组件各有优缺点
Grafana更适合于小规模或简单的监控系统,而Alertmanager更适合于大规模或更复杂的告警处理场景


9.1 Granfana的Alert和Alertmanager比对

Grafana
优点:简单易用,Grafana的告警规则配置界面直观易懂,可以方便地设置告警的触发条件、持续时间和通知方式等。
缺点:不支持高级告警逻辑。Grafana只能识别基于简单算术或表达式的逻辑,无法支持更复杂的逻辑。


Alertmanager
优点:提供高级告警逻辑功能,支持许多常用的高级告警逻辑,如静默、抑制和聚合等。
支持多通道分发告警,支持将告警通知分发到多个通道,如电子邮件,短信等,能够满足不同场景下的需求。
缺点:复杂和难以部署,Alertmanager的配置比Grafana更复杂,需要深入了解监控系统和告警系统。
学习成本高,Alertmanager需要学习更多的知识和技能才能掌握

9.2 Grafana的告警界面

9.3 Grafana新建推送通道

十、Grafana+钉钉群告警机器人

需求:使用Grafana的alert告警模块,检测应用是否存活
配置自动告警机器人,如果应用宕机超过1分钟,推送到钉钉群

10.1 实战步骤

先进一个钉钉群,然后添加机器人

选择自定义

IP地址段设置的意义就是,设置后 只有这个地址的才能往钉钉中推送消息。也可以自定义关键词,AND的关系。当自定义的关键词命中的时候,也可以往钉钉群里推送消息。三个复选框是AND的关系。

复制地址

10.2 Grafana新建推送通道

10.3 面板Panel配置告警规则

需要选中想要检测的服务

然后再创建Alert

IS ABOVE 填1。最新值在1之下的数据.选择 IS BELOW才可以!0表示服务挂了。

save后点击Test Rule

10.4 错误信息跳转

配置钉钉错误信息详情跳转连接:
docker exec -u 0 -it nannanw-grafana /bin/bash

需要修改容器中grafana的defaults.ini 

 将配置中domain = localhost 改成grafana部署的服务器IP地址即可

保存后需要退出容器。然后再重启容器

重启容器

10.5 结果验证

关闭服务

查看grafana alerting

然后钉钉群就收到告警提示拉!

点击连接之后,就可以直接跳转到Grafana的详细告警页面

到这本文就更新结束拉~主要介绍prometheus怎么和应用服务关联 以及 其它相关exporter关联起来,包括grafana中如何优雅的导入仪表盘 以及2种告警的配置~

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

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

相关文章

线程状态转换总结

1. NEW -> RUNNABLE 创建线程后是 NEW 状态&#xff08;只是 Java 层面新建的&#xff0c;还没有关联到操作系统实际的线程上&#xff09;&#xff0c;调用线程的 start() 方法会将 Java 线程和操作系统的线程关联起来&#xff0c;进入 RUNNABLE 状态 2. RUNNABLE <->…

入门PHP就来我这(纯干货)05

~~~~ 有胆量你就来跟着路老师卷起来&#xff01; -- 纯干货&#xff0c;技术知识分享 ~~~~ 路老师给大家分享PHP语言的知识了&#xff0c;旨在想让大家入门PHP&#xff0c;并深入了解PHP语言。 1 数组及创建 数组&#xff0c;顾名思义&#xff0c;本质上就是一系列数据的组合…

【Linux进程通信】使用匿名管道制作一个简单的进程池

进程池是什么呢&#xff1f;我们可以类比内存池的概念来理解进程池。 内存池 内存池是在真正使用内存之前&#xff0c;先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时&#xff0c;就从内存池中分出一部分内存块&#xff0c;若内存块不够再继…

docker-compose搭建prometheus、grafana

一、安装prometheus 1、安装 version: 3.1services:prometheus:image: prom/prometheus:v2.48.0container_name: prometheushostname: prometheusrestart: alwaysvolumes:- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml- ./prometheus/:/etc/prometheus/port…

淘宝扭蛋机小程序开发,新玩法、新收益体验!

近几年&#xff0c;随着娱乐消费的火爆&#xff0c;潮玩市场得到了快速发展&#xff0c;从而带动了扭蛋机市场的发展&#xff0c;扭蛋机也逐渐风靡在消费市场中。对于年轻人消费者来说&#xff0c;愿意为扭蛋机的热门IP商品而买单。目前&#xff0c;价格低、颜值高、种类多样的…

大科技公司大量裁员背后的真相

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

试用笔记之-汇通计算机等级考试软件一级Windows

首先下载汇通计算机等级考试软件一级Windows http://www.htsoft.com.cn/download/htwork.rar

JavaMySQL 学习(基础)

目录 Java CMD Java发展 计算机存储规则 Java学习 switch新用法&#xff08;可以当做if来使用&#xff09; 数组定义 随机数 Java内存分配 MySQL MySQL概述 启动和停止 客户端连接 数据模型 关系型数据库 SQL SQL通用语法 SQL分类 DDL--数据定义语言 数据库…

时间复利效应才是人生的催化剂

在追求成功的道路上&#xff0c;许多人都在寻找捷径。然而&#xff0c;真正的捷径并非不劳而获的幻想&#xff0c;而是通过长期坚持在某一领域深耕细作&#xff0c;享受时间复利效应带来的巨大收益。本文将探讨如何选择合适的领域并长期坚持下去&#xff0c;以实现成功。 时间…

Agent 学习笔记

近年来&#xff0c;人工智能领域取得了重大进展&#xff0c;人工智能代理现在能够处理复杂的任务。尽管取得了这些进展&#xff0c;但有效地并行和协调多个人工智能代理协同工作仍然是一个挑战。 一群智能体可以理解为一组智能体在单个环境中共同共存&#xff0c;该环境可以相…

不用找了!这个软件自带各行业话术,客服效率飞跃

有一款客服工具软件&#xff0c;不但能吸附聊天窗口&#xff0c;实现图文视频话术的一键发送&#xff0c;还内置了多行业的优质客服话术模板&#xff0c;允许用户直接下载使用&#xff0c;快速构建起适合自身企业的专业客服知识库。 前言 在今天的快节奏商业环境中&#xff0c…

The Sandbox 通过创作者挑战赛推动社区参与

游戏开发者并不是每天都有机会让自己的作品赢得大奖。但在 The Sandbox&#xff0c;这已经成为一种趋势&#xff01;首届 "创作者挑战赛 "让顶尖创作者将 150 万 SAND 捧回家。现在&#xff0c;我们要带着另一个巨额奖池回来了&#xff01; 关于首届创作者挑战赛&…

PCIe Switch

如图所示&#xff0c;pcie Switch 被定义为多个虚拟PCI-to-PCI Bridge设备的逻辑集合。所有交换机由以下基本规则管理。 . Switch在配置软件中表现为两个或多个逻辑PCI-to-PCI桥 不需要支持下行端口作为锁定请求的发起端口. 每个enable的端口必须符合“流量控制”规范。 .S…

aclStream流处理多路并发Pipeline框架中VEncode Module代码调用流程整理、类的层次关系整理、回调函数赋值和调用流程整理

目录 1 代码调用详细流程 2 类的层次关系 3 回调函数的赋值和调用流程 参考文献&#xff1a; 将寒武纪的CNStream适配到华为昇腾平台&#xff0c;并起名aclStream&#xff0c;整理了下华为昇腾平台aclStream中VEncode Module的代码调用流程、类的层次关系以及回调函数的赋值…

(九)绘制彩色三角形

前面的学习中并未涉及到颜色&#xff0c;现在打算写一个例子&#xff0c;在顶点着色器和片元着色器中加入颜色&#xff0c;绘制有颜色的三角形。 #include <glad/glad.h>//glad必须在glfw头文件之前包含 #include <GLFW/glfw3.h> #include <iostream>void …

数据加密解密和哈希的解析

[S1301]数据的加解密 对提供的原始数据&#xff08;字符串或者二进制数组&#xff09;进行加密是数据保护框架体提供的基本功能&#xff0c;接下来我们利用一个简单的控制台程序来演示一下加解密如何实现。数据的加解密均由IDataProtector对象来完成&#xff0c;而该对象由IDa…

React+TS 从零开始教程(4):useEffect

上一节传送门&#xff1a;ReactTS 从零开始教程&#xff08;3&#xff09;&#xff1a;useState 源码链接&#xff1a;https://pan.quark.cn/s/c6fbc31dcb02 上一节&#xff0c;我们已经学会了React的第一个Hook&#xff1a;useState。 这一节&#xff0c;我们要学习的是另一…

2024年江西省研究生数学建模竞赛A题交通信号灯管理论文和代码分析

经过不懈的努力&#xff0c;2024年江西省研究生数学建模竞赛A题论文和代码已完成&#xff0c;代码为A题全部问题的代码&#xff0c;论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解&#xff08;问题1模型的建立和求解、问题2模型的建立和求解、问题3模…

作业7.2

用结构体数组以及函数完成: 录入你要增加的几个学生&#xff0c;之后输出所有的学生信息 删除你要删除的第几个学生&#xff0c;并打印所有的学生信息 修改你要修改的第几个学生&#xff0c;并打印所有的学生信息 查找你要查找的第几个学生&#xff0c;并打印该的学生信息 1 /*…

Qt中使用MySQL数据库详解,好用的模块类封装

本文将详细介绍如何在Qt应用程序中集成MySQL数据库&#xff0c;并封装实现好用的mysql数据库操作类。包括环境准备、连接数据库、执行查询及异常处理等关键步骤&#xff0c;同时包含mysql驱动的编译。分享给有需要的小伙伴&#xff0c;喜欢的可以点击收藏。 目录 环境准备 项…