Apache APISIX 与 Google Cloud Logging 集成以提升日志处理能力

API7.ai

December 22, 2021

Ecosystem

Apache APISIX-Google Cloud Logging カバー

ロギングは分散システムにとって重要なインフラストラクチャです。これにより、開発者はサービスの動作状況を観察し、サービスのトラブルシューティングと診断の効率を向上させ、多次元分析を行ってシステム全体の安定性と運用効率を向上させることができます。

Google Cloud Logging は、Google Cloudが提供するリアルタイムのログ管理サービスで、EBレベルのストレージ、検索、分析、アラートサービスを提供します。Google Cloud Loggingのログブラウザを使用すると、ログを簡単かつ効率的に検索、ソート、分析できます。また、Google Cloud Loggingは保存されたクエリと豊富なグラフィカル機能を提供し、ログのスクリーニング結果を検索可能でより直感的にします。

Apache APISIXは以前から、HTTP LoggerTCP LoggerKafka LoggerUDP LoggerRocketMQ LoggerSkyWalking LoggerAliyun Cloud Logging(SLS) など、多くのオープンソースおよびクラウドロギングサービスソリューションをサポートしています。

最近、Apache APISIXはGoogle Cloud Loggingのサポートも追加し、Apache APISIXをゲートウェイとして使用する際に新しいロギングソリューションを提供します:google-cloud-logging を使用して、Apache APISIXのリクエストログをGoogle Cloud Loggingサービスに転送し、分析と保存を行います。

プラグインが有効になると、Apache APISIXはLog Phaseでリクエストコンテキスト情報を取得し、Google Cloud LoggingのLogEntryにシリアライズします。その後、シリアライズされたログデータをバッチキューに送信し、ユーザーが設定した時間またはエントリの閾値がトリガーされると、ログデータがGoogle Cloud APIを介してGoogle Cloud Loggingサービスに転送されます。

この記事では、Apache APISIXでGoogle Cloud Loggingサービスを設定して使用する方法について説明します。

Google Cloudの設定

  1. ブラウザを開き、Google Cloudホームページにアクセスします。
  2. ユーザー名とパスワードを入力してGoogle Cloudコンソールにログインします。
  3. Google Cloudコンソールの左メニューをクリックし、「IAM & Admin > プロジェクトの作成」を選択してプロジェクトの作成を開始します。 プロジェクトの作成
  4. プロジェクト名を入力し、組織名を選択して「CREATE」をクリックしてプロジェクトを作成します。 プロジェクトの作成-2
  5. プロジェクトが正常に作成されると、コンソールの右上に作成成功の通知が表示されます。 プロジェクト通知
  6. ウィンドウ内でプロジェクトを選択するか、コンソールホームページの上部ナビゲーションバーでプロジェクト操作パスを選択します。プロジェクトを選択すると、コンソールホームページにリダイレクトされ、上部ナビゲーションバーに現在のプロジェクトに関するデータと情報センターにプロジェクト情報が表示されます。 プロジェクトを表示
  7. プロジェクトの作成が完了したら、プロジェクトのサービスアカウントを作成する必要があります。Google Cloudコンソールホームページに戻り、左メニューの「IAM & Admin > サービスアカウント」をクリックしてサービスアカウントの作成を開始します。 サービスアカウントの作成を開始
  8. 「CREATE SERVICE ACCOUNT」をクリックしてサービスアカウントを作成します。 サービスアカウントの作成
  9. サービスアカウント名とIDを入力し(IDは通常アカウント生成に従います)、「CREATE AND CONTINUE」をクリックします。 サービスアカウントの作成-2
  10. 「Role」をクリックし、検索ボックスに「Logging Admin」と入力してこのロールを検索し、「Logging Admin」をロールとして選択します。 サービスアカウントの作成-3
  11. 「DONE」をクリックしてサービスアカウントの作成を完了し、サービスアカウントホームページにジャンプします。この時点で、リストに作成したアカウントとその詳細が表示されます。 サービスアカウント情報
  12. サービスアカウントの最後の列にある「Manage keys」をクリックして、秘密鍵管理インターフェースに入ります。 秘密鍵管理インターフェースに入る
  13. 「ADD KEY > Create new key」をクリックして新しい秘密鍵の作成を開始します。 新しい秘密鍵の作成
  14. ポップアップページで秘密鍵のタイプを「JSON」として選択し、「CREATE」をクリックして新しい秘密鍵を作成します。 新しい秘密鍵の作成-2
  15. 秘密鍵情報はブラウザを通じてシステムのデフォルトのダウンロードディレクトリに自動的にダウンロードされます。google-cloud-loggingプラグインを有効にする際には、この秘密鍵の情報を使用する必要があるため、秘密鍵ファイルを保存してください。 鍵をダウンロード

Apache APISIXの設定

google-cloud-loggingプラグインの有効化

オプション1: 鍵ファイルをアップロードして設定

  1. 秘密鍵ファイルをApache APISIXノードサーバーにアップロードします。
  2. ファイルパスをgoogle-cloud-logging.auth_fileに設定します。以下に示すように:
curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri":"/logging.do",
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:1980":1
        }
    },
    "plugins":{
        "google-cloud-logging":{
            // Google Cloud Logging秘密鍵ファイル
            "auth_file":"/path/to/apache-apisix-fcafc68c2f41.json",
            // バッチキューごとの最大エントリ数
            "batch_max_size": 1,
            // バッファをリフレッシュする最大時間(秒)
            "inactive_timeout": 10
        }
    }
}'

オプション2: JSONで設定を宣言

  1. 秘密鍵ファイルを開きます。
  2. project_idの値をgoogle-cloud-logging.auth_config.project_idに設定します。
  3. private_keyの値をgoogle-cloud-logging.auth_config.private_keyに設定します。以下に示すように:
curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri":"/logging.do",
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:1980":1
        }
    },
    "plugins":{
        "google-cloud-logging":{
            // Google Cloud Logging秘密鍵ファイル
            "auth_config":{
                "project_id":"apache-apisix",
                "private_key":"-----BEGIN RSA PRIVATE KEY-----your private key-----END RSA PRIVATE KEY-----"
            },
            // バッチキューごとの最大エントリ数
            "batch_max_size": 1,
            // バッファをリフレッシュする最大時間(秒)
            "inactive_timeout": 10
        }
    }
}'

パラメータ

名前必須デフォルト値説明
auth_configいいえn/aGoogle Cloud Logging秘密鍵ファイル。auth_configまたはauth_fileのいずれかを設定する必要があります。
auth_config.private_keyはいn/aGoogle Cloud Logging秘密鍵。
auth_config.project_idはいn/aGoogleサービスアカウントのプロジェクトID。
auth_config.token_uriいいえoauth2.googleapis.com/tokenGoogleサービスアカウントのトークンをリクエストするURI。
auth_config.entries_uriいいえlogging.googleapis.com/v2/entries
Googleログサービスのログエントリ書き込みAPI。
auth_config.scopesいいえ["https://www.googleapis.com/auth/logging.read","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/logging.admin","https://www.googleapis.com/auth/cloud-platform"]Googleサービスアカウントのアクセススコープ、参照:Google APIのOAuth 2.0スコープ
auth_fileいいえn/aGoogleサービスアカウントのJSONファイルのパス(auth_configまたはauth_fileのいずれかを設定する必要があります)
ssl_verifyいいえTRUESSL認証を有効にします。OpenRestyドキュメントのオプションに従って設定します。
resourceいいえ{"type": "global"}Google監視リソース、参照:MonitoredResource
log_idいいえapisix.apache.org%2FlogsGoogleログID、参照:LogEntry
max_retry_countいいえ0処理パイプラインから削除される前の最大リトライ回数。
retry_delayいいえ1実行が失敗した場合に処理を遅延させる秒数。
buffer_durationいいえ60バッチ内の最も古いエントリの最大期間(秒)。
inactive_timeoutいいえ10バッファをリフレッシュする最大時間(秒)。
batch_max_sizeいいえ100バッチキューごとの最大エントリ数。

プラグインが正常に動作していることを確認

  1. 以下のコマンドを実行して、Google Cloud Loggingにリクエストを送信します。

    curl -i http://127.0.0.1:9080/logging.do
    HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    Transfer-Encoding: chunked
    Connection: keep-alive
    Date: Fri, 10 Dec 2021 09:57:52 GMT
    Server: APISIX/2.11.0
    
    Hello, Google Cloud Logging
    
  2. ブラウザを開き、Google Cloudホームページにアクセスします。

  3. ユーザー名とパスワードを入力してGoogle Cloudコンソールにログインします。

  4. ログブラウザで送信されたリクエストのログを表示し、返された結果は以下のようになります。 ログを表示

google-cloud-loggingプラグインの無効化

使用が完了したら、google-cloud-logging関連の設定ブロックを削除してプラグインを無効にすることができます。

curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri":"/logging.do",
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:1980":1
        }
    },
    "plugins":{
    }
}'

まとめ

この記事では、Apache APISIXとGoogle Cloud Loggingを連携するための詳細な手順を説明しました。この記事が、Apache APISIXでGoogle Cloud Loggingを使用する際の理解を深め、その後の実践操作を容易にすることを願っています。

Apache APISIXは、自身の高性能を維持することに加えて、オープンソースエコシステムの構築にも常に大きな重要性を置いています。現在、Apache APISIXは10以上のロギング関連プラグインをサポートし、業界の主要なオープンソースロギングプロジェクトとの連携をサポートしています。

他のログとの連携が必要な場合は、Apache APISIXのGitHubにアクセスして、issueを通じて提案を残してください。または、Apache APISIXのメーリングリストに登録して、メールで意見を表明してください。

関連記事

Apache APISIXがSkyWalkingと統合し、フルレンジのログ処理を実現

Apache APISIX & RocketMQがユーザーAPIログ監視機能をサポート

Tags: