ご教授ください。
複数端末のログ情報を集計しています。
その中で、ある特定のエラーが発生した日がいつで、それが端末の稼働時間のどのタイミングかを一定のレンジでまとめたいと考えています。
現在の総エラー数であれば、eval rang=case(xxx のような形で集計は出来るのは分かったのですが、最初のエラー発生までのカウントとなると、集計方法がよく分かりません。
どのようにすれば、集計できるかご教授をお願い致します。
[やりたいこと]
端末集計データ全部:allData
特定するエラー:A
Aの発生までのデータを抽出し、稼働時間のレンジ(1日未満、1週間未満、1月未満・・・)での集計を行いたい。
エラーAは、継続して出力されるため一番最初に発生以降はカウントの対象外としたい。
宜しくお願いします。
| 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)により数を数えています。
こちらでいかがでしょうか?
| 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)により数を数えています。
こちらでいかがでしょうか?
ありがとうございました。
”最初のエラー”がキーワードだったので、stats earliest と記載頂いた方法を組み合わせることで行けそうです。
よかったです。Happy Splunking.
こんにちは
「ある特定のエラーが発生した日がいつ」
については、
index=oidemo err | stats latest(_time) as latest, earliest(_time) as ealiest count by host
な感じで取得できます。
「それが端末の稼働時間のどのタイミングかを一定のレンジでまとめたい」
の意味がよくわかりません。
コメントありがとうございます。
>「それが端末の稼働時間のどのタイミングかを一定のレンジでまとめたい」
>の意味がよくわかりません。
分かりづらい表現ですみません。
”やりたいこと”の所に記載さえて頂いたのですが、特定のエラーは継続的に発生しています。
調べたいのは、そのエラーが発生した最初のタイミングになります。
例えば、100台デバイスが動いていて、この100台で特定のエラーが出たタイミングが
・稼働から1週間以内で発生しているのがX台。
・1週間以上1ヵ月以内で発生したのがY台。
・1ヵ月以上経過してから発生しているのがZ台。
のような形で、集計をしたいというのが目的です。
earliestで初回発生日は出せたのですが、上記の様な集計方法が分かりませんでした。
是非とも集計方法のご教授お願い致します。