开发者社区> 问答> 正文

配置多个数据源,监控页面却只有一个

druid版本:1.0.18 测试用配置:

四个数据源除了用户名和密码不一致以外,其他配置一模一样(包括url), 在监控界面就只能看到配置的第一个数据源(merchants) 请问这是为啥,应该怎么配置才能显示出所有的

原提问者GitHub用户langyan1022

展开
收起
山海行 2023-07-05 21:55:52 276 0
4 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    配置多个数据源时,需要为每个数据源创建一个对应的DruidDataSource实例,并分别指定不同的监控统计信息,例如url、username、password等。然后,可以将这些DruidDataSource实例添加到Druid的监控管理平台中,从而实现对多个数据源的监控。

    如果监控页面只显示一个数据源,可能是因为未正确配置Druid数据源或者未将多个数据源添加到Druid监控平台中。针对这个问题,可以尝试以下几个解决方案:

    检查数据源配置
    需要检查对于每个数据源的DruidDataSource实例的配置是否正确。确保每个数据源的url、username、password等参数设置正确,可以通过在代码中打印这些参数的值来进行验证。

    检查监控平台配置
    需要检查Druid监控平台的配置是否正确。例如,需要在web.xml中配置Druid的Servlet和Filter,并指定监控平台的访问路径;同时,还需要在Druid监控平台中添加多个数据源,以便对多个数据源进行监控。

    检查数据源的命名
    需要检查每个数据源的命名是否唯一。如果多个数据源的命名相同,可能会导致Druid监控平台无法正确识别多个数据源,从而无法正确显示监控信息。

    检查监控平台的权限配置
    需要检查Druid监控平台的权限配置是否正确。如果权限配置不正确,可能会导致无法正常访问Druid监控平台,从而无法正确显示监控信息。可以通过配置类似于下面的代码片段来设置Druid监控平台的访问权限:

    sqf
    Copy


    loginUsername
    admin


    loginPassword
    123456


    allow
    127.0.0.1


    deny


    其中,loginUsername和loginPassword指定Druid监控平台的登录用户名和密码,allow和deny指定Druid监控平台的访问权限。

    2023-07-30 09:36:13
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    您在配置监控页面时遇到了仅显示一个数据源的问题。这可能是由于监控页面的配置出现了一些问题。以下是一些可能导致此问题的原因和解决方法:

    1. 检查监控页面配置:确保您在监控页面的配置中正确指定了所有的数据源。请检查配置文件中的连接字符串、用户名和密码设置,以确保与每个数据源的配置一致。

    2. 检查数据源连接状态:确认所有数据源的连接状态正常。您可以使用类似Ping命令或其他网络工具来验证与每个数据源的连接是否正常。

    3. 检查Druid版本:请注意,旧版本的Druid可能存在一些限制或问题。建议将您的Druid版本升级到最新版本,以确保已解决任何已知问题。

    4. 检查监控页面的数据源配置限制:某些监控页面可能对数据源数量有限制。请在监控页面的文档或官方资源中查找有关最大数据源数量的信息,并确保您的配置在此限制范围内。

    如果您仍然无法解决问题,请提供更详细的错误或配置信息,以便我能更好地帮助您解决问题。

    2023-07-11 16:10:02
    赞同 展开评论 打赏
  • 后来试出来了,只有程序中用过的数据源,监控页面才可以看到

    原回答者GitHub用户langyan1022

    2023-07-06 12:30:17
    赞同 展开评论 打赏
  • 出现这种情况的原因可能是因为Druid连接池的监控页面默认只显示一个数据源的信息。要在监控页面上显示多个数据源的信息,您需要进行以下配置:

    1. 在web.xml中配置Druid的StatViewServlet和WebStatFilter:
    <servlet>
        <servlet-name>DruidStatView</servlet-name>
        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
        <init-param>
            <param-name>resetEnable</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>loginUsername</param-name>
            <param-value>admin</param-value>
        </init-param>
        <init-param>
            <param-name>loginPassword</param-name>
            <param-value>admin</param-value>
        </init-param>
        <init-param>
            <param-name>allow</param-name>
            <param-value>127.0.0.1</param-value>
        </init-param>
        <init-param>
            <param-name>deny</param-name>
            <param-value></param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DruidStatView</servlet-name>
        <url-pattern>/druid/*</url-pattern>
    </servlet-mapping>
    
    <filter>
        <filter-name>DruidWebStatFilter</filter-name>
        <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
        <init-param>
            <param-name>exclusions</param-name>
            <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>DruidWebStatFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    1. 在Druid连接池的配置中,为每个数据源配置一个唯一的druid.stat-view-servlet.url-pattern参数,以区分不同的数据源。例如:
    # 数据源1
    spring.datasource.druid.stat-view-servlet.url-pattern=/druid1/*
    # 数据源2
    spring.datasource.druid.stat-view-servlet.url-pattern=/druid2/*
    # 数据源3
    spring.datasource.druid.stat-view-servlet.url-pattern=/druid3/*
    ...
    

    通过上述配置,每个数据源将会在不同的URL路径下显示在监控页面上,例如/druid1//druid2//druid3/等。

    以上配置中的URL路径可以根据您的需求进行修改。

    2023-07-06 09:18:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载