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ではヒットしないことも)。両方試してみることをおすすめします。