トラブルシューティング
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 別名であり、動作はまったく同じです。
コマンドフラグ
| フラグ | 短 | タイプ | 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 コンポーネントの音量を調整するには、以下の手順に従ってください:
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以下のコマンドを実行して、ログを表示します。
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 に割り当てられているディスク容量を増やす
ライセンスが無効か、または存在しません
ライセンスが無効であるか、存在しない場合、バックエンドはエージェントの接続をブロックします。
このような状況が発生したとき
- インポートされたライセンスは無効です。
- Instana オペレーターは、Groundskeeperバックエンドにライセンスを適用できません。
トラブルシューティングの方法
- コア・シークレット内の「Sales Key」が、ユニット・シークレット内のライセンス文字列と一致していることを確認してください。 異なる場合は、正しい販売キーを使用してライセンスを再ダウンロードしてください。
- Instana のオペレーターログを確認し、ライセンスのインポートエラーがないか確認してください:
kubectl logs -n instana-operator deployment/instana-operator --tail=100 - Groundskeeperのバックエンドコンポーネント、Podのステータス、およびログを確認してください:
kubectl get pods -n instana-core | grep groundskeeper - それでもライセンスの状態が「無効」と表示される場合は、 IBM のサポートまでご連絡ください。