如何在Dynatrace中跟踪Java方法调用并获取警报?

问题描述

我有一个与以下代码相似的代码。每次出现DBLock时,我都希望在Dynatrace中得到一个警报,以创建一个问题,以便可以在仪表板上看到它,并可能还会收到电子邮件通知。如果更新计数大于1,则会出现DB锁定。

 private int removeDBLock(DataSource dataSource) {
   
    int updateCount = 0;
    final Timestamp lastAllowedDBLockTime = new Timestamp(System.currentTimeMillis() - (5 * 60 * 1000));
    final String query = format(RELEASE_DB_CHANGELOCK,lastAllowedDBLockTime.toString());
    try (Statement stmt = dataSource.getConnection().createStatement()) {
        updateCount = stmt.executeUpdate(query);
        if(updateCount>0){
            log.error("Stale DB Lock found. Locks Removed Count is {} .",updateCount);
        }
    } catch (SQLException e) {
        log.error("Error while trying to find and remove Db Change Lock. ",e);
    }
    return updateCount;
}

我尝试使用事件API触发此处提到的主机上的事件,并成功在仪表板上引发问题警报。

https://www.dynatrace.com/support/help/dynatrace-api/environment-api/events/post-event/?request-parameters%3C-%3Ejson-model=json-model

但这意味着在我的代码中注入一个api调用只是为了监视,任何调用都可能导致更多的外部依赖关系,因此有更多的失败机会。

我还尝试通过在自定义服务中添加包含此方法的类和方法本身来创建自定义服务检测。但是我不知道如何将其链接到在仪表板上造成问题的警报或事件。

在Dynatrace中是否有任何最佳实践或解决方案。任何线索都将有所帮助。

解决方法

我来看看Custom Services for Java,它将导致对该方法的调用进行更详细的监视。

也许您可以提取实际引发异常的方法以及处理异常的外部方法。然后应该可以对异常发出警报。

还有其他一些通过设置来配置服务的方法,即直接基于返回值引发错误。

另请参阅文档:

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...