Log Service は、Function Compute を利用して、ストリーミングデータを処理する完全ホスト型のサービスを提供します。

ETL ジョブを設定すると、Log Service は定期的に更新データを取得し、関数の実行をトリガーします。つまり、 Log Service の Logstore データの増分を読み込み、カスタム処理関数のタスクを完了します。Log Service に用意されているテンプレート関数、およびユーザー定義関数をデータ処理に利用できます。

利用イメージ

データのクリーニングと処理
Log Service を使用して、素早くログを収集、処理、クエリ、および分析できます。
図 1. データのクリーニングと処理
データ配信
Log Service はビッグデータを扱うクラウドプロダクトとのデータパイプラインを構築し、データを送信します。
図 2. データ配信

操作の原則

トリガー

Log Service ETL ジョブは、 Function Compute のトリガーに対応します。ETL ジョブを作成すると、Log Service のジョブ設定に基づいてタイマーが始動します。タイマーは、Logstore シャード情報をポーリングします。新しいログが書き込まれ、<shardid、 begin_cursor、end_cursor> の 3 つの情報を含む関数イベントが生成され、関数の実行がトリガーされます。

Log Service ETL ジョブは、時間を基にトリガーされます。たとえば、ETL ジョブのトリガー間隔が 60 秒で、Logstore のシャード 0 に定期的にデータが書き込まれている場合、シャード 0 に対して毎分、関数の実行がトリガーされます。シャード 0 に新しいデータが書き込まれなかった場合、関数の実行はトリガーされません。関数実行の入力は、最後の 60 秒間のカーソル間隔です。関数では、シャード 0 の データのカーソルに基づいて読み取り、処理されます。
図 3. トリガー

ETL 関数

関数テンプレートまたはユーザー定義関数を使用できます。ご使用の前に、Function Compute サービスの基本概念を習得されることが推奨されます。

  • Log Service に用意されている関数テンプレート

    関数テンプレートは GitHub より入手できます。 aliyun-log-fc-functionsをクリックして、GitHub にアクセスします。

  • ユーザー定義関数

    独自の関数を実装できます。関数の設定方法は、各関数で異なります。詳細は、ETL 関数の開発ガイドをご参照ください。

ユーザーガイド

手順 1 . Log Service を許可し、リソースを準備

  1. クイック認可ページで、権限付与をクリックして、Log Service に関数トリガー権限を付与します。
  2. 関数の生成するログ用の Log Service プロジェクトおよび Logstore を作成します。

    初めてプロジェクトまたは Logstore を作成する場合は、準備の手順に従って作成します。

    Log Service プロジェクトと Function Compute サービスは、同じリージョンでなければなりません。

手順 2. サービスを作成

  1. Function Compute コンソールで、サービスの作成をクリックします 。
  2. サービス名説明を入力します 。 詳細設定 を有効にします。
    設定項目 説明
    サービス名 作成する Function Compute サービスの名前。 命名規則:
    • 名前には、大文字、小文字、数字、ハイフン (-)、およびアンダースコア () を使用できます。
    • 大文字、小文字、またはアンダースコア () で始まる必要があります。
    • 大文字と小文字が区別され、1〜128 文字を含める必要があります。
    説明 新しいサービスの説明。
    ログプロジェクト Log Service プロジェクトの名前。 LogStore は、新しい Function Compute サービスと同じリージョンでなければなりません。
    Logstore Log Service Logstore の名前。 LogStore は、新しい Function Compute サービスと同じリージョンでなければなりません。
    ロール設定 サービスロールを作成し、選択したシステムテンプレートに基づいて対応する許可を作成します。 指定された Logstore にログをプッシュするために Function Compute を承認します。 新しいロールを作成したり、既存のロールを選択することができます。 既存のロールを使用するには、既存のロールを選択します。
    システムポリシー システム権限付与ポリシーを選択します。AliyunLogFullAccess またはAliyunLogReadOnlyAccess のいずれかのポリシーを適用できます。
    図 4. サービスの作成

    システム権限付与ポリシーを選択したら、許可をクリックします。ロールテンプレートページが表示されます。ポリシー名 ポリシーの説明 ポリシーの詳細といったロール情報および許可情報を確認します。新しいロールを作成する場合は、ロール名ロールの説明を確認します。 ポリシーの詳細では、権限付与ポリシーを、このロールに適した権限付与ポリシーをカスタマイズできます。

    権限付与できたら、OK をクリックしてサービスの概要ページに移動します。

