2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IBM Log Analysis (旧IBM Log Analysis with LogDNA) でエクスポートしたログをコンソールで見た時のそれに近付ける方法

Posted at

はじめに

IBM Log Analysis (旧IBM Log Analysis with LogDNA) のコンソールでログを検索し、絞り込んだログをエクスポートすると、JSONL(JSON Lines)形式のファイルになる。

これを元のコンソールで見ていた時と同じ見栄えに近付ける方法を模索してみた。

試行錯誤

このように表示されていたログをエクスポートすると・・・
image.png
まず、時刻が _ts フィールドにミリ秒のUNIX時間で表現されてしまう。

"_ts": 1668866479459

これを、jqコマンドでローカルの時刻に変換するには、以下のようにすると良いらしい。

._ts / 1000 | localtime | todateiso8601

そして、時刻以外にコンソールに表示されていたフィールドは _host, ._app, .level, ._line (.levelは上記の例では表示されていないが、ログのレベルを示すWARN、ERRORなど) で取れそうなので、エクスポートしたgzip圧縮のjsonlファイルを整形するには以下のようにする。

gzip -cd ファイル名 | jq -r '. | [(._ts / 1000 | localtime | todateiso8601) as $ts | $ts, ._host, ._app, .level, ._line] | @tsv'

しかし、エクスポートしたファイルは、時系列が降順になっているので、コンソールと同じ昇順にするには、最初にファイルの中身を逆さまにする必要がある。これを実現するtacというコマンドがあることを初めて知りました。

結論

こうなりました。

gzip -cd ファイル名 | tac | jq -r '. | [(._ts / 1000 | localtime | todateiso8601) as $ts | $ts, ._host, ._app, .level, ._line] | @tsv'

なんかコンソールで見たのとちょっと違う・・・が、実際のサーバー上のログ/var/log/cronを見ると、後者の方が正しい(_lineフィールドにあるものが、実際にログに出力された文字列で、コンソールに表示されていたのは、LogDNAが何かしらの法則で取り出したmessageフィールドに入っていた文字列)ので、気にしないことにする。

役に立つことがあるか分からないが、一旦満足したのでメモ。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?