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 クラスター上で Customer Insights を無効にする方法に関する記事で説明されている手順を実行してください。 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 の形式で定義され、次の制約に従います。
- 互換性のない API の変更を行ったときは、MAJOR バージョンをインクリメントします。
- 下位互換性のある方法で機能を追加したときは、MINOR バージョンをインクリメントします。
- 下位互換性のあるバグ修正を行ったときは、PATCH バージョンをインクリメントします。
Kubernetes と OSS エコシステムの台頭に伴い、Container Insights では、K8s 推奨標準に従って semver イメージを使用するように移行しています。ここでは、マイナー バージョンが導入されるたびに、新しい Kubernetes リリースごとにすべての破壊的変更を公開する必要がありました。
重複するエージェントを修復する
2022 年 10 月より前にカスタム メソッドを使用して Container Insights を手動で有効にした場合、最終的に複数のバージョンのエージェントを同時に実行できます。 この重複を解消するには、次の手順を実行します。
omsagent コンテナーのメモリや CPU の制限など、カスタム設定の詳細を収集します。
ama-log の既定のリソース制限を確認し、それがニーズを満たしているかどうかを判断します。 そうでない場合は、必要に応じて、メモリと 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 以前のオンボーディングからリソースをクリーンアップします。
以前に Helm chart を使用してオンボードした場合:
次のコマンドを使用して、名前空間全体のすべてのリリースを一覧表示します。
helm list --all-namespaces
次のコマンドを使用して、Customer Insights 用にインストールされた chart をクリーンします。
helm uninstall <releaseName> --namespace <Namespace>
yaml デプロイを使用して以前にオンボードした場合:
次のコマンドを使用して、以前のカスタム デプロイ yaml ファイルをダウンロードします。
curl -LO raw.githubusercontent.com/microsoft/Docker-Provider/ci_dev/kubernetes/omsagent.yaml
次のコマンドを使用して、古い omsagent chart をクリーンします。
kubectl delete -f omsagent.yaml
Kubernetes クラスター上で Customer Insights を無効にする方法のガイダンスを参考にして、Customer Insights を無効にし、関連するすべてのリソースをクリーンします
Kubernetes クラスター上で Customer Insights を有効にする方法のガイダンスを参考にして、Customer Insights を再度オンボードします
次のステップ
エージェントのアップグレード中に問題が発生した場合は、トラブルシューティング ガイドを参照してください。