用于检测Java应用程序日志中异常的Kibana过滤器

q1qsirdb  于 2022-12-09  发布在  Kibana
关注(0)|答案(1)|浏览(276)

我正在尝试编写一个ELK-Watcher,以便在Java应用程序日志中出现任何异常时发送警报。
我们的应用程序日志已经在ElasticSearch中被索引。在***log_message***字段下,我可以索引日志消息或异常消息(在异常的情况下)沿着异常跟踪。
比如说
在正常情况下(无例外),***log_message***字段的值如下所示。

Executing task using ExecutorService

但在异常情况下,***log_message***字段有如下内容

Exception while executing task : java.util.concurrent.CancellationException [StackTrace Hash 38fe72fbd18c26e8cd74b0a3c196c1441f1814e10224a323f83ec105dd355f10]
java.util.concurrent.CancellationException
        at java.util.concurrent.FutureTask.report(FutureTask.java:121)
        at java.util.concurrent.FutureTask.get(FutureTask.java:192)
        at com.comp.tasks.TaskExecutor$MDCFuture.get(TaskExecutor.java:103)
        at com.comp.tasks.TaskExecutor.afterExecute(TaskExecutor.java:239)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1157)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

以上两个只是示例log_message,但异常可以源自应用程序中具有不同异常消息或异常跟踪任何其他类
我想编写ELK-Watcher并使用Kibana-filter-query-DSL来检测log_message字段是否包含异常。
我尝试了许多不同的Kibana-filter-query-dsl来过滤出log_message***,并进行异常跟踪,但是没有一个成功。
是否可以写入任何Kibana-filter-query-dsl,以便通过在
log_message字段中查找
\n\达特***来检测异常?请帮助。

xqkwcwgp

xqkwcwgp1#

您可以尝试搜索StackTraceat java.lang.Thread.run,它们将可用于所有堆栈跟踪。您可能会得到一些意外的结果,但它将涵盖大多数情况。
下面是您可以尝试的查询:

{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "message": "at java.lang.Thread.run"
          }
        },
        {
          "match": {
            "severity": "ERROR"
          }
        }
      ]
    }
  }
}

相关问题