リージョン内のIBM Cloud LogsインスタンスにプラットフォームログをルーティングするIBM Cloud Logs Routingサービスの設定
IBM Cloud Logs Routingサービスを使用して、IBM CloudアカウントからIBM Cloud Logsインスタンスのターゲット宛先にプラットフォームログをルーティングします。 リージョン内のテナントと、ターゲットとなるデスティネーションを設定する必要があります。
テナントは、リージョン内で実行されているIBM Cloud Logs Routingのアカウント固有の構成です。 テナント構成には、最大1つのターゲット定義が含まれます。 ターゲットはログのルーティング先を定義する。
IBM Cloud Logs Routingを使用したいアカウント各地域にテナントを作成する必要があります。 それぞれの地域は独立しており、地域がデータを共有することはない。
目標
このチュートリアルでは
-
IBM Cloud Logs Routing を設定して、プラットフォームのログをリージョン内の IBM Cloud Logs インスタンスにルーティングする。
-
プラットフォームログがIBM Cloud Logsインスタンスにルーティングされていることを確認します。
開始前に
以下のステップを実行します。
-
コンセプトを理解するために IBM® Cloud Logs Routingについて を復習してください。
-
始める で説明されているように、すべての前提条件となるツールをインストールします。
-
APIを使用してテナントの詳細を取得するには、管理APIを使用してIBM Cloud Logs Routingに接続できることを確認します。 詳しくは、IBM® Cloud Logs Routing への接続を参照してください。
-
IBM Cloud Logs にルーティングされるプラットフォームログには、IBM Cloud Logs インスタンスでデータを管理し機能を構成するために使用できるメタデータフィールドが含まれています。
アプリケーション名は、ログを生成してIBM Cloud Logsに送信する環境です。 プラットフォームログには、アプリケーション名が
ibm-platform-logに設定されています。サブシステム名は、ログまたはメトリクスを生成し、IBM Cloud Logsに送信するサービスまたはアプリケーションです。 プラットフォームのログには、サブシステム名が
CRNserviceName:instanceIDに設定されています。 VPCプラットフォームのログでは、フィールドはis:resourceTypeに設定されます。 -
アカウント内のターゲットを管理する権限を設定する。 詳しくは、IAM 許可の付与を参照してください。
IBM Cloud Logs Routingサービスをセットアップしてプラットフォームのログをルーティングする前に、IBM Cloud® Identity and Access Management(IAM)アクセストークンが必要です。 IBM CloudCLIを使用してこの情報を取得します。
-
IBM Cloud アカウントにログインします。 連携IDを使用している場合は、
--ssoオプションを含める。ibmcloud login [--sso]出力には、以下のようなユーザー名が含まれる:
Targeted account Jane Doe\'s Account (111111111112a21af53a2aeed19a1542a44) <-> 11111156 API endpoint: https://cloud.ibm.com Region: us-south User: Jane.Doe@ibm.com Account: Jane Doe\'s Account (111111111112a21af53a2aeed19a1542a44) <-> 11111156 Resource group: No resource group targeted, use 'ibmcloud target -g RESOURCE_GROUP' -
IBM Cloud Logs Routingを使用するためのアクセスをユーザーに許可するには、上記の生成された出力からユーザー名を収集します。 この例では、Jane.Doe@ibm.comとなります。 以下のコマンドの
<username>をあなたのユーザー名に置き換えてください:ibmcloud iam user-policy-create <username> --roles Manager --service-name logs-routerロールを直接アイデンティティに割り当てる代わりに、ロールをアクセスグループに割り当て、そのアクセスグループのメンバとしてアイデンティティを追加するのが一般的な戦略です。 アクセス・グループについて詳しくは、アクセス・グループのセットアップを参照してください。
-
サービス間認証の作成
IBM Cloud® Identity and Access Management(IAM)を使用して、IBM Cloud Logs RoutingにIBM Cloud Logsアクセスを許可する権限を作成する必要があります。
UIによるサービス間認証の作成
以下のステップを実行します。
-
IBM Cloud コンソールで、「管理」 > **「アクセス (IAM)」をクリックし、「許可」**を選択します。
-
「作成」 をクリックします。
-
ソースアカウントを設定する。 このアカウントを選択します。
-
ソース・サービスとしてログ・ルーティングを選択します。 そして、アクセスのスコープをすべてのリソースに設定する。
-
対象サービスとしてクラウドログを選択します。 すべてのリソースに設定すると、すべてのIBM Cloud Logsインスタンス、または選択した属性に基づくリソース > サービスインスタンスに設定することで単一のインスタンスへのアクセスが許可されます。
その他の属性は、このタイプの認可ではサポートされていない。
-
Service Accessセクションで、Sender を選択して、ターゲット・サービスにアクセスするソース・サービスへのアクセスを割り当てます。
-
「許可」 をクリックします。
CLIを使用したサービス間認証の作成
IBM Cloud Logs と IBM® Cloud Logs Routingは、IBM® Cloud Logs Routingサービスがテナントにログを送信できるようにします。
以下のステップを実行します。
-
IAMベアラートークンを取得し、環境変数としてエクスポートする。 以下のコマンドを実行します。
IBM Cloud® Identity and Access Management (IAM) アクセストークンを取得して、IBM® Cloud Logs Routing サービスへのリクエストを認証する必要があります。 詳細については、アクセス・トークンのリトリーブを参照してください。
例えば、以下のCLIコマンドを実行することで、IAMベアラートークンを取得し、環境変数としてエクスポートすることができます:
export IAM_TOKEN=`ibmcloud iam oauth-tokens --output json | jq -r '.iam_token'`トークンが正しくエクスポートされたことをターミナルに表示して確認してください。
echo $IAM_TOKEN出力は
Bearerで始まり、文字、数字、記号を含む文字列が続くはずである。 -
認可ポリシーを作成する。
ibmcloud iam authorization-policy-create logs-router logs Sender
IBM Cloud Logsの情報を取得します
IBM Cloud Logsインスタンスにデータをルーティングするには、ログを配信したい宛先の情報が必要です。 IBM Cloud Logs インスタンスには以下の情報が必要です:
- インスタンス CRN
- インジェスト(イングレス)エンドポイントとポート
このコマンドを使用して、 URL とIDを取得します
ibmcloud resource service-instances --service-name logs --long --output JSON | jq '[.[] | {name: .name, id: .id, region: .region_id, ingestion_endpoint: .extensions.external_ingress}]'
複数のインスタンスがある場合は、プラットフォームのログを受信するために使用するインスタンスを選択し、後で情報を保存します。
エンドポイントは似ている:
ingestion_endpoint: 3a622101-7521-4002-bf91-8c26e17eedcf.ingress.eu-de.logs.cloud.ibm.com
IDは似ている:
"crn:v1:bluemix:public:logs:eu-es:a/15ff25632a21af53a2aeed19a1542a44:3a622101-7521-4002-bf91-8c26e17eedcf::"
インスタンスに関するすべての情報を得るには、ibmcloud resource service-instances --service-name logs --long --output JSON このコマンドを実行すると、IBM Cloud Logsインスタンスがすべてリストアップされます。 以下のフィールドが必要です:インスタンスのCRNを含む ID、イングレス・エンドポイントを含む extensions.external_ingress、ポート値を含む
extensions.virtual_private_endpoints.endpoints.ports.port_max です。
テナントとターゲットの作成
プラットフォームのログを受信するには、IBM Cloud Logs Routingサービスを使ってテナントを作成する必要があります。
IBM Cloud Logsインスタンスにプラットフォームログを収集し、ルーティングしたい地域にテナントを作成する必要があります。
APIを使用したテナントとターゲットの作成
コマンドラインから以下の cURL :
createリクエストは、リージョンとデスティネーションにテナントを作成する。
curl -X POST https://<MANAGEMENT-API-ENDPOINT>:443/v1/tenants \
-H "Content-Type: application/json" \
-H "Authorization: ${IAM_TOKEN}" \
-H 'IBM-API-Version: DATE' \
--data '{
"name": "TENANT_NAME",
"targets": [
{
"log_sink_crn": "CLOUD_LOGS_INSTANCE_ID",
"name": "TARGET_NAME",
"parameters": {
"host": "CLOUD_LOGS_INSTANCE_INGRESS_ENDPOINT",
"port": PORT
}
}
]
}'
説明
| パラメーター | 説明 |
|---|---|
MANAGEMENT-API-ENDPOINT |
IBM® Cloud Logs Routingサービスのエンドポイント。 詳しくは、エンドポイントを参照してください。 例: https://management.eu-es.logs-router.cloud.ibm.com |
IAM_TOKEN |
前回取得したIAMトークン。 あなたの環境で上記のようにエクスポートした場合は、自動的に置き換えられます。 |
DATE |
現在の日付。 例: 2024-03-01 |
TENANT_NAME |
テナント名 この名前は、このアカウントのテナント間で一意でなければならず、35文字まで使用できます。 値にはこれらの文字しか含めることができません:a-z,0-9,-./ 例は eu-es-tenant です。 |
TARGET_NAME |
ターゲット・デスティネーションの名前。 この名前は、リージョン内の全ターゲットで一意でなければならず、35文字までとすることができる。 値にはこれらの文字しか含めることができません:a-z,0-9,-./ 例えば、IBM Cloud Logsインスタンスの名前を選ぶことができます。 例えば、platformlogs-eu-es のようになります。 |
CLOUD_LOGS_INSTANCE_ID |
IBM Cloud Logs インスタンスの CRN。 |
CLOUD_LOGS_INSTANCE_INGRESS_ENDPOINT |
IBM Cloud Logs インスタンスのエンドポイント。 |
PORT |
次に設定 443 |
コマンドには、以前に収集した値が含まれているので、注意深く見直してください。 コマンドが期待通りに動作するように、必要な置換を行ってください。
作成リクエストに成功すると、テナントのメタデータを含むレスポンスが返されます。 以下に例を示します。
{
"id": "3517d2ed-9429-af34-ad52-34278391cbc8:",
"created_at": "2023-10-20T18:30:00.143156Z",
"updated_at": "2023-10-20T18:30:00.143156Z",
"crn": "crn:v1:bluemix:public:logs-router:eu-de:a/3516b8fa0a174a71899f5affa4f18d78:3517d2ed-9429-af34-ad52-34278391cbc8::",
"name": "tenant",
"etag": "\"822b4b5423e225206c1d75666595714a11925cd0f82b229839864443d6c3c049\"",
"targets": [
{
"id": "86432b-66a6-df12-7003-888a21a2b3",
"log_sink_crn": "crn:v1:bluemix:public:logs:eu-gb:a/91d1d1e42f9b684df920bbd06461c222:743e3b4f-72bc-4669-9fa6-0e6621d0b232::",
"name": "my-log-sink",
"etag": "\"c3a43545a7f2675970671ac3a57b8db067a1866b2222e1b950ee8da612e347c6\"",
"type": "logs",
"created_at": "2023-10-20T18:30:00.143156Z",
"updated_at": "2023-10-20T18:30:00.143156Z",
"parameters": {
"host": "743e3b4f-72bc-4669-9fa6-0e6621d0b232.ingress.eu-gb.logs.cloud.ibm.com",
"port": 443
}
}
]
}
UIを使用したテナントの作成
以下のステップを実行します。
-
「メニュー」 アイコン
>「可観測性」 をクリックする。
-
ロギング > ルーティングをクリックします。
-
目標設定をクリックします。
-
リストから IBM Cloud Logs インスタンスを選択する。 これは、 IBM Cloud Logs Routing によってルーティングされたログを受信したいインスタンスです。
リストから IBM Cloud Logs インスタンスを選択するか、特定のCRNを指定することができます。
IBM Cloud Logsインスタンスは、構成しているのと同じアカウントになければなりません。
-
保存 をクリックします。
ログが宛先ターゲットに送信されることの確認
IBM Cloud Logsにプラットフォームのログが正常に流れていることを確認するには、以下の手順を実行します:
-
リージョン内のプラットフォームログを収集する対象として設定されているIBM Cloud Logs インスタンスのIBM Cloud Logs Web UI を起動します。 これは、ターゲットをセットアップするステップで選択したインスタンスです。
-
カスタムビューでログを見る 詳しくは、ログの表示を参照してください。
すべてのプラットフォームログはJSONで生成される。 インスタンスのプラットフォームログをフィルタリングするには、ibm-platform-logs の値を applicationName として選択します。