Container insights エージェントを管理する

Container Insights では、コンテナー化されたバージョンの Linux 用 Log Analytics エージェントが使用されます。 初期のデプロイ後は、ライフサイクル中に日常的なタスクまたはオプションのタスクを実行する必要がある場合があります。 この記事では、エージェントを手動でアップグレードし、特定のコンテナーから環境変数のコレクションを無効にする方法について詳しく説明します。

Note

既に AKS クラスターをデプロイし、Azure CLI または Resource Manager テンプレートを使用して監視を有効にしている場合、kubectl を使用してエージェントのアップグレード、削除、再デプロイ、デプロイを行うことはできません。 テンプレートはクラスターと同じリソース グループ内に展開する必要があります。

Container Insights エージェントをアップグレードする

Container Insights では、コンテナー化されたバージョンの Linux 用 Log Analytics エージェントが使用されます。 エージェントの新しいバージョンがリリースされると、Azure Kubernetes Service (AKS) および Azure Arc 対応 Kubernetes でホストされているマネージド Kubernetes クラスター上のエージェントが自動的にアップグレードされます。

AKS でホストされているクラスターのエージェントのアップグレードに失敗している場合、この記事では、エージェントを手動でアップグレードするプロセスについても説明します。 リリースされたバージョンを確認するには、「エージェントのリリースのお知らせ」を参照してください。

AKS クラスター上のエージェントをアップグレードする

AKS クラスター上のエージェントをアップグレードするプロセスは、2 つの手順で構成されます。 最初の手順は、Azure CLI を使用して Container insights の監視を無効にすることです。 Kubernetes クラスターでのコンテナー分析情報の無効化に関する記事で説明されている手順に従います。 Azure CLI を使用することにより、ソリューションとワークスペースに格納されている対応するデータに影響を与えることなく、クラスター内のノードからエージェントを削除できます。

注意

このメンテナンス アクティビティを実行している間、クラスター内のノードは収集されたデータを転送しません。 パフォーマンス ビューでは、エージェントを削除してから新しいバージョンをインストールしている間のデータは表示されません。

2 番目の手順では、エージェントの新しいバージョンをインストールします。 「Azure CLI を使用して監視を有効にする」で説明されている手順に従って、このプロセスを完了します。

監視を再び有効にした後、クラスターの更新された正常性メトリックが表示されるまで、約 15 分かかる場合があります。 エージェントが正常にアップグレードされたことを確認するには、次の 2 つの方法があります。

  • コマンド kubectl get pod <ama-logs-agent-pod-name> -n kube-system -o=jsonpath='{.spec.containers[0].image}' を実行します。 返された状態の、出力の Containers セクションにある Azure Monitor エージェントの Image の下の値をメモします。
  • [ノード] タブで、クラスター ノードを選択します。 右側の [プロパティ] ウィンドウで、[エージェント イメージ] タグの値をメモします。

表示されるエージェントのバージョンは、[Release history](リリース履歴) ページに表示されている最新バージョンと一致している必要があります。

ハイブリッド Kubernetes クラスター上でエージェントをアップグレードする

次の手順を実行して、以下の場所で実行されている Kubernetes クラスター上のエージェントをアップグレードします。

  • AKS エンジンを使用して、Azure でホストされたセルフマネージド Kubernetes クラスター。
  • AKS エンジンを使用して、Azure Stack またはオンプレミスでホストされたセルフマネージド Kubernetes クラスター。

Log Analytics ワークスペースが商用 Azure にある場合には、次のコマンドを実行します。

$ helm upgrade --set omsagent.secret.wsid=<your_workspace_id>,omsagent.secret.key=<your_workspace_key>,omsagent.env.clusterName=<my_prod_cluster> incubator/azuremonitor-containers

Log Analytics ワークスペースが、21Vianet によって運営される Microsoft Azure 内にある場合には、次のコマンドを実行します:

$ helm upgrade --set omsagent.domain=opinsights.azure.cn,omsagent.secret.wsid=<your_workspace_id>,omsagent.secret.key=<your_workspace_key>,omsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers

Log Analytics ワークスペースが Azure US Government にある場合には、次のコマンドを実行します。

$ helm upgrade --set omsagent.domain=opinsights.azure.us,omsagent.secret.wsid=<your_workspace_id>,omsagent.secret.key=<your_workspace_key>,omsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers

コンテナーの環境変数コレクションを無効にする

Container Insights では、ポッドで実行されているコンテナーから環境変数が収集され、[コンテナー] ビューで選択したコンテナーのプロパティ ペインに表示されます。 この動作を制御するには、Kubernetes クラスターのデプロイ中、またはデプロイ後に環境変数 AZMON_COLLECT_ENV を設定して、特定のコンテナーのコレクションを無効にします。 この機能は、エージェント バージョン ciprod11292018 以降で使用できます。

新規または既存のコンテナーの環境変数のコレクションを無効にするには、Kubernetes デプロイ YAML 構成ファイルで変数 AZMON_COLLECT_ENV を値 False に設定します。

