トラブルシューティング

Custom Edition の問題のトラブルシューティング方法に関する情報。

トラブルシューティングのための診断情報を収集する

` kubectl -instana diagnostics` コマンドを使用すると、 Kubernetes または OpenShift 上で実行されている Instana Self-Hosted 展開(Custom Edition)のトラブルシューティングに必要な、 Kubernetes、プラットフォーム、ノード、およびデータストアに関する包括的な診断情報を収集できます。

コマンドを実行するには、次の構文を使用してください:

kubectl-instana diagnostics [flags]
kubectl-instana debug [flags]

kubectl-instana debug は の kubectl-instana diagnostics 別名であり、動作はまったく同じです。

注: このコマンドは、クラスタの管理やプロビジョニングを行うものではありません。 アクティブなkubeconfigコンテキストを使用して、すでに実行中の Kubernetes クラスターに接続します。

コマンドフラグ

フラグ タイプ Default 説明
--download-key ストリング 必須 Instana コンテナレジストリのパスワード(ユーザー名: _)として使用されるキーをダウンロードし、node-collector イメージを取得します。 このコマンドを実行するには、このフラグを指定する必要があります。
--output-dir -o ディレクトリー 現在の作業ディレクトリー このコマンドによって、タイムスタンプ付きの診断フォルダとアーカイブが作成されるディレクトリ。
--deep-debug ブール false 標準の診断情報の収集が完了した後、追加のディープデバッグスクリプトを実行します。
--max-log-lines -l 整数 20000 コンテナごとに収集するログ行の最大数。 利用可能なすべてのログ行を取得するには、を に 0 設定してください。
--log-collection-days 整数 7 収集する過去のログの日数。
--node-collector-image ストリング このリリースに同梱されているデフォルトの画像 一時的なノードコレクター「 DaemonSet 」で使用されるコンテナイメージ。 エアギャップ環境やプライベートレジストリでの展開では、このフラグを上書きしてください。
--node-collector-namespace ストリング default コマンドが一時的なノードコレクター「 DaemonSet 」を作成する名前空間。
--external-script 文字列のスライス なし 診断情報の収集中に実行する、ユーザーが指定した1つ以上のシェルスクリプト。 複数の値を、カンマ区切りのリストとして指定するか、フラグを繰り返し指定してください。
--env-file ファイル なし ファイル .env から環境変数を読み込み、診断設定(ネームスペース、認証情報、ポッドセレクタ、および類似の設定)を上書きします。

診断データの収集が完了すると、このコマンドは生成されたパッケージの保存場所を表示します。

Done!
Diagnostics package ->
<output-dir>/diagnostics_<YYYYMMDDHHmmss>

--output-dirこのコマンドは、. で指定したディレクトリ内に、タイムスタンプ付きのディレクトリを作成します。

収集される情報

