LogDNAのAPIを使ってログをエクスポートする


LogDNAではREST APIを利用してログのエクスポートができる。もちろんGUIからもログの検索やエクスポートができるが、環境によっては(たとえばIBM Cloudで利用できるLogDNAのサービスでは)GUIの操作がモッサリしていることがあるので、APIを利用したほうが早かったりする。

サービスキーの登録

これはGUIから行う。すでに登録済であれば不要だが、無い場合は"Generate Service Key"を押下して作成する。

API呼び出し

公式のAPIリファレンスを参照し、必要なパラメータをセットする。
fromとtoは必須パラメータとなる。なお、UNIX時間で入力する必要がある。

以下のようにコマンドを実行する。

curl -sS "https://api.jp-tok.logging.cloud.ibm.com/v1/export?from=$(($(date +%s)-2592000))000&to=$(date +%s)000&hosts=<対象ホスト>&apps=<対象ログ名など>&query=<検索キーワード>&size=20000" \
-u "SERVICE_KEY:<サービスキー>" | jq -r '._line'
  • この例では、IBM Cloud東京リージョンにデプロイしたインスタンスをターゲットとし、現在時刻から30日前まで(IBM CloudのLogDNAサービスの最大保管日数)、サイズは2万行で指定している。
  • 公式のAPIリファレンスではsizeは最大10000との記載があるが、実際には20000まで有効。
  • JSONL形式でエクスポートされる。ログ本文のみを抜き出すには、jqコマンドで._lineを抽出するのがよい。
  • どういうわけか、from=30日前、to=現在という指定でも、新→旧の順番で結果が返却されるので、逆順にしたい場合はtacコマンドを使うのがよいと思う。
  • query部分はGUIを利用しているときと同じように、ORやAND、マイナス条件を指定することが可能。URLエンコードする必要があるため、例えばABC OR XYZという条件で指定したい場合はABC+OR+XYZと記載する。
  • appsの箇所は、appと指定しても動作する。というか、私の経験ではappsとするかappとするかによって、異なる結果が返却されることがあった…(appsではヒットしないことも)。両方試してみることをおすすめします。