- name: AZMON_COLLECT_ENV  
  value: "False"  

次の kubectl apply -f <path to yaml file> コマンドを実行して、Azure Red Hat OpenShift 以外の Kubernetes クラスターに変更を適用します。 ConfigMap を編集し、この変更を Azure Red Hat OpenShift クラスターに適用するには、次のコマンドを実行します。

oc edit configmaps container-azm-ms-agentconfig -n openshift-azure-logging

このコマンドにより、既定のテキスト エディターが開きます。 変数を設定したら、ファイルをエディターに保存します。

構成の変更が有効になったことを確認するには、Container insights の [コンテナー] ビューでコンテナーを選択します。 プロパティ ウィンドウで、[環境変数] を展開します。 このセクションには、先ほど作成した変数である AZMON_COLLECT_ENV=FALSE のみが表示されます。 その他のすべてのコンテナーでは、[環境変数] セクションには、検出されたすべての環境変数がリストされます。

環境変数の検出を再度可能にするには、前に使用したのと同じプロセスを適用し、値を False から True に変更します。 次に、kubectl コマンドを再実行してコンテナーを更新します。

- name: AZMON_COLLECT_ENV  
  value: "True"  

コンテナー分析情報エージェントのバージョンのセマンティック バージョンの更新

Container Insights では、イメージのバージョンと名前付け規則が [semver 形式] (https://semver.org/) に移行しました。 SemVer は、開発者が開発フェーズ中にソフトウェアに加えられたすべての変更を追跡し、ソフトウェアのバージョン管理が一貫していて意味のあるものになるようにするのに役立ちます。 古いバージョンは ciprod<timestamp>-<commitId> と win-ciprod<timestamp>-<commitId> の形式でした。Semver 形式を使用した最初のイメージ バージョンは、Linux の場合は 3.1.4、Windows の場合は win-3.1.4 です。

Semver は、汎用のソフトウェア バージョン管理スキーマであり、MAJOR.MINOR.PATCH の形式で定義され、次の制約に従います。

  1. 互換性のない API の変更を行ったときは、MAJOR バージョンをインクリメントします。
  2. 下位互換性のある方法で機能を追加したときは、MINOR バージョンをインクリメントします。
  3. 下位互換性のあるバグ修正を行ったときは、PATCH バージョンをインクリメントします。

Kubernetes と OSS エコシステムの台頭に伴い、Container Insights では、K8s 推奨標準に従って semver イメージを使用するように移行しています。ここでは、マイナー バージョンが導入されるたびに、新しい Kubernetes リリースごとにすべての破壊的変更を公開する必要がありました。

重複するエージェントを修復する

2022 年 10 月より前にカスタム メソッドを使用して Container インサイトを手動で有効にした場合、最終的に複数のバージョンのエージェントが同時に実行される可能性があります。 この重複をクリアするには、次の手順に従います。

  1. omsagent コンテナーのメモリや CPU の制限など、カスタム設定の詳細を収集します。

  2. ama-logs の既定のリソース制限を確認し、ニーズを満たしているかどうかを判断します。 そうでない場合は、メモリ/CPU の制限の調査と切り替えに役立つサポート トピックを作成する必要があります。 これは、一部のお客様が以前に OOMKilled 例外を発生させたスケール制限の問題に対処するのに役立ちます。

    OS [コントローラー名] 既定の制限
    Linux ds-cpu-limit-linux 500m
    Linux ds-memory-limit-linux 750Mi
    Linux rs-cpu-limit 1
    Linux rs-memory-limit 1.5Gi
    Windows ds-cpu-limit-windows 500m
    Windows ds-memory-limit-windows 1Gi
  3. 以前のオンボーディングからリソースをクリーンアップします。

    以前に Helm チャート を使用してオンボードした場合:

    次のコマンドを使用して、名前空間全体のすべてのリリースを一覧表示します。

     helm list --all-namespaces
    

    次のコマンドを使用して、Container insights 用にインストールされたグラフをクリーンアップします。

    helm uninstall <releaseName> --namespace <Namespace>
    

    以前に yaml デプロイ を使用してオンボードした場合:

    次のコマンドを使用して、前のカスタム デプロイ yaml ファイルをダウンロードします。

    curl -LO raw.githubusercontent.com/microsoft/Docker-Provider/ci_dev/kubernetes/omsagent.yaml
    

    次のコマンドを使用して、古い omsagent グラフをクリーンアップします。

    kubectl delete -f omsagent.yaml
    
  4. Kubernetes クラスターでの Container insights の無効化に関するガイダンスを使用して、Container insights を無効にして関連するすべてのリソースをクリーンする

  5. Kubernetes クラスターでの Container Insights の有効化に関するガイダンス を使用して、Container insights に再オンボードします

次のステップ

エージェントのアップグレード中に問題が発生した場合は、トラブルシューティング ガイドを参照してください。