診断エンジンは、以下のコレクターを実行します。

  • クラスタスコープの Kubernetes リソース

    このエンジンは、クラスタスコープの Kubernetes リソースを収集します。これには以下が含まれます:

    • ノード
    • 名前空間
    • ClusterRoles
    • ClusterRoleBindings
    • StorageClasses
    • PersistentVolumes
    • CustomResourceDefinitions (CRD)
    • その他のクラスタースコープのリソース
  • ホストのネットワーク情報

    このエンジンは、ホストのネットワーク情報を収集します。これには以下が含まれます:

    • ルーティング・テーブル
    • ネットワーク・インターフェース
    • iptables のルール
    • sysctl のネットワーク関連パラメータ
    • 接続情報
  • Envoy 診断

    このエンジンは、 Instana のCoreロードバランサーポッドから Envoy の診断情報を収集します。これには以下が含まれます:

    • クラスター統計
    • リスナーの設定
    • 経路
    • 正常性情報
  • 名前空間付き Kubernetes リソース

    このエンジンは、以下のものを含め、すべての Instana ネームスペースにわたる、ネームスペース付きの Kubernetes リソースを収集します

    • ポッド数
    • デプロイメント数
    • StatefulSets
    • サービス
    • ConfigMaps
    • 秘密(数値は伏せられています)
    • イベント
    • ReplicaSets
    • DaemonSets
    • PersistentVolumeClaims
    • HorizontalPodAutoscalers
    • カスタム・リソース
  • ノードレベルの情報

    このエンジンは、一時的な DaemonSet を展開して、以下のようなノードレベルの情報を収集します

    • CPU
    • メモリー
    • ディスクのトポロジー
    • カーネルおよびOSのバージョン
    • マウント・ポイント
    • ディスク使用率
    • sysctlの設定
    • dmesg の出力

    一時的なノードコレクター DaemonSet は、ワイルドカード許容設定を適用するため、エンジンはコントロールプレーンノード、インフラストラクチャノード、専用データストアノード、GPUノード、および任意のカスタムテインテッドノードを含め、クラスター内のすべてのノードから診断情報を収集します。 この動作は自動的に行われるため、追加のフラグは必要ありません。

  • Instana バックエンドの診断

    このエンジンは、 Instana のバックエンド診断情報を収集します。これには以下が含まれます:

    • 健康エンドポイントの反応
    • 内部指標
    • Podのリソース使用状況
  • Kafka 診断

    このエンジンは、 Kafka の診断情報を収集します。これには以下が含まれます:

    • トピック一覧
    • コンシューマー・グループのラグ
    • ブローカー構成
    • Kafka カスタムリソースのステータス
  • Cassandra 診断

    このエンジンは、 Cassandra の診断情報を収集します。これには以下が含まれます:

    • nodetool status の出力結果
    • nodetool info の出力結果
    • 表統計
    • CQLの検証結果
  • Elasticsearch 診断

    このエンジンは、 Elasticsearch の診断情報を収集します。これには以下が含まれます:

    • クラスターの正常性
    • インデックスの統計
    • シャードの割り当て
    • Elasticsearch カスタムリソースのステータス
  • BeeInstana 診断

    このエンジンは、 BeeInstana の診断情報を収集します。これには以下が含まれます:

    • アグリゲーターのログ
    • インジェスターのログ
    • Monconfigのログ
    • BeeInstana カスタムリソースのステータス
    • 内部指標
  • Kubernetes ノードレベルのサービスログ

    このエンジンは、マネージドクラウドプラットフォームを含む、標準的な Kubernetes ディストリビューションのノードレベルのサービスログを収集します。 例:

    • kubelet
    • containerd
    • Docker 実行時間(該当する場合)
  • OpenShift-specific プラットフォームサービスのログ

    このエンジンは、 Kubernetes のノードレベルのサービスログに加え、 OpenShift-specific プラットフォームのサービスログも収集します。 例:

    • CRI-O
    • OpenShift API サーバー
    • マシン設定デーモン
    • その他のプラットフォームコンポーネント
    注:non-OpenShift クラスタでは、このコレクタは出力を生成せずに終了します。
  • 詳細デバッグ用スクリプト( --deep-debug) が必要)

    --deep-debugを有効にすると、標準の収集が完了した後、エンジンが追加のディープデバッグスクリプトを実行します。 例:

    • 拡張ネットワーク診断
    • データストアの詳細検査

デフォルトの名前空間

診断エンジンは、以下のデフォルトのネームスペースを使用します。

コンポーネント デフォルトの名前空間
ClickHouse instana-clickhouse
PostgreSQL instana-postgres
BeeInstana instana-beeinstana
Elasticsearch instana-elasticsearch
Cassandra instana-cassandra
Kafka instana-kafka
Instana エージェント instana-agent

エンジンは、クラスターからCoreおよびUnitのネームスペースを自動的に検出します。

環境変数リファレンス

設定は、環境変数を直接指定するか、または フラグを --env-file 指定してファイルを .env 渡すことで指定できます。 デフォルト値が「自動検出」と記載されている場合、エンジンは関連するネームスペース内の Kubernetes のシークレットからその値を読み取ります。

ClickHouse

変数 Default 説明
CLICKHOUSE_NAMESPACE instana-clickhouse ClickHouse 名前空間
CLICKHOUSE_POD_NAME chi-clickhouse-local-0-0-0 ClickHouse ポッドをターゲットにする
CLICKHOUSE_CLUSTER local クラスター名
CLICKHOUSE_WINDOW_HOURS 24 収集すべき診断データの時間数
CLICKHOUSE_ADMIN_USER 自動検出 管理者ユーザー名
CLICKHOUSE_ADMIN_PASSWORD 自動検出 管理者パスワード
CLICKHOUSE_USER 自動検出 アプリケーションのユーザー名
CLICKHOUSE_PASSWORD 自動検出 アプリケーション・パスワード

PostgreSQL

