Splunk Search

エラーの初回発生日をカウントしたい

tonakano
Engager

ご教授ください。

複数端末のログ情報を集計しています。
その中で、ある特定のエラーが発生した日がいつで、それが端末の稼働時間のどのタイミングかを一定のレンジでまとめたいと考えています。
現在の総エラー数であれば、eval rang=case(xxx のような形で集計は出来るのは分かったのですが、最初のエラー発生までのカウントとなると、集計方法がよく分かりません。
どのようにすれば、集計できるかご教授をお願い致します。

[やりたいこと]
端末集計データ全部:allData
特定するエラー:A

Aの発生までのデータを抽出し、稼働時間のレンジ(1日未満、1週間未満、1月未満・・・)での集計を行いたい。
エラーAは、継続して出力されるため一番最初に発生以降はカウントの対象外としたい。

宜しくお願いします。

Tags (1)
0 Karma
1 Solution

to4kawa
Ultra Champion
| makeresults count=30
| streamstats count
| eval host="host_".count
| eval time_args_start="-".(random() % 10 + 6)."d@h"
| eval time_args_error="-".(random() % 100 + 1)."h@h"
| eval start_time=relative_time(_time,time_args_start)
| eval error_time=relative_time(_time,time_args_error)
| foreach *_time 
    [eval <<FIELD>>_c = strftime(<<FIELD>>,"%Y/%m/%d %H:%M")]
 `comment("this is sample data")`
| eval tbf=error_time-start_time
| convert dur2sec(tbf) as tbf
| eval error_occur=case(tbf < 60 * 60 * 24 * 7, "week",tbf < 60 * 60 * 24 * 30 , "month", true(), "other")
| stats count by error_occur

サンプルデータとして、適当に端末(host)と稼働開始時間(start_time)、エラー発生時間(error_time)を作りました。
そこからエラー発生間隔(tbf)を計算して、発生時期(error_occur)により数を数えています。

こちらでいかがでしょうか?

View solution in original post

to4kawa
Ultra Champion
| makeresults count=30
| streamstats count
| eval host="host_".count
| eval time_args_start="-".(random() % 10 + 6)."d@h"
| eval time_args_error="-".(random() % 100 + 1)."h@h"
| eval start_time=relative_time(_time,time_args_start)
| eval error_time=relative_time(_time,time_args_error)
| foreach *_time 
    [eval <<FIELD>>_c = strftime(<<FIELD>>,"%Y/%m/%d %H:%M")]
 `comment("this is sample data")`
| eval tbf=error_time-start_time
| convert dur2sec(tbf) as tbf
| eval error_occur=case(tbf < 60 * 60 * 24 * 7, "week",tbf < 60 * 60 * 24 * 30 , "month", true(), "other")
| stats count by error_occur

サンプルデータとして、適当に端末(host)と稼働開始時間(start_time)、エラー発生時間(error_time)を作りました。
そこからエラー発生間隔(tbf)を計算して、発生時期(error_occur)により数を数えています。

こちらでいかがでしょうか?

tonakano
Engager

ありがとうございました。
”最初のエラー”がキーワードだったので、stats earliest と記載頂いた方法を組み合わせることで行けそうです。

0 Karma

to4kawa
Ultra Champion

よかったです。Happy Splunking.

0 Karma

tkomatsubara_sp
Splunk Employee
Splunk Employee

こんにちは

「ある特定のエラーが発生した日がいつ」
については、
index=oidemo err | stats latest(_time) as latest, earliest(_time) as ealiest count by host
な感じで取得できます。

「それが端末の稼働時間のどのタイミングかを一定のレンジでまとめたい」
の意味がよくわかりません。

0 Karma

tonakano
Engager

コメントありがとうございます。

>「それが端末の稼働時間のどのタイミングかを一定のレンジでまとめたい」
>の意味がよくわかりません。
分かりづらい表現ですみません。
”やりたいこと”の所に記載さえて頂いたのですが、特定のエラーは継続的に発生しています。
調べたいのは、そのエラーが発生した最初のタイミングになります。
例えば、100台デバイスが動いていて、この100台で特定のエラーが出たタイミングが
・稼働から1週間以内で発生しているのがX台。
・1週間以上1ヵ月以内で発生したのがY台。
・1ヵ月以上経過してから発生しているのがZ台。
のような形で、集計をしたいというのが目的です。

earliestで初回発生日は出せたのですが、上記の様な集計方法が分かりませんでした。
是非とも集計方法のご教授お願い致します。

0 Karma
Get Updates on the Splunk Community!

.conf24 | Day 0

Hello Splunk Community! My name is Chris, and I'm based in Canberra, Australia's capital, and I travelled for ...

Enhance Security Visibility with Splunk Enterprise Security 7.1 through Threat ...

 (view in My Videos)Struggling with alert fatigue, lack of context, and prioritization around security ...

Troubleshooting the OpenTelemetry Collector

  In this tech talk, you’ll learn how to troubleshoot the OpenTelemetry collector - from checking the ...