使用elasticsearch Watcher分析apache访问日志

时间:2015-11-20 16:14:35

标签: access-log elasticsearch-watcher

我正在使用ELK Stack来分析日志,我需要分析和检测apache访问日志的异常。我可以使用apache访问日志分析什么?我应该如何向Watcher提供curl -XPUT的条件?

1 个答案:

答案 0 :(得分:0)

如果你还没有找到,那么https://www.elastic.co/guide/en/watcher/watcher-1.0/watch-log-data.html就是一个不错的教程。它提供了创建日志监视的基本示例。

您可以分析/观看您可以在Elasticsearch中查询的任何内容。只需使用正确的JSON语法格式化查询即可。制定条件的指南是https://www.elastic.co/guide/en/watcher/watcher-1.0/condition.html

您还需要查看https://www.elastic.co/guide/en/watcher/watcher-1.0/actions.html以了解观察者在查询满足条件时可以执行的操作。

就Watcher的帖子而言,每个手表本质上都是一个JSON对象。因为它们可以非常精细,我发现最好为你想要创建的每个手表创建一个文件,并将它们发布如下:

curl -XPUT http://my_elasticsearch:9200/_watcher/watch/my_watch_name -d @/path/to/my_watch_name.json

my_watch_name.json应该具有这些基本元素(如上面第一个链接所述):

{
  "trigger" : { ... },
  "input" : { ... },
  "condition" : { ... },
  "actions" : { ... }
}

“操作”部分将特定于您的用例,但这是我成功使用的其他部分的基本示例:

{
  "trigger" : {
      "schedule" : { "interval" : "5m" }
  },
  "input" : {
    "search" : {
      "request" : {
        "indices" : [ "logstash" ],
        "body" : {
          "query" : {
            "filtered" : {
              "query" : {
                "match" : { "message" : "error" }
              },
              "filter" : {
                "range" : { "@timestamp" : { "gte" : "now-5m" } }
              }
            }
          }
        }
      }
    }
  },
  "condition" : {
    "compare" : { "ctx.payload.hits.total" : { "gt" : 0 } }
  },
  "actions" : {
    ...
  }
}