変数 Default 説明
POSTGRES_NAMESPACE instana-postgres PostgreSQL 名前空間
POSTGRES_ADMIN_USER 自動検出 管理者ユーザー名
POSTGRES_ADMIN_PASSWORD 自動検出 管理者パスワード
POSTGRES_USER 自動検出 アプリケーションのユーザー名
POSTGRES_PASSWORD 自動検出 アプリケーション・パスワード

BeeInstana

変数 Default 説明
BEEINSTANA_NAMESPACE instana-beeinstana BeeInstana 名前空間
BEEINSTANA_USER 自動検出 アプリケーションのユーザー名
BEEINSTANA_PASSWORD 自動検出 アプリケーション・パスワード
BEEINSTANA_POD_SELECTOR app.kubernetes.io/name=beeinstana BeeInstana ポッド用ポッドセレクター

Elasticsearch

変数 Default 説明
ELASTICSEARCH_NAMESPACE instana-elasticsearch Elasticsearch 名前空間
ELASTICSEARCH_ADMIN_USER 自動検出 管理者ユーザー名
ELASTICSEARCH_ADMIN_PASSWORD 自動検出 管理者パスワード
ELASTICSEARCH_USER 自動検出 アプリケーションのユーザー名
ELASTICSEARCH_PASSWORD 自動検出 アプリケーション・パスワード
ELASTICSEARCH_POD_SELECTOR common.k8s.elastic.co/type=elasticsearch Elasticsearch ポッド用ポッドセレクター

Cassandra

変数 Default 説明
CASSANDRA_NAMESPACE instana-cassandra Cassandra 名前空間
CASSANDRA_ADMIN_USER 自動検出 管理者ユーザー名
CASSANDRA_ADMIN_PASSWORD 自動検出 管理者パスワード
CASSANDRA_USER 自動検出 アプリケーションのユーザー名
CASSANDRA_PASSWORD 自動検出 アプリケーション・パスワード
CASSANDRA_POD_SELECTOR app.kubernetes.io/name=cassandra Cassandra ポッド用ポッドセレクター

Kafka

変数 Default 説明
KAFKA_NAMESPACE instana-kafka Kafka 名前空間
KAFKA_ADMIN_USER 自動検出 管理者ユーザー名
KAFKA_ADMIN_PASSWORD 自動検出 管理者パスワード
KAFKA_CONSUMER_USER 自動検出 消費者のユーザー名
KAFKA_CONSUMER_PASSWORD 自動検出 ユーザーのパスワード
KAFKA_PRODUCER_USER 自動検出 プロデューサーのユーザー名
KAFKA_PRODUCER_PASSWORD 自動検出 プロデューサーのパスワード
KAFKA_SASL_MECHANISM SCRAM-SHA-512 SASL メカニズム
KAFKA_SASL_PLAINTEXT SASL_PLAINTEXT SASLトランスポートプロトコル
KAFKA_POD_SELECTOR app.kubernetes.io/name=kafka Kafka ポッド用ポッドセレクター

コアとエージェント

変数 Default 説明
CORE_NAMESPACE 自動検出 Instana コアコンポーネントのネームスペース
CORE_NAME 自動検出 Instana Coreインスタンスの名前
INSTANA_AGENT_NAMESPACE instana-agent Instana エージェントネームスペース

バックエンドの API の認証情報

変数 説明
ADMIN_API_USER 管理者 API ユーザー名(自動検出)
ADMIN_API_PASSWORD 管理者 API のパスワード(自動検出)
SERVICE_API_USER API のユーザー名(自動検出)
SERVICE_API_PASSWORD API のパスワード(自動検出)

Dockerレジストリー

変数 Default 説明
DOCKER_REGISTRY_USER _ レジストリーのユーザー名
DOCKER_REGISTRY_PASSWORD --download-key レジストリー・パスワード

.env ファイルの例

デフォルトの設定値を上書きするためのファイル .env を作成します。

CLICKHOUSE_NAMESPACE=my-clickhouse
KAFKA_NAMESPACE=my-kafka

CLICKHOUSE_ADMIN_USER=clickhouse_operator_user
CLICKHOUSE_ADMIN_PASSWORD=s3cr3t

CLICKHOUSE_WINDOW_HOURS=48

CASSANDRA_POD_SELECTOR=app=instana-cassandra,tier=database

オーバーライドファイルを使用して、次のコマンドを実行してください:

kubectl-instana diagnostics \
  --download-key <download-key> \
  --env-file ./my-overrides.env

Instana コンポーネントのログレベルの設定

Instana コンポーネントの音量を調整するには、以下の手順に従ってください:

  1. CoreSpec でコンポーネントのログレベルを設定します。 以下の例では、 butler コンポーネントのログ・レベルが DEBUG に変更されます。

    apiVersion: instana.io/v1beta2
    kind: Core
    metadata:
      name: instana-core
      namespace: core
    spec:
      ...
      componentConfigs:
        - name: butler
          env:
            - name: COMPONENT_LOGLEVEL
              # Possible values are DEBUG, INFO, WARN, ERROR (not case-sensitive)
              value: DEBUG
     
  2. 以下のコマンドを実行して、ログを表示します。

    kubectl logs <component name> -n instana-core
     

    <コンポーネント名> は、トラブルシューティングを行うコンポーネントの名前です。

kubectl 専用のコマンドを使用したデバッグと診断

kubectl の`cluster-info dump`コマンドは、 Kubernetes クラスタのデバッグや診断に役立つツールです。 Kubernetes クラスタの現在の状態について、リソースに関するさまざまな情報を含む詳細なレポートを提供します。

デバッグ情報を出力するためのターゲット・ネーム・スペースとディレクトリーを構成します。 以下の例では、名前空間は instana-units 、ディレクトリーは tempです。 このコマンドを実行すると、 kubectl は、名前 instana-units 空間内の各リソースに対して YAML ファイルを生成し、それらの YAML ファイルをディレクトリ temp に保存します。

kubectl cluster-info dump --namespace instana-units --output-directory temp --output yaml
 

以下の抜粋では、 temp ディレクトリー内の内容の一部を示しています。 instana-units サブディレクトリーには、 .yaml ファイル内のデーモン・セット、デプロイメント、イベント、ポッド、およびその他のリソースに関する詳細があります。 すべてのポッドのログは、各 instana-units\pod name サブディレクトリーにあります。

├── instana-units
│   ├── daemonsets.yaml
│   ├── deployments.yaml
│   ├── events.yaml
│   ├── pods.yaml
│   ├── replicasets.yaml
│   ├── replication-controllers.yaml
│   ├── services.yaml
│   ├── tu-instana-prod-appdata-legacy-converter-755bb474c7-xn4vg
│   │   └── logs.txt
│   ├── tu-instana-prod-appdata-processor-6b8f448584-nmvgl
│   │   └── logs.txt
│   ├── tu-instana-prod-filler-9485b85d-wj7pv
│   │   └── logs.txt
│   ├── tu-instana-prod-issue-tracker-bbd5f5d5f-98zxx
│   │   └── logs.txt
│   ├── tu-instana-prod-processor-fc956c46c-fxs5z
│   │   └── logs.txt
│   └── tu-instana-prod-ui-backend-89bccd9c5-8lp76
│       └── logs.txt
...
└── nodes.yaml
 
注:
  • instana-coreなどの別の名前空間を選択できます。
  • kubectl がクラスターにインストールされていない場合は、コマンド oc cluster-info dumpを使用できます。これは、コマンド kubectl cluster-info dumpと同じサポートを提供します。

その他のトラブルシューティングコマンドについては、『 Red Hat OpenShift 』のドキュメント 「 kubectl を使用したクラスタのトラブルシューティング」 および「 Red Hat OpenShift CLI 開発者向けコマンドリファレンス」 を参照してください。

内部バックエンドの API を使用する

セルフホスト型の Instana バックエンドを管理する際には、 API の内部コンポーネントのエンドポイントを利用できます。 これらの API 呼び出しは、 curl を使用することで、クラスタから対応するポッドに対して送信できます。 リソースは認証を必要とするため、最初に有効な資格情報を取得する必要があります。 API の認証情報は、coreネームスペース内のinternal-instanaシークレットに格納されています。 API のエンドポイントには、 AdminAPIUser と ServiceAPIUser の2種類が含まれています。 Instana のインストールで有効な認証情報を取得するには、次のコマンドを実行してください:

kubectl get secret instana-internal -n instana-core --template='{{ index .data.serviceAPIUser  | base64decode }}'

kubectl get secret instana-internal -n instana-core --template='{{ index .data.serviceAPIPassword  | base64decode }}'
 

admin ユーザーの資格情報を取得するには、 .data.adminAPIUser および .data.adminAPIPasswordを照会します。

これらの資格情報は、以下の手順で使用できます。

