开发者社区> 问答> 正文

druid jmx 监控 DruidDataSource

druid jmx 监控 DruidDataSource ,配置的datasource 每次重启 id 发生变化,有没有起他方式可以固定监控到,而不用每次重启要修改 jmx 监控的 datasource id ?

原提问者GitHub用户weiboyiyou

展开
收起
山海行 2023-07-05 21:22:51 154 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    是的,您可以通过配置Druid的JMX监控,来固定监控数据源,而不需要每次重启时修改JMX监控的数据源ID。

    2023-07-30 09:51:36
    赞同 展开评论 打赏
  • 可以自己写代码: public class Jmxfordruid { public static void main(String[] args) throws Exception { if (args.length<=0){ System.out.print("使用方式:请数据jmx地址,监控主备的数据源,已经监控属性!"); System.exit(1); } String addr=args[0]; String flag=args[1]; //master slave noslave String attr=args[2]; String jmxurl="service:jmx:rmi:///jndi/rmi://"+addr+"/jmxrmi"; //"service:jmx:rmi:///jndi/rmi://192.168.32.12:59067/jmxrmi" JMXServiceURL url = new JMXServiceURL(jmxurl); JMXConnector conn = JMXConnectorFactory.connect(url); MBeanServerConnection mbsc = conn.getMBeanServerConnection(); Set mbeans = mbsc.queryNames(null,null); for (ObjectName ob : mbeans) { if(ob.toString().contains("com.alibaba.druid:type=DruidDataSource,id")){ ObjectName datasource = new ObjectName(ob.toString()); if(flag.contentEquals("slave")){ if(mbsc.getAttribute(datasource,"Url").toString().contains("bak")){ System.out.println(mbsc.getAttribute(datasource,attr)); } } if(flag.contentEquals("master")){ if(!(mbsc.getAttribute(datasource,"Url").toString().contains("bak"))){ System.out.println(mbsc.getAttribute(datasource,attr)); } } } } } }

    原回答者GitHub用户weiboyiyou

    2023-07-06 11:53:42
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

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