手順 3 関数とトリガーを作成

  1. サービスの [概要] ページで 、関数の作成 をクリックします。

    関数テンプレートを選択します。

    お客様のビジネスモデルに似ているビジネステンプレートを選択できます。それを修正して関数を作成するか、空の関数テンプレートを選択して関数をカスタマイズすることができます。

    • Log Service テンプレート: Log Service は、ビジネステンプレートのlogstore_replicationoss-shipper-csvを提供します。 これらのテンプレートに基づいて、関数とトリガーを作成できます。
    • 空のテンプレート:空の関数テンプレートを使用して空の関数を作成できます。 次に、ガイドページで、トリガー、関数パラメーターを設定し、関連するコードを記述して関数を作成します。
  2. トリガーを設定し、次へ をクリックします。

    Log Service で提供されるテンプレートを選択すると、トリガーを直接設定できます。 空のテンプレートを選択した場合は、最初にトリガータイプを選択してからトリガーを設定する必要があります。

    トリガー名、プロジェクト名、Logstore 名などのトリガーを設定するために、必要な項目を入力します。 Function Compute の Log Service タイプトリガーは、Log Service の ETL ジョブに 対応します。

    設定項目 意味
    Trigger Name 新しいトリガーの名前 トリガー名の長さは、1〜256 バイトで、英数字、アンダースコア() 、ハイフン(-) を含めることができます。 数字やハイフン (-) で始めることはできません。
    Project name Log Service プロジェクトの名前 既存のプロジェクトの名前でなければなりません。 プロジェクトはサービスと同じリージョンでなければなりません。
    Logstore name Log Service プロジェクトの名前。 このトリガーは LogStore のサブスクライブされたデータを、カスタム処理のために Function Compute に定期的に転送します。 ETL ジョブの作成後は、このパラメーターを変更することはできません。 既存の Logstore を選択します。 Logstore は、ログプロジェクト名で選択したプロジェクトに属している必要があります。
    Trigger log Log Service は定期的にFunction Compute の関数実行をトリガーします。 この Logstore には、トリガー処理中の例外と関数実行統計が記録されます。 Logstore のインデックスを作成して、後で表示することができます。 既存の Logstore の名前でなければなりません。Logstore はログプロジェクト名 で選択したプロジェクトに属している必要があります。
    Invocation Interval Log Service が関数の実行をトリガーする間隔。 たとえば、60 秒に設定すると、 Log Service は各 Logstore シャードの最後の 60 秒間のデータ位置を読み取り、これを関数イベントとして使用して関数の実行を呼び出します。 この関数では、ユーザーロジックがシャードデータを読み取り、計算を実行します。
    Logstore シャードのトラフィック量が多い (1 MB/秒以上) 場合は、各関数操作で処理されるデータ量が適切なサイズになるようにトリガー間隔を短く設定することを推奨します。
    値の範囲は3 〜 600 秒です。
    Retries Log Service が、設定されたトリガー間隔 に従って関数の実行をトリガーするときにエラーが発生した場合 (アクセス権限が不十分、ネットワーク障害、関数実行の例外など)、このパラメーターが関数を再トリガーできる最大回数を設定します。 関数が最大回数再トリガーされても、操作が引き続き失敗する場合は、 Log Service が関数の実行を再試行しようとするまでに、そのトリガー間隔が経過する必要があります。 ビジネス上のリトライの影響は、関数コード実装ロジックの内容に応じて変わります。 値の範囲は 0〜100 回です。
    Function configuration Log Service は、この設定コンテンツを関数イベントの一部として使用し、関数に渡します。 この関数の使用方法は、関数のカスタムロジックによって決まります。 異なる種類の関数では、関数設定の要件が異なります。 提供されている関数テンプレートの大部分については、パラメーターを入力する際に​​説明書をお読みください。 パラメーターが渡されない場合は、 デフォルトで {}と入力します。 設定内容は、JSON オブジェクト形式の文字列でなければなりません。
    図 5. トリガー設定
    既に Log Service に関数呼び出し、Logstore データの読み書きする権限があること。
  3. 関数名や関数ハンドラなどの基本設定を完了します。

    次へをクリックします。

  4. 関数の許可を完了します。

    テンプレート許可を確認し、 ロール許可をトリガーします。 次に、 次へ をクリックします。

  5. 関数情報トリガー情報を確認します。 次に、 作成 をクリックします。

トリガーログを表示

Log Service コンソールにログインし、ジョブに設定されているトリガーログ Logstore のインデックスを作成します。タスク実行の統計が表示されます。

関数操作ログを表示

Log Service コンソールにログインして、関数実行プロセスの詳細を表示します。 詳細については、ロギングをご参照ください。

よくある質問

トリガーを作成しましたが、関数実行がトリガーされません
  1. Log Service が関数の実行をトリガーできるよう、クイック認可していることを確認します。
  2. シャードデータが変更されたときに、関数実行がトリガーされるように、ジョブの Logstore 内のデータが変更されていることを確認します。
  3. Log Service コンソールにログインし、トリガーログおよび関数操作ログに例外がないことを確認します。