IBM Cloud Kubernetes ServiceログデータをIBM Cloud Logsに送る
このチュートリアルでは、IBM Cloud® Kubernetes Serviceを設定して、IBM Cloud Logsに直接ログを送信します。 これらのログは、問題をトラブルシューティングし、 Kubernetes クラスタとアプリケーションの健全性とパフォーマンスを向上させるのに役立ちます。
目標
このチュートリアルでは
-
ロギング・エージェント を既存の IBM Cloud Kubernetes Service クラスタにデプロイします。
-
ログ・データが IBM Cloud Logs インスタンスに流れていることを確認してください。
開始前に
始める前に、前提条件が揃っていることを確認してください。
-
IBM Cloud® Kubernetes Service を作成し、IBM Cloud Logs のインスタンスをプロビジョニングします。
-
IBM Cloud CLI をインストールします。
-
Kubernetes コマンドラインツール、kubectl をインストールします。
-
JSON CLI プロセッサ (
jq) をインストールします。 -
YAML CLIプロセッサをインストールする (
yq).
IBM Cloud CLI, kubectl, jq, yq をインストールする代わりに、IBM Cloud Shell を使うこともできます
クラスタに接続する
IBM Cloud Kubernetes Service クラスタに接続する。 クラスタに接続すると、kubectl コマンドをクラスタで実行できるようになります。
-
IBM Cloud アカウントにログインします。 連携IDを使用している場合は、
--ssoオプションを含める。ibmcloud login -
IBM Cloud Kubernetes Service CLIプラグインをインストールする
ibmcloud plugin install ks -
利用可能なクラスタをリストアップし、接続するクラスタをメモする。
ibmcloud ks clusters -
クラスタに接続します。
<cluster_name>をクラスタ名に置き換えてください。ibmcloud ks cluster config --cluster <cluster_name> -
すべてのネームスペースで実行されているすべてのポッドを一覧表示して、クラスタに接続されていて、
kubectlコマンドを実行できることを確認します。kubectl get pods --all-namespaces
API 鍵の作成
デーモンセットとしてロギング・エージェントをプロビジョニングする前に、IAM APIキーとロギング取り込みエンドポイントが必要です。 IBM CloudCLIを使用してこの情報を取得します。
まず、サービスIDを作成し、APIキーを取得する。
-
以下のコマンドを実行して、サービスID を作成する。
ibmcloud iam service-id-create kubernetes-logs-agent --description "Service ID for sending logs from IKS" -
以下のコマンドを実行して、作成したサービスIDにIBM Cloud Logs の
Senderロールを付与します。ibmcloud iam service-policy-create kubernetes-logs-agent --service-name logs --roles Sender -
以下のコマンドを実行して、IAM APIキーを作成する。 必要に応じて、キー名(
kubernetes-logs-agent-apikey)と説明(--d)をカスタマイズできます。ibmcloud iam service-api-key-create kubernetes-logs-agent-apikey kubernetes-logs-agent --description "API key for sending logs to the IBM Cloud Logs service"APIキーは
API Keyに続く出力で返されます:ID ApiKey-xxxxxxxx-b815-46c7-bc9f-516115bc31c6 Name kubernetes-logs-agent-apikey Description API key for sending logs to the IBM Cloud Logs service Created At 2024-09-18T17:17+0000 API Key <apikey is displayed here> Locked false
注:
-
APIキーを作成するたびに、新しいIAMシークレットが生成される。
-
APIキーには機密情報が含まれているため、安全に保管してください。
ロギングのエンドポイントを決定する
2番目に必要な情報は、IBM Cloud Logsインスタンスの取り込みエンドポイントです。 このコマンドを使用して URL を取得します
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
エージェントYAMLファイルの作成
このステップでは、エージェント・デーモンセットを構成するために使用するYAMLファイルを作成します。
-
以下の内容で、
logs-values.yamlという名前のファイルを作成する:このファイルには、配置に固有の設定が含まれています。
metadata: name: "logs-agent" image: version: "1.4.0" # required clusterName: "" # Enter the name of your cluster. This information is used to improve the metadata and help with your filtering. env: # ingestionHost is a required field. For example: # ingestionHost: "<logs instance>.ingress.us-east.logs.cloud.ibm.com" ingestionHost: "" # required # If you are using private CSE proxy, then use port number "3443" # If you are using private VPE Gateway, then use port number "443" # If you are using the public endpoint, then use port number "443" ingestionPort: "" # required iamMode: "TrustedProfile" # trustedProfileID - trusted profile id - required for iam trusted profile mode trustedProfileID: "Profile-yyyyyyyy-xxxx-xxxx-yyyy-zzzzzzzzzzzz" # required if iamMode is set to TrustedProfile -
yamlファイルのフィールドを、あなたの環境に固有の値で更新する。
デーモンセットのデプロイ
APIキー、 URL、およびYAMLファイルを使用して、クラスタにエージェントをデプロイします。
-
helm registry loginコマンドを実行して、 Helm レジストリにログインする:helm registry login -u iambearer -p $(ibmcloud iam oauth-tokens --output json | jq -r .iam_token | cut -d " " -f2) icr.ioWindows Windows PowerShell ユーザーは、代わりに次のコマンドを使用してください
helm registry login -u iambearer -p ((ibmcloud iam oauth-tokens --output json | ConvertFrom-Json).iam_token -replace 'Bearer ', '') icr.io詳細は「Helmチャートを 'Container Registry で使用する : 他のレジストリや 'Helmリポジトリからチャートを引き出す 参照。
-
エージェントを展開する。
サービスIDのAPIキー(
iamMode=IAMAPIKey)を使用している場合は、以下のコマンドを実行してください:helm install <install-name> oci://icr.io/ibm/observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value>ここで、
<install-name>Helm のインストール( )の名前です。logs-agent<chart-version>はヘルムチャートのバージョン。 Helmチャートのバージョンは、エージェント・イメージのバージョンと一致している必要があります。 詳しくは Helmのチャートバージョン を参照。<PATH>は 'logs-values.yamlファイルがあるディレクトリパスである。<APIKey-value>は、ステップ1で設定した ServiceIDに関連する IAM apikey です
信頼されたプロファイルを使用してエージェントを配置することもできます。 詳細については、Helmチャートを使用したKubernetesクラスタ用のLoggingエージェントのデプロイ を参照してください。
ログが送信されていることを確認する
IBM Cloud® Kubernetes Serviceのログが正常にIBM Cloud Logsに流れるようにするには、以下の手順を実行します:
-
IBM Cloud Logs UI にアクセスし、
Livetail をクリックします。
-
Startをクリックすると、到着したログをリアルタイムで見ることができます。
kube-system アプリケーションからの連続したログデータの流れが見えるはずです。 これらのログはクラスタからのものです。