Overview
ログフォワーダーを構成して、trigger と Function のサーバー側ログをMongoDBコレクションに自動的に保存したり、外部サービスに送信したりできます。また、ログが作成される際に個別に転送したり、ログをバッチするてオーバーヘッドを削減したりすることもできます。
ログフォワーダーは、次のコンポーネントで構成されています。
ログが転送される方法と場所を制御するアクション。
転送されるログを制御するフィルター。
ログの個別転送またはバッチ転送を制御するポリシー。
ログ転送を構成する必要がある理由
次のいずれかのアクションを実行する必要がある場合は、ログフォワーダーの設定を検討してください。
ログを 10 日の保持期間を超えて保存します。
ログを外部ログ サービスに統合します。
MongoDB Search、 Online アーカイブ、 Charts のログにアクセスします。
ログフォワーダーを設定する
ログフォワーダーを作成する
ログフォワーダーを作成するには、次の手順に従います。
Atlas で、 Triggers ページに移動します。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Streaming Data見出しの下の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>", ... ] }
次のログの種類を転送できます。
authendpointfunctiongraphqlpushschemaservicetriggertrigger_error_handler
次のログステータスを転送できます。
errorsuccess
重要
ログフォワーダーは、フィルターでタイプとステータスの両方が指定されている場合にのみ、特定のログを転送します。
たとえば、 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 画面から再起動できます。
注意
ログフォワーダーが停止すると、プロジェクト所有者に問題が通知されるメールが送信されます。