クラウドアプリのログをパイプラインにルーティングする
このガイドでは、オブザーバビリティパイプラインのワークフロー内で、単一のJSONログイベントをシミュレート、送信、および検証する方法を説明します。
目標: 模擬アプリログを取り込み、パイプラインに到達したことを確認し、Splunk、Elastic、S3などのデスティネーションへのルーティングの準備を整えます。
なぜ重要なのか
複雑なパースルールを作成したり、高価なセキュリティ情報イベント管理(SIEM)ツールにデータをルーティングしたりする前に、取り込みパスを検証する必要があります。 このワークフローにより、以下を確認できます。
- APIトークンが機能していること。
- パイプラインがJSON構造を受け入れていること。
- データをリアルタイムで確認できること。
始める前に
以下を準備してください。
- APIトークン(
ingest権限を持つもの)。 - 一意のストリームID(プラットフォームUIから取得)。
- ターミナルアクセス(
curlを実行するため)またはPostman。
パイプラインの概要
- Mermaid (画像)
- Mermaid (コード)
- ASCII
flowchart LR
A[クラウドアプリ] -->|JSONログ| B[取り込みAPI]
B --> C{ルーティングエンジン}
C -->|一致ルール| D[ライブデータビューアー]
C -->|一致なし| E[ドロップ / デフォルトバケット]
[クラウドアプリ]
|
| |JSONログ|
v
[取り込みAPI]
|
v
{ ルーティングエンジン }
|
+-----------------------+
| |
v |一致ルール| v |一致なし|
+-----------------------+ +-----------------------+
| ライブデータビューアー | | ドロップ / デフォルトバケット |
+-----------------------+ +-----------------------+
1. ストリームの作成または選択
オブザーバビリティプラットフォームで以下の操作を行います。
- Streams > Management に移動します。
- New Stream をクリックするか、
default-logsを選択します。 - Stream ID(例:
st_12345)をコピーします。 - (任意)リテンションポリシーを設定します。デフォルトは通常7日間です。
2. サンプルログイベントの作成
以下を app-log.json として保存し、クラウドアプリのログをシミュレートします。
{
"timestamp": "2025-11-15T08:30:00Z",
"service": "payment-gateway",
"level": "ERROR",
"message": "Transaction failed: Gateway timeout",
"transaction_id": "txn_998877",
"meta": {
"region": "us-east-1",
"customer_id": "cus_554433"
}
}
注記
適切なインデックス作成を確実にするため、timestamp は国際標準化機構(ISO)8601形式のままにしてください。
3. ログイベントの送信
curl を使用して、アプリがログを送信する様子をシミュレートします。
export STREAM_ID="your_stream_id_here"
export API_TOKEN="your_api_token_here"
curl -X POST "https://api.observability-platform.com/v1/streams/ingest" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Stream-Id: $STREAM_ID" \
-d @app-log.json
期待されるレスポンス
{
"status": "accepted",
"ingest_id": "evt_abc12345",
"accepted_items": 1
}
status: accepted と表示されれば、パイプラインはデータを受信しています。
4. ライブデータビューアーでのログの確認
- プラットフォームUIで Explore または Live Tail に移動します。
- ストリーム(
st_12345)を選択します。 - フィルタ
service == "payment-gateway"を追加します。 - イベントが即座に表示されます。
[ERROR] 2025-11-15T08:30:00Z service=payment-gateway msg="Transaction failed..."
5. デスティネーションへのログのルーティング
データが流れ始めたら、ルーティングルールを作成します。
- Pipelines > Routing Rules に移動します。
- New Rule をクリックします。
- フィルタ:
level == "ERROR" - アクション:
S3-ArchiveとSlack-Alertsにルーティング。 - Save & Deploy。
再度 curl リクエストを送信します。
- S3バケットを確認します。
- Slackチャンネルを確認します。
6. パイプラインの最適化
フローが機能するようになったら、以下の追加を検討してください。
- パース:
customer_idを最上位のフィールドとして抽出します。 - 付与:
service名に基づいてteam_ownerタグを追加します。 - マスク:
customer_idが個人を特定できる情報(PII)である場合、難読化します。
トラブルシューティング
| エラーコード | 考えられる原因 / 解決策 |
|---|---|
401 Unauthorized | APIトークンの権限を確認してください。 |
400 Bad Request | JSONの構文を確認してください。 |
404 Not Found | X-Stream-Id が正しいか確認してください。 |
タイムスタンプの問題 | 協定世界時(UTC)ISO 8601形式を使用していることを確認してください。 |
データが表示されない | 新しいログを除外するアクティブなフィルタがないか確認してください。 |
次のステップ
- 取り込みAPIリファレンス
- オブザーバビリティの概念
- VMログ、コンテナログ、APIイベントなど、さまざまなログタイプの送信を試してください。