使用 Elastic/Kibana 搜索日志条目频率的模式?
Using Elastic/Kibana to search for patterns in frequency of log entries?
我需要从日志中提取数百万个条目(跨越过去几年),并以某种方式使用时间戳字段确定哪些时间段(使用星期几作为分组标准)显示最少activity。
目标是表明,例如,02:00 和 04:00 之间的星期三在历史上显示了 activity 的最低水平。
所以,我想象一个图表,X 轴上有时间段(00:00 - 00:14、00:15 - 00:29、00:30 - 00:44...或类似的...你明白了)和 Y 轴上 log activity 的某种表示形式。它将显示 7 条图表线,一条代表一周中的每一天。这将使从图中确定哪个时期最安静变得微不足道。
我以前没有亲自使用过 Kibana,但据我所知,这似乎是完成此类任务的最佳工具。
是否有功能或插件,或者某物已经具备此功能?还是我需要为此开发自定义解决方案?
最后我放弃了Kibana/Elastic。可能有一种方法可以做到,但我只是使用 MySQL:
SELECT
t.bucket,
COALESCE(SUM(total), 0) AS total
FROM
tmp_time_bucket t
LEFT JOIN
(SELECT
DATE_FORMAT(FROM_UNIXTIME(FLOOR((UNIX_TIMESTAMP(launchtime)) / 300) * 300), '%H:%i:00') AS bucket,
COUNT(launchtime) AS total
FROM
launchjobs
WHERE
launchtime <> '0000-00-00 00:00:00'
AND DAYNAME(launchtime) = 'wednesday'
GROUP BY FROM_UNIXTIME(FLOOR((UNIX_TIMESTAMP(launchtime)) / 300) * 300)
ORDER BY launchtime ASC) m ON t.bucket = m.bucket
GROUP BY bucket
ORDER BY bucket ASC
...其中 tmp_time_bucket
是一个 table,带有一个名为 bucket
的 VARCHAR(8) 列,其中包含 24 小时内的所有 288 个 5 分钟时间段(因此,"00:00:00", "00:05:00", ... "23:50:00", "23:55:00"
,你懂的)
我运行这7次,每天一次,并将结果集导出到CSV。然后我用了http://plot.ly and imported the data and made the graph that I needed, which (if you're interested) can be seen here: https://plot.ly/~theplankmeister/7/?share_key=FZERWAphDIQsa1swGtixb7
查看图表,我可以很容易地看出我在数据中寻找的答案是星期四 22:45 到星期五 00:55。
希望这对以后的人有所帮助!
我需要从日志中提取数百万个条目(跨越过去几年),并以某种方式使用时间戳字段确定哪些时间段(使用星期几作为分组标准)显示最少activity。 目标是表明,例如,02:00 和 04:00 之间的星期三在历史上显示了 activity 的最低水平。 所以,我想象一个图表,X 轴上有时间段(00:00 - 00:14、00:15 - 00:29、00:30 - 00:44...或类似的...你明白了)和 Y 轴上 log activity 的某种表示形式。它将显示 7 条图表线,一条代表一周中的每一天。这将使从图中确定哪个时期最安静变得微不足道。
我以前没有亲自使用过 Kibana,但据我所知,这似乎是完成此类任务的最佳工具。
是否有功能或插件,或者某物已经具备此功能?还是我需要为此开发自定义解决方案?
最后我放弃了Kibana/Elastic。可能有一种方法可以做到,但我只是使用 MySQL:
SELECT
t.bucket,
COALESCE(SUM(total), 0) AS total
FROM
tmp_time_bucket t
LEFT JOIN
(SELECT
DATE_FORMAT(FROM_UNIXTIME(FLOOR((UNIX_TIMESTAMP(launchtime)) / 300) * 300), '%H:%i:00') AS bucket,
COUNT(launchtime) AS total
FROM
launchjobs
WHERE
launchtime <> '0000-00-00 00:00:00'
AND DAYNAME(launchtime) = 'wednesday'
GROUP BY FROM_UNIXTIME(FLOOR((UNIX_TIMESTAMP(launchtime)) / 300) * 300)
ORDER BY launchtime ASC) m ON t.bucket = m.bucket
GROUP BY bucket
ORDER BY bucket ASC
...其中 tmp_time_bucket
是一个 table,带有一个名为 bucket
的 VARCHAR(8) 列,其中包含 24 小时内的所有 288 个 5 分钟时间段(因此,"00:00:00", "00:05:00", ... "23:50:00", "23:55:00"
,你懂的)
我运行这7次,每天一次,并将结果集导出到CSV。然后我用了http://plot.ly and imported the data and made the graph that I needed, which (if you're interested) can be seen here: https://plot.ly/~theplankmeister/7/?share_key=FZERWAphDIQsa1swGtixb7
查看图表,我可以很容易地看出我在数据中寻找的答案是星期四 22:45 到星期五 00:55。
希望这对以后的人有所帮助!