Kubernetes モニタリングのトラブルシューティング、および FAQ

このセクションには、Kubernetes モニタリングに関する重要なトラブルシューティング情報、およびよくある質問が含まれています。
apmdevops106
このセクションには、Kubernetes モニタリングに関する重要なトラブルシューティング情報、およびよくある質問が含まれています。
Kubernetes モニタリングのトラブルシューティング
問題をトラブルシューティングするには、以下のリソースを使用します。
  • Docker Monitor、コンテナ フロー マップ、および Kubernetes 持続性メトリックを確認します。
    Agent Stats|Sustainability|DockerMonitor
    Agent Stats|Sustainability|ContainerFlow Agent Stats|Sustainability|Kubernetesmonitor
  • エラーを識別できるログを収集します。
    kubectl logs <caagent_pod> kubernetesmonitor.log 2>&1
  • CA サポートにお問い合わせください。
APITOKEN ログインがAWS 上で動作しない
症状:
  • Deployer ポッドによって OpenShift/Kubernetes インフラストラクチャ データが見つかりません。
  • ポッド ログ ファイルに以下のエラー メッセージが表示されます。
    io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: [AWS console URL] Message: Unauthorized! Configured service account doesn't have access.
    Service account may have been revoked..
    at io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:315)
解決方法:
API トークンに対してクラスタ読み取りアクセス権を与えたかを確認してください。「Kubernetes モニタリングのインストールおよび設定」の「APITOKEN を取得する」を参照してください。
あるいは、クラスタのメタデータ全体への読み取りアクセス権も持つ、Kubernetes ユーザ名とパスワードを渡すことができます。 以下の 3 つの異なる方法で、これらの認証情報を提供できます。
  • 方法 1
    APITOKEN 環境変数をプレーン テキストの認証情報に置き換えます。
    caagent-kubernetesmonitor.yml
    ファイルで、以下を削除します。
    - name: apitoken
    value: [APITOKEN]
    そして、以下に置き換えます
    - name: k8s_username value: [USERNAME] - name: k8s_password value: [PASSWORD]
    [USERNAME] と [PASSWORD] を実際のユーザ名とパスワードに置換えます。
  • 方法 2
    APITOKEN 環境変数を、秘密キーからのプレーン テキスト k8s_username および k8s_password に置き換えます。
    caagent-kubernetesmonitor.yml
    ファイルで、以下を削除します。
    - name: apitoken
    value: [APITOKEN]
    そして、以下に置き換えます
    - name: k8s_username
    value: admin
    - name: k8s_password
    valueFrom:
    name: [MYSECRET]
    key: password
    [MYSECRET] を実際の秘密キーの名前に置き換えます。
  • 方法 3
    暗号化されたエージェント パスワードを使用します。 以下の手順に従います。
    1. APM_IA/apmia/lib
      ディレクトリに移動します。
    2. 以下のコマンドを実行し、その出力をクリップボードにコピーします。
      java -cp EPAgent.jar com.wily.util.properties.PropertiesUtils encrypt MySecretPassword
    3. caagent-kubernetesmonitor.yml
      ファイルで、以下を削除します。
      - name: apitoken
      value: [APITOKEN]
      そして、以下に置き換えます
      - name: k8s_username
      value: admin
      - name: k8s_password
      value: [THE_VALUE_RETURNED_BY_THE_ENCRYPTION_COMMAND]
      [THE_VALUE_RETURNED_BY_THE_ENCRYPTION_COMMAND] を前の手順で取得した、実際の値に置き換えます。
使用した方法にかかわらず、Kubernetes のドキュメントを確認して、空白の形式が正しいことを確認します。
よくある質問
インストールが成功したかどうかを知るにはどうすればよいですか
Kubernetes クラスタ内の各ノードに、以下のような名前で実行中のポッドがある場合、Kubernetes モニタリングは正常にインストールされています。
  • caagent-xxxxx
1 つのノードには、ホストのメタデータ情報が含まれる 1 つの追加ポッドが必要です。 このポッドは以下のような名前になっています。
  • caagent-deployment-xxxxx
これらのインスタンスの正しいポッド名を確認します。 クラスタの各ノードで以下のコマンドを呼び出すことによって、この情報を検証できます。
kubectl get pods | grep caagent
または
kubectl get pods | grep caagent-deployment
アンインストールが成功したかどうかを知るにはどうすればよいですか
クラスタのいずれかのノードで実行中の
caagent
という名前のポッドが存在しなくなった場合、Kubernetes モニタは正常にアンインストールされています。
クラスタの各ノードで以下のコマンドを呼び出すことによって、これを検証できます。 コマンドの出力は空白になる必要があります。
kubectl get pods | grep caagent
エージェント ログ レベルを変更するにはどうすればよいですか
ログ レベルを変更するには、以下の手順に従います。
  1. caagent
    ポッドにログインします。
    kubectl exec -it <caagent pod name> bash
  2. ./core/config/IntroscopeAgent.profile
    を開きます。
  3. エージェントのドキュメントの説明に従ってログ レベルを変更します。
ポッドまたはコンテナを再起動する必要はありません。
カスタム コンテナ ラベルを属性として発行するにはどうすればよいですか
カスタム コンテナ ラベルを属性として発行するには、以下の手順に従います。
  1. コンテナを識別します。
    docker ps | grep caagent
  2. Docker から現在の
    attributes.json
    を取得します。
    docker cp <caagent_container>:/usr/local/openshift/APM_IA/extensions/OpenshiftMonitor/config/attributes.json
  3. カスタム属性の設定」で説明しているとおりに
    attributes.json
    に変更を加えます。
  4. 変更したファイルをコンテナにコピーします。
    docker cp attributes.json <caagent_container>:/usr/local/openshift/APM_IA/extensions/OpenshiftMonitor/config/attributes.json
  5. コンテナを再起動します。
    docker restart <caagent_container>
コンテナ フロー マップが動作しており、エッジを生成していることを知るにはどうすればよいですか
コンテナ フロー マップが正しく動作しており、エッジを生成しているかどうかを確認するには、以下の手順に従います。
  1. 持続性メトリックのリスト
    で、持続性メトリックを確認します。
    Agent Stats|Sustainability|ContainerFlow
  2. 詳細ログがさらに必要な場合は、次のモジュールの DEBUG ログを有効化します。
    log4j.logger.IntroscopeAgent.NsEnterOutputProcessor=DEBUG, console, logfile。
    DEBUG レベルを有効化すると、ContainerFlow 持続可能性メトリックの下にエッジ情報アイテムが作成されます。
ノードにポッドが展開されていない場合、デプロイヤ ポッドがメトリック ビューでこのノードからプロジェクトを取得するのはなぜですか
Kubernetes モニタリングには、内部から外部(ポッド モニタリング)と外部から内部への 2 つのモニタリング方法があり、Kubernetes クラスタ メタデータが収集されます。 Kubernetes モニタリングは、この情報を使用して、メトリック ビューの下にクラスタの詳細を表示します。 このため、ポッドが展開されていないノードからのプロジェクトも確認できます。