Apache APISIX 与 Google Cloud Logging 集成以提升日志处理能力
API7.ai
December 22, 2021
ロギングは分散システムにとって重要なインフラストラクチャです。これにより、開発者はサービスの動作状況を観察し、サービスのトラブルシューティングと診断の効率を向上させ、多次元分析を行ってシステム全体の安定性と運用効率を向上させることができます。
Google Cloud Logging は、Google Cloudが提供するリアルタイムのログ管理サービスで、EBレベルのストレージ、検索、分析、アラートサービスを提供します。Google Cloud Loggingのログブラウザを使用すると、ログを簡単かつ効率的に検索、ソート、分析できます。また、Google Cloud Loggingは保存されたクエリと豊富なグラフィカル機能を提供し、ログのスクリーニング結果を検索可能でより直感的にします。
Apache APISIXは以前から、HTTP Logger、TCP Logger、Kafka Logger、UDP Logger、RocketMQ Logger、SkyWalking Logger、Aliyun 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の設定
- ブラウザを開き、Google Cloudホームページにアクセスします。
- ユーザー名とパスワードを入力してGoogle Cloudコンソールにログインします。
- Google Cloudコンソールの左メニューをクリックし、「IAM & Admin > プロジェクトの作成」を選択してプロジェクトの作成を開始します。
- プロジェクト名を入力し、組織名を選択して「CREATE」をクリックしてプロジェクトを作成します。
- プロジェクトが正常に作成されると、コンソールの右上に作成成功の通知が表示されます。
- ウィンドウ内でプロジェクトを選択するか、コンソールホームページの上部ナビゲーションバーでプロジェクト操作パスを選択します。プロジェクトを選択すると、コンソールホームページにリダイレクトされ、上部ナビゲーションバーに現在のプロジェクトに関するデータと情報センターにプロジェクト情報が表示されます。
- プロジェクトの作成が完了したら、プロジェクトのサービスアカウントを作成する必要があります。Google Cloudコンソールホームページに戻り、左メニューの「IAM & Admin > サービスアカウント」をクリックしてサービスアカウントの作成を開始します。
- 「CREATE SERVICE ACCOUNT」をクリックしてサービスアカウントを作成します。
- サービスアカウント名とIDを入力し(IDは通常アカウント生成に従います)、「CREATE AND CONTINUE」をクリックします。
- 「Role」をクリックし、検索ボックスに「Logging Admin」と入力してこのロールを検索し、「Logging Admin」をロールとして選択します。
- 「DONE」をクリックしてサービスアカウントの作成を完了し、サービスアカウントホームページにジャンプします。この時点で、リストに作成したアカウントとその詳細が表示されます。
- サービスアカウントの最後の列にある「Manage keys」をクリックして、秘密鍵管理インターフェースに入ります。
- 「ADD KEY > Create new key」をクリックして新しい秘密鍵の作成を開始します。
- ポップアップページで秘密鍵のタイプを「JSON」として選択し、「CREATE」をクリックして新しい秘密鍵を作成します。
- 秘密鍵情報はブラウザを通じてシステムのデフォルトのダウンロードディレクトリに自動的にダウンロードされます。google-cloud-loggingプラグインを有効にする際には、この秘密鍵の情報を使用する必要があるため、秘密鍵ファイルを保存してください。
Apache APISIXの設定
google-cloud-loggingプラグインの有効化
オプション1: 鍵ファイルをアップロードして設定
- 秘密鍵ファイルをApache APISIXノードサーバーにアップロードします。
- ファイルパスを
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で設定を宣言
- 秘密鍵ファイルを開きます。
project_id
の値をgoogle-cloud-logging.auth_config.project_id
に設定します。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/a | Google Cloud Logging秘密鍵ファイル。auth_configまたはauth_fileのいずれかを設定する必要があります。 |
auth_config.private_key | はい | n/a | Google Cloud Logging秘密鍵。 |
auth_config.project_id | はい | n/a | GoogleサービスアカウントのプロジェクトID。 |
auth_config.token_uri | いいえ | oauth2.googleapis.com/token | Googleサービスアカウントのトークンをリクエストする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/a | GoogleサービスアカウントのJSONファイルのパス(auth_configまたはauth_fileのいずれかを設定する必要があります) |
ssl_verify | いいえ | TRUE | SSL認証を有効にします。OpenRestyドキュメントのオプションに従って設定します。 |
resource | いいえ | {"type": "global"} | Google監視リソース、参照:MonitoredResource。 |
log_id | いいえ | apisix.apache.org%2Flogs | GoogleログID、参照:LogEntry。 |
max_retry_count | いいえ | 0 | 処理パイプラインから削除される前の最大リトライ回数。 |
retry_delay | いいえ | 1 | 実行が失敗した場合に処理を遅延させる秒数。 |
buffer_duration | いいえ | 60 | バッチ内の最も古いエントリの最大期間(秒)。 |
inactive_timeout | いいえ | 10 | バッファをリフレッシュする最大時間(秒)。 |
batch_max_size | いいえ | 100 | バッチキューごとの最大エントリ数。 |
プラグインが正常に動作していることを確認
-
以下のコマンドを実行して、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
-
ブラウザを開き、Google Cloudホームページにアクセスします。
-
ユーザー名とパスワードを入力してGoogle Cloudコンソールにログインします。
-
ログブラウザで送信されたリクエストのログを表示し、返された結果は以下のようになります。
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のメーリングリストに登録して、メールで意見を表明してください。