Overview
ログフォワーダーを構成して、trigger と Function のサーバー側ログをMongoDBコレクションに自動的に保存したり、外部サービスに送信したりできます。また、ログが作成される際に個別に転送したり、ログをバッチするオーバーヘッドを削減したりすることもできます。
ログフォワーダーは、次のコンポーネントで構成されています。
ログが転送される方法と場所を制御するアクション。
転送されるログを制御するフィルター。
ログの転送を個別に転送するか、バッチで転送するかを制御するポリシー。
ログ転送を構成する必要がある理由
次のいずれかのアクションを実行する必要がある場合は、ログフォワーダーの設定を検討してください。
ログを 10 日の保持期間を超えて保存します。
ログを外部ログ サービスに統合します。
Atlas Search、 Online アーカイブ、 Charts のログにアクセスします。
ログフォワーダーを設定する
ログフォワーダーを作成する
ログフォワーダーを作成するには、次の手順に従います。
警告
ナビゲーションの改善が進行中
現在、新しく改善されたナビゲーション エクスペリエンスを展開しています。次の手順が Atlas UIのビューと一致しない場合は、プレビュー ドキュメントの を参照してください。
まだ表示されていない場合は、プロジェクトを含む組織を から選択します。ナビゲーション バーの [ Organizations ] メニューを参照してください。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Services見出しの下のTriggersをクリックします。
Triggersページが表示されます。
View All Appsボタンをクリックします。
ログを転送する trigger または関数を含むアプリをクリックします。
Logs ページに移動します。
Forwarding タブを選択します。
Create a Log Forwarderボタンをクリックします。
ログフォワーダーの一意の名前を指定します。
新しいログフォワーダーを作成するには、アプリの log_forwarders
ディレクトリに新しい構成ファイルを追加します。 ファイル名は構成のname
フィールドの値と一致する必要があります。
{ "name": "<name>" }
転送するログの選択
trigger または関数のログをすべて転送したり、サブセットのみをターゲットコレクションまたはサービスに送信したりすることもできます。フォワーダーのアクションを呼び出すログタイプ(関数、トリガーなど)とステータス(成功またはエラー)のフィルターを定義することで、各ログフォワーダーのこのサブセットを制御します。
[Log Type ドロップダウンで転送するログのタイプを 1 つ以上選択します。次に、Log Status ドロップダウンで転送するステータスを 1 つ以上選択します。
一致して転送するフォワーダーの 1 つ以上のタイプと 1 つ以上のステータスを指定します。
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ] }
次のログの種類を転送できます。
auth
endpoint
function
graphql
push
schema
service
trigger
trigger_error_handler
次のログステータスを転送できます。
error
success
重要
ログフォワーダーは、フィルターでタイプとステータスの両方が指定されている場合にのみ、特定のログを転送します。
たとえば、 error
ステータスを持つtriggers
ログをフィルタリングするフォワーダーを考えてみましょう。
フィルターは、次のログを転送します。
{ "type": "triggers", "status": "error", ... }
フィルターは、次のログを転送しません。
{ "type": "triggers", "status": "success", ... } { "type": "functions", "status": "error", ... }
ログ バッチの構成
複数のログを 1 つのバッチ処理されたリクエストにまとめて、オーバーヘッドを削減できます。選択したバッチ ポリシーによって、ログフォワーダーがログをグループ化する方法が決まります。
次のバッチ ポリシーのいずれかを選択できます。
バッチ処理なし:ログフォワーダーは、対応するリクエストが発生するたびにログを個別に転送します。
バッチ処理:ログフォワーダーはドキュメントが発生するたびにバッチするにグループ化します。各バッチするには最大 100のログエントリを含めることができます。バッチするがいっぱいになると、ログフォワーダーは 1 回のリクエストでバッチする全体を転送します。ログフォワーダーは、現在のバッチする内のログの数に関係なく、少なくとも 1 分に 1 回ログを転送します。
バッチ処理を構成するには、 ポリシーまたはNo batch Batchingポリシーのいずれかを選択します。
バッチ処理を構成するには、 policy
フィールドにポリシータイプ( single
またはbatch
のいずれかを指定します。
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ], "policy": { "type": "<single|batch>" } }
アクションの定義
ログフォワーダーは、リンクされた MongoDB コレクションにログを自動的に保存したり、ログを外部サービスに送信するカスタム関数を呼び出したりすることができます。
MongoDB コレクションでのログの保存
ログをコレクションに保存するには、 To Collectionアクションを選択し、転送されたログを保持するリンクされたクラスター、データベース、コレクションの名前を入力します。
ログをコレクションに保存するには、転送されたログを保持する連結クラスター、データベース、コレクションの名前を含むcollection
のaction
を指定します。
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ], "policy": { "type": "<single|batch>" }, "action": { "type": "collection", "data_source": "<data source name>", "database": "<database name>", "collection": "<collection name>" } }
カスタム関数でログを転送
ログを外部サービスに転送するには、 はログオブジェクトの配列を受け入れ、 API、SDK、またはライブラリ経由でサービスを呼び出す関数を記述します。
注意
バッチ ポリシーとログ頻度によっては、ログフォワーダーが最大 100 のログオブジェクトの配列を持つログ転送関数を呼び出す場合があります。
この関数は、次の例と同じ署名を持つ必要があります。
exports = async function(logs) { // `logs` is an array of 1-100 log objects // Use an API or library to send the logs to another service. await context.http.post({ url: "https://api.example.com/logs", body: logs, encodeBodyAsJSON: true }); }
ログ転送関数を記述した後、名前を使用してログフォワーダーに割り当てることができます。
ログフォワーダーに関数を割り当てるには、 To Functionアクションを選択し、ドロップダウン入力から関数を選択します。
ログフォワーダーに関数を割り当てるには、ログ転送関数の名前を含むタイプfunction
のaction
を指定します。
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ], "policy": { "type": "<single|batch>" }, "action": { "type": "function", "name": "<function name>" } }
停止したログフォワーダーの再起動
ログフォワーダーは、ネットワークの中断やログを保存する基礎のクラスターの変更など、継続を妨げるイベントに応答して一時停止することがあります。一時停止されると、フォワーダーを呼び出すことができなくなり、ログが転送されません。
中断されたログフォワーダーは、 Atlas UIの Logs > Forwarding 画面から再起動できます。
注意
ログフォワーダーが停止すると、プロジェクト所有者に問題が通知されるメールが送信されます。