springboot项目中实现访问druid内置监控页面

yizhihongxing

以下是在springboot项目中实现访问druid内置监控页面的完整攻略:

1. 添加druid依赖

pom.xml文件中添加druid依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>${druid.version}</version>
</dependency>

2. 配置druid数据源

application.properties文件中添加druid数据源的配置项,如下所示:

# druid数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# druid连接池配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=2
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=0
spring.datasource.druid.max-wait=60000
spring.datasource.druid.validation-query=select 1 from dual
spring.datasource.druid.filters=log4j,stat,wall
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=1000

# druid监控配置
spring.datasource.druid.monitor-stat-view-servlet.enabled=true
spring.datasource.druid.monitor-stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.monitor-stat-view-servlet.reset-enable=true

spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=1000

其中,spring.datasource.druid.monitor-stat-view-servlet.enabled=true表示开启druid监控页面访问功能;spring.datasource.druid.monitor-stat-view-servlet.url-pattern=/druid/*表示访问druid监控页面的路径;spring.datasource.druid.monitor-stat-view-servlet.reset-enable=true表示重置数据源的时候是否清空所有的监控数据。

3. 配置Servlet和Filter

WebConfig.java文件中配置Servlet和Filter,如下所示:

@Configuration
public class WebConfig {
    @Bean
    public ServletRegistrationBean druidServlet() {
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        // IP白名单
        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
        // IP黑名单(共同存在时,deny优先于allow)
        servletRegistrationBean.addInitParameter("deny", "");
        // 控制台管理用户
        servletRegistrationBean.addInitParameter("loginUsername", "admin");
        servletRegistrationBean.addInitParameter("loginPassword", "admin");
        // 是否允许重置数据
        servletRegistrationBean.addInitParameter("resetEnable", "false");
        return servletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean druidFilter() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        // 添加过滤规则
        filterRegistrationBean.addUrlPatterns("/*");
        // 监控选项滤器
        filterRegistrationBean.addInitParameter("DruidWebStatFilter", "/*");
        // 添加忽略的格式化类型
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }
}

其中,allow表示允许访问druid监控页面的ip地址,可以配置多个,用逗号隔开;loginUsernameloginPassword表示druid监控页面的登录用户名和密码;resetEnable表示是否允许重置数据;addUrlPatterns表示添加过滤规则,这里表示所有连接都需要经过过滤;addInitParameter表示添加过滤器的参数,DruidWebStatFilter表示监控选项滤器,这里设置为/*,表示所有的url请求都要进行数据监控,exclusions表示要忽略的格式化类型,多个之间用逗号隔开。

4. 访问druid监控页面

在浏览器中输入http://127.0.0.1:8080/druid,就可以访问druid监控页面了。登录的用户名和密码与上面在ServletRegistrationBean中配置的loginUsernameloginPassword保持一致。

示例说明

示例1:添加IP白名单

在ServletRegistrationBean中添加allow参数,如下所示:

@Bean
public ServletRegistrationBean druidServlet() {
    ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
    // IP白名单
    servletRegistrationBean.addInitParameter("allow", "127.0.0.1,192.168.1.100");
    // 控制台管理用户
    servletRegistrationBean.addInitParameter("loginUsername", "admin");
    servletRegistrationBean.addInitParameter("loginPassword", "admin");
    // 是否允许重置数据
    servletRegistrationBean.addInitParameter("resetEnable", "false");
    return servletRegistrationBean;
}

这里添加了一条allow记录,表示允许127.0.0.1192.168.1.100这两个IP地址访问druid监控页面。

示例2:忽略指定类型的请求

在FilterRegistrationBean中添加exclusions参数,如下所示:

@Bean
public FilterRegistrationBean druidFilter() {
    FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
    // 添加过滤规则
    filterRegistrationBean.addUrlPatterns("/*");
    // 监控选项滤器
    filterRegistrationBean.addInitParameter("DruidWebStatFilter", "/*");
    // 添加忽略的格式化类型
    filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
    return filterRegistrationBean;
}

这里添加了一条exclusions记录,表示在访问druid监控页面时,不对*.js,*.gif,*.jpg,*.png,*.css,*.ico/druid/*这些请求进行数据监控。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot项目中实现访问druid内置监控页面 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 基于Vue技术实现递归组件的方法

    基于Vue技术实现递归组件的方法,主要是使用Vue的组件化特性和递归引用组件的方式来实现。下面,我们来详细讲解该攻略。 1.创建组件 首先,我们需要创建一个组件,用来展示递归的效果。在组件中,我们需要定义递归的终止条件,以及如何渲染递归的子组件。具体代码如下: <template> <div> <span>{{ item.…

    other 2023年6月27日
    00
  • 用指定用户名访问共享文件

    访问Windows共享文件时,可以指定用户名和密码进行认证。以下是一些步骤和示例来演示如何使用指定用户名访问Windows共享文件。 步骤 打开资源管理器,输入 \\[IP地址或主机名],可以看到共享文件夹。 右键点击文件夹,选择“映射网络驱动器”,勾选“连接时使用其他凭据”。 输入用户名和密码,点击“完成”。 根据需要调整权限和映射的驱动器盘符,点击“完成…

    other 2023年6月27日
    00
  • Redis如何实现数据库读写分离详解

    以下是关于Redis如何实现数据库读写分离的完整攻略,包含两个示例说明: 1. 配置主从复制 在Redis的配置文件中,设置主服务器和从服务器的相关配置。 示例说明: # 主服务器配置 bind 127.0.0.1 port 6379 # 从服务器配置 slaveof 127.0.0.1 6379 2. 使用读写分离代理 使用读写分离代理工具,如Twempr…

    other 2023年10月19日
    00
  • linuxvi查找命令

    LinuxVI查找命令 LinuxVI是Linux服务器上的一种文本编辑工具。在使用VI编辑器时,我们有时需要快速查询文本中的内容,这时候查找命令就显得尤为重要。LinuxVI提供了多种查找命令来方便我们快速查询文本内容。 /命令 在VI编辑器中,输入/(斜线)后,会提示输入要查找的字符串。VI会在光标所在位置之后查找这个字符串,并将光标定位到第一个匹配的位…

    其他 2023年3月29日
    00
  • usb协议基础知识

    USB协议基础知识 什么是USB协议 USB全称为Universal Serial Bus(通用串行总线),是一种广泛应用于连接计算机及外部设备的接口标准。USB协议是一个计算机标准,规定了连接电脑和外围设备之间的通信规则。它为计算机和各类设备(包括键盘、鼠标、音频设备、视频设备、打印机等)的连接提供了一种常用的、低成本、易于使用的接口,便于实现各类设备的功…

    其他 2023年3月28日
    00
  • 小米手机4的内存速度怎么样?eMMC 5.0速度快不快?

    小米手机4采用了eMMC 5.0存储技术,它的内存速度相对较快。eMMC 5.0是一种闪存存储解决方案,它采用了高速的MMC(多媒体卡)接口,提供了更快的数据传输速度和更好的性能。 eMMC 5.0的速度主要受到两个因素的影响:读取速度和写入速度。下面是两个示例说明: 读取速度:小米手机4的eMMC 5.0存储器具有较快的读取速度,这对于快速加载应用程序和文…

    other 2023年8月1日
    00
  • Java跳出多重嵌套循环代码实例

    当我们在编写Java程序时,有时候需要在多重嵌套循环中跳出循环。Java提供了几种方法来实现这个目标,下面是两个示例说明。 示例一:使用标签(Label)和break语句 public class NestedLoopExample { public static void main(String[] args) { outerLoop: // 定义外部循环…

    other 2023年7月28日
    00
  • delphi“div”、“mod”、“”除法运算符的区别与使用方法

    Delphi中div和mod除法运算符的区别与使用方法 Delphi是一种基于Pascal语言的面向对象编程语言,与其他编程语言一样,除法运算符也是一个常见的操作。除法运算符在Delphi中有三种常见的形式,分别是/(普通除法)、div(整数除法)和mod(取模运算符)。 底层实现 对于任何一种计算机语言中的除法运算符,其底层实现都是一样的。在计算机中,所有…

    其他 2023年3月29日
    00
合作推广
合作推广
分享本页
返回顶部