Instana のユーザーパスワードをリセットする

Instana のユーザーアカウントのパスワードをリセットするには、次のコマンドを実行してください:

kubectl exec -it -n instana-core deploy/butler -- curl -X PUT http://localhost:8601/admin/authentication/{tenant}/reset/user -u {adminAPIUser}:{adminAPIPassword} -H 'Content-Type: application/json' -d '{"email":"{user}","pass":"{newPassword}"}'
 

SSOプロバイダーの設定を無効にする( LDAP / SAML / OIDC)

Instana の認証にIDプロバイダーを使用している場合、次のコマンドでそのプロバイダーを無効にすることができます。 その後、 Instana の内部ユーザーアカウントを使用して認証を行うことができます。

kubectl exec -it -n instana-core deploy/butler -- curl -X PUT http://localhost:8601/admin/authentication/{tenant}/idp -u {adminAPIUser}:{adminAPIPassword}
 

ユーザーアカウントで 2FA を無効にする

Instana のユーザーアカウントで 2FA (二要素認証)を無効にするには、次のコマンドを実行します:

kubectl exec -it -n instana-core deploy/butler -- curl -X DELETE http://localhost:8601/admin/2fa/users/{email} -u {adminAPIUser}:{adminAPIPassword}
 

ライセンスの確認

保管されているすべてのライセンスを確認するには、以下のコマンドを実行します。

kubectl exec -it -n instana-core deploy/groundskeeper -- curl -X GET http://localhost:8600/license/list/{tenant}/{unit} -u {serviceAPIUser}:{serviceAPIPassword}
 

一部の指標がダッシュボードに表示されない

一部のメトリックがダッシュボードに表示されない場合は、メトリックの制限に達している可能性があります。 デフォルトでは、メトリック制限は 3000 に設定されています。

ヒント: 現在の制限は、 filler/config.yaml ファイルの maxMetrics で確認できます。 この制限は、一部のエンティティーが送信するメトリックが多すぎないようにするために存在します。これにより、フィラーによって使用されるストレージと CPU が増加し、UI にメトリックを送信するための帯域幅が増加します。

この制限を増やすには、以下のように、ユニットのカスタム・リソースに config.max.metrics のブロックを追加します。

kind: unit
...
spec:
...
  properties:
    - name: config.max.metrics
      value: "6000"
...
 

Instana Elasticsearch のデータディスクの使用率が85%を超えると、バックエンドが機能しなくなります

Elasticsearch 使用中のディスクの使用率が85%を超えると、データストアは自動的に読み取り専用モードに切り替わります。 これにより、 Instana バックエンドが動作しなくなります。 Elasticsearch のデータディスクの空き容量を確保するか、容量を増やして、正常な動作を回復させてください。 注:他の Instana ディスクでは、同程度の使用率(95%を超えていても)では読み取り専用モードには移行しないため、この問題の理解を難しくしている可能性があります。

この問題を解決するには、次のいずれかの対処を行ってください:
  • Elasticsearch のデータディスクの空き容量を増やす
  • Elasticsearch に割り当てられているディスク容量を増やす
十分な空き容量が確保されると、 Elasticsearch は通常の書き込み処理を再開し、バックエンドは再び正常に動作するようになります。
注: 他の Instana ディスクは、同程度の使用率(95%を超えていても)では読み取り専用モードには移行しないため、トラブルシューティングの際に混乱を招く可能性があります。

ライセンスが無効か、または存在しません

ライセンスが無効であるか、存在しない場合、バックエンドはエージェントの接続をブロックします。

このような状況が発生したとき

  • インポートされたライセンスは無効です。
  • Instana オペレーターは、Groundskeeperバックエンドにライセンスを適用できません。

トラブルシューティングの方法

  1. コア・シークレット内の「Sales Key」が、ユニット・シークレット内のライセンス文字列と一致していることを確認してください。 異なる場合は、正しい販売キーを使用してライセンスを再ダウンロードしてください。
  2. Instana のオペレーターログを確認し、ライセンスのインポートエラーがないか確認してください:
    kubectl logs -n instana-operator deployment/instana-operator --tail=100
  3. Groundskeeperのバックエンドコンポーネント、Podのステータス、およびログを確認してください:
    kubectl get pods -n instana-core | grep groundskeeper 
  4. それでもライセンスの状態が「無効」と表示される場合は、 IBM のサポートまでご連絡ください。