アリババクラウド SAE¶
アリババクラウド SAE(Serverless App Engine)のメトリクス、ログ、トレース情報を収集します。
設定¶
SAE にデプロイされたアプリケーションは、以下の手順でトレース、メトリクス、ログデータを接続できます。手順は次のとおりです。
- アプリケーションは APM を接続して Trace データを DataKit に報告します
- アプリケーションのログデータは KafkaMQ で収集し、DataKit で消費できます
- アプリケーションコンテナのメトリクスデータは、アリババクラウドの監視 API と Function プラットフォーム(DataFlux.f(x))を利用して収集した後、Guance に送信します
- DataKit が収集したデータは一元的に処理され、Guance に送信されます
注意:SAE 上に DataKit をデプロイすると、帯域幅を節約できます。
DataKit アプリを作成する¶
SAE 上で DataKit アプリを作成します
- SAE に入り、アプリ一覧 - アプリ作成 をクリックします。
- アプリ情報を入力します
- アプリ名
- 名前空間を選択します。なければ作成します
- vpc を選択します。なければ作成します
- セキュリティグループを選択します: vswitch は NAT のスイッチと一致させる必要があります
- インスタンス数は必要に応じて調整します
- CPU 1 core、メモリ 1G
- 完了したら次へ をクリックします
- イメージを追加します:pubrepo.guance.com/datakit/datakit:1.31.0
- 環境変数を追加し、設定内容は次のとおりです:
{
"ENV_DATAWAY": "https://openway.guance.com?token=tkn_xxx",
"KAFKAMQ": "# {\"version\": \"1.22.7-1510\", \"desc\": \"do NOT edit this line\"}\n\n[[inputs.kafkamq]]\n # addrs = [\"alikafka-serverless-cn-8ex3y7ciq02-1000.alikafka.aliyuncs.com:9093\",\"alikafka-serverless-cn-8ex3y7ciq02-2000.alikafka.aliyuncs.com:9093\",\"alikafka-serverless-cn-8ex3y7ciq02-3000.alikafka.aliyuncs.com:9093\"]\n addrs = [\"alikafka-serverless-cn-8ex3y7ciq02-1000-vpc.alikafka.aliyuncs.com:9092\",\"alikafka-serverless-cn-8ex3y7ciq02-2000-vpc.alikafka.aliyuncs.com:9092\",\"alikafka-serverless-cn-8ex3y7ciq02-3000-vpc.alikafka.aliyuncs.com:9092\"]\n # your kafka version:0.8.2 ~ 3.2.0\n kafka_version = \"3.3.1\"\n group_id = \"datakit-group\"\n # consumer group partition assignment strategy (range, roundrobin, sticky)\n assignor = \"roundrobin\"\n\n ## kafka tls config\n tls_enable = false\n\n ## -1:Offset Newest, -2:Offset Oldest\n offsets=-1\n\n\n ## user custom message with PL script.\n [inputs.kafkamq.custom]\n #spilt_json_body = true\n ## spilt_topic_map determines whether to enable log splitting for specific topic based on the values in the spilt_topic_map[topic].\n #[inputs.kafkamq.custom.spilt_topic_map]\n # \"log_topic\"=true\n # \"log01\"=false\n [inputs.kafkamq.custom.log_topic_map]\n \"springboot-server_log\"=\"springboot_log.p\"\n #[inputs.kafkamq.custom.metric_topic_map]\n # \"metric_topic\"=\"metric.p\"\n # \"metric01\"=\"rum_apm.p\"\n #[inputs.kafkamq.custom.rum_topic_map]\n # \"rum_topic\"=\"rum_01.p\"\n # \"rum_02\"=\"rum_02.p\"\n",
"SPRINGBOOT_LOG_P": "abc = load_json(_)\n\nadd_key(file, abc[\"file\"])\n\nadd_key(message, abc[\"message\"])\nadd_key(host, abc[\"host\"])\nmsg = abc[\"message\"]\ngrok(msg, \"%{TIMESTAMP_ISO8601:time} %{NOTSPACE:thread_name} %{LOGLEVEL:status}%{SPACE}%{NOTSPACE:class_name} - \\\\[%{NOTSPACE:method_name},%{NUMBER:line}\\\\] %{DATA:service_name} %{DATA:trace_id} %{DATA:span_id} - %{GREEDYDATA:msg}\")\n\nadd_key(topic, abc[\"topic\"])\n\ndefault_time(time,\"Asia/Shanghai\")",
"ENV_GLOBAL_HOST_TAGS": "host=__datakit_hostname,host_ip=__datakit_ip",
"ENV_HTTP_LISTEN": "0.0.0.0:9529",
"ENV_DEFAULT_ENABLED_INPUTS": "dk,cpu,disk,diskio,mem,swap,system,hostobject,net,host_processes,container,ddtrace,statsd,profile"
}
設定項目の説明:
- ENV_DATAWAY:必須、Guance に報告するゲートウェイアドレス
- KAFKAMQ:必須ではありません。kafkamq コレクターの設定です。詳細は Kafka コレクター設定ファイルの説明を参照してください
- SPRINGBOOT_LOG_P:必須ではありません。KAFKAMQ と組み合わせて使用するログ pipeline スクリプトで、kafka からのログデータを分割するために使います
- ENV_GLOBAL_HOST_TAGS:必須、コレクターのグローバル tag
- ENV_HTTP_LISTEN:必須、Datakit のポート。ip は 0.0.0.0 でなければ、他の pod からアクセスできません
- ENV_DEFAULT_ENABLED_INPUTS:必須、デフォルトで有効にするコレクター
詳細はアリババクラウド SAE アプリエンジン可観測性ベストプラクティスを参照してください
トレース¶
アリババクラウド SAE にアプリケーションをデプロイする場合、APM を対応するコンテナに組み込む必要があります:
- APM がビルドに必要とするパッケージファイルを oss にアップロードするか、APM のビルドパッケージをアプリケーションの Dockerfile に統合してビルドします
- 起動時の読み込みは、通常環境で APM を接続する手順と同じです
詳細はアリババクラウド SAE アプリエンジン可観測性ベストプラクティスを参照してください
メトリクス¶
Func をインストールする¶
Guance の統合 - 拡張 - マネージド版 Func の利用を推奨します
自分で Func をデプロイする場合はFunc を自分でデプロイするを参照してください
スクリプトを有効化する¶
ヒント:要件を満たすアリババクラウド AK を事前に準備してください(簡単のため、グローバル読み取り専用権限
ReadOnlyAccessを直接付与してもかまいません)
マネージド版の有効化スクリプト¶
- Guance コンソールにログインします
- 【統合】メニューをクリックし、【クラウドアカウント管理】を選択します
- 【クラウドアカウントを追加】をクリックし、【アリババクラウド】を選択して、画面に必要な情報を入力します。すでにクラウドアカウント情報を設定済みの場合は、この手順をスキップします
- 【テスト】をクリックし、テスト成功後に【保存】をクリックします。テストに失敗した場合は、関連する設定情報が正しいか確認し、再テストしてください
- 【クラウドアカウント管理】一覧で追加済みのクラウドアカウントを確認できます。該当するクラウドアカウントをクリックして詳細ページに入ります
- クラウドアカウント詳細ページの【統合】ボタンをクリックし、
未インストール一覧からアリババクラウド SAEを見つけて、【インストール】ボタンをクリックすると、インストール画面が表示されるのでインストールします。
手動有効化スクリプト¶
-
Func コンソールにログインし、【スクリプトマーケット】をクリックして Guance スクリプトマーケットに入り、
integration_alibabacloud_sae_app、integration_alibabacloud_sae_instanceを検索します -
【インストール】をクリックし、対応するパラメータを入力します:アリババクラウド AK ID、AK Secret、アカウント名。
-
【デプロイして起動スクリプトを実行】をクリックすると、システムが自動的に
Startupスクリプトセットを作成し、対応する起動スクリプトを自動で設定します。 -
有効化後は「管理 / 自動トリガー設定」で対応する自動トリガー設定を確認できます。【実行】をクリックすると、定期実行を待たずに即時 1 回実行できます。しばらくすると、実行タスクの記録と対応するログを確認できます。
確認¶
- 「管理 / 自動トリガー設定」で対応するタスクに自動トリガー設定が存在するか確認し、同時に対応タスクの記録とログを確認して異常がないかチェックします
- Guance の「インフラ / カスタム」で資産情報が存在するか確認します
- Guance の「メトリクス」で対応する監視データがあるか確認します
メトリクス一覧¶
| メトリクス | 単位 | Dimensions | 説明 |
|---|---|---|---|
cpu_Average |
% | userId、appId | アプリケーション CPU |
diskIopsRead_Average |
Count/Second | userId、appId | アプリケーションディスク IOPS 読み取り |
diskIopsWrite_Average |
Count/Second | userId、appId | アプリケーションディスク IOPS 書き込み |
diskRead_Average |
Byte/Second | userId、appId | アプリケーションディスク I/O スループット読み取り |
diskTotal_Average |
Kilobyte | userId、appId | アプリケーションディスク総量 |
diskUsed_Average |
Kilobyte | userId、appId | アプリケーションディスク使用量 |
diskWrite_Average |
Byte/Second | userId、appId | アプリケーションディスク I/O スループット書き込み |
instanceId_memoryUsed_Average |
MB | userId、appId、instanceId | インスタンス使用済みメモリ |
instance_cpu_Average |
% | userId、appId、instanceId | インスタンス CPU |
instance_diskIopsRead_Average |
Count/Second | userId、appId、instanceId | インスタンスディスク IOPS 読み取り |
instance_diskIopsWrite_Average |
Count/Second | userId、appId、instanceId | インスタンスディスク IOPS 書き込み |
instance_diskRead_Average |
Byte/Second | userId、appId、instanceId | インスタンスディスク I/O スループット読み取り |
instance_diskTotal_Average |
Kilobyte | userId、appId、instanceId | インスタンスディスク総量 |
instance_diskUsed_Average |
Kilobyte | userId、appId、instanceId | インスタンスディスク使用量 |
instance_diskWrite_Average |
Byte/Second | userId、appId、instanceId | インスタンスディスク I/O スループット書き込み |
instance_load_Average |
min | userId、appId、instanceId | インスタンス平均負荷 |
instance_memoryTotal_Average |
MB | userId、appId、instanceId | インスタンス総メモリ |
instance_memoryUsed_Average |
MB | userId、appId、instanceId | インスタンス使用済みメモリ |
instance_netRecv_Average |
Byte/Second | userId、appId、instanceId | インスタンス受信バイト |
instance_netRecvBytes_Average |
Byte | userId、appId、instanceId | インスタンス総受信バイト |
instance_netRecvDrop_Average |
Count/Second | userId、appId、instanceId | インスタンス受信データドロップ |
instance_netRecvError_Average |
Count/Second | userId、appId、instanceId | インスタンス受信エラーパケット |
instance_netRecvPacket_Average |
Count/Second | userId、appId、instanceId | インスタンス受信パケット |
instance_netTran_Average |
Byte/Second | userId、appId、instanceId | インスタンス送信バイト |
instance_netTranBytes_Average |
Byte | userId、appId、instanceId | インスタンス総送信バイト |
instance_netTranDrop_Average |
Count/Second | userId、appId、instanceId | インスタンス送信データドロップ |
instance_netTranError_Average |
Count/Second | userId、appId、instanceId | インスタンス送信エラーパケット |
instance_netTranPacket_Average |
Count/Second | userId、appId、instanceId | インスタンス送信パケット |
instance_tcpActiveConn_Average |
Count | userId、appId、instanceId | インスタンスのアクティブ TCP 接続数 |
instance_tcpInactiveConn_Average |
Count | userId、appId、instanceId | インスタンスの非アクティブ TCP 接続数 |
instance_tcpTotalConn_Average |
Count | userId、appId、instanceId | インスタンス総 TCP 接続数 |
load_Average |
min | userId、appId | アプリケーション平均負荷 |
memoryTotal_Average |
MB | userId、appId | アプリケーション総メモリ |
memoryUsed_Average |
MB | userId、appId | アプリケーション使用済みメモリ |
netRecv_Average |
Byte/Second | userId、appId | アプリケーション受信バイト |
netRecvBytes_Average |
Byte | userId、appId | アプリケーション総受信バイト |
netRecvDrop_Average |
Count/Second | userId、appId | アプリケーション受信データドロップ |
netRecvError_Average |
Count/Second | userId、appId | アプリケーション受信エラーパケット |
netRecvPacket_Average |
Count/Second | userId、appId | アプリケーション受信パケット |
netTran_Average |
Byte/Second | userId、appId | アプリケーション送信バイト |
netTranBytes_Average |
Byte | userId、appId | アプリケーション総送信バイト |
netTranDrop_Average |
Count/Second | userId、appId | アプリケーション送信データドロップ |
netTranError_Average |
Count/Second | userId、appId | アプリケーション送信エラーパケット |
netTranPacket_Average |
Count/Second | userId、appId | アプリケーション送信パケット |
tcpActiveConn_Average |
Count | userId、appId | アプリケーションのアクティブ TCP 接続数 |
tcpInactiveConn_Average |
Count | userId、appId | アプリケーションの非アクティブ TCP 接続数 |
tcpTotalConn_Average |
Count | userId、appId | アプリケーション総 TCP 接続数 |
ログ¶
アリババクラウド SAE は Kakfa 方式でログを Guance に出力できます。手順は次のとおりです。
- SAE アプリで Kafka ログ報告を有効にします
- DataKit で KafkaMQ ログ収集を有効にし、アプリケーションの Kafka ログ報告 Topic を収集します
詳細はアリババクラウド SAE アプリエンジン可観測性ベストプラクティスを参照してください
例: