如何在Elastalert中将@timestamp调整为本地时区

时间:2016-09-29 06:54:21

标签: elastalert

我试图调整适合我的时区的返回日期时间值。我的通知如下:

An abnormally low number of events occurred around 2016-09-28 22:49 CEST.

这是适合我的时区的正确日期。 在通知I的字段中,我获得了UTC-0区域的时间:

@timestamp: 2016-09-28T20:49:44.711696Z

我试过这种方式使用Enhancement, 文件..\elastalert\elastalert_modules

from datetime import datetime
from elastalert.enhancements import BaseEnhancement

class TimeEnhancement(BaseEnhancement):
    def process(self, match):
        if '@timestamp' in match:
            now = datetime.now()
            hours2 = datetime(0, 0, 0, 2, 0, 0)
            match['@timestamp'] = now + hours2

我还在规则中添加用法:

match_enhancements:
- "elastalert_modules.my_enhancements.TimeEnhancement"

它仅用于测试,而不是用于最终解决方案

2 个答案:

答案 0 :(得分:0)

在github上有一些帮助我设法得到了一些有效的东西(我认为它将日期时间格式化为服务器运行的同一时区)

from elastalert.util import pretty_ts
from elastalert.enhancements import BaseEnhancement


class TimeEnhancement(BaseEnhancement):
    def process(self, match):
        for k, v in match.items():
            if isinstance(v, basestring) and v.endswith('Z'):
                try:
                    match[k] = pretty_ts(v)
                except:
                    pass

答案 1 :(得分:0)

@Peter的替代方法,因为我只需要一个具有本地时间的字段。

Suggestion