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!

Built-in Service Level Objectives Management to Bridge the Gap Between Service & ...

Wednesday, May 29, 2024  |  11AM PST / 2PM ESTRegister now and join us to learn more about how you can ...

Get Your Exclusive Splunk Certified Cybersecurity Defense Engineer Certification at ...

We’re excited to announce a new Splunk certification exam being released at .conf24! If you’re headed to Vegas ...

Share Your Ideas & Meet the Lantern team at .Conf! Plus All of This Month’s New ...

Splunk Lantern is Splunk’s customer success center that provides advice from Splunk experts on valuable data ...