Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

36.13.3. Kibana

以下のトラブルシューティングの問題は EFK スタックの Kibana コンポーネントに適用されます。

Kibana でのログインのループ

Kibana コンソールを起動し、ログインが成功した場合に、誤って Kibana にリダイレクトされ、すぐにログイン画面にリダイレクトされます。

この問題の原因として考えられる点として、Kibana の前にある OAuth2 プロキシーが、これを有効なクライアントとして特定するためにシークレットをマスターの OAuth2 サーバーと共有する点があります。この問題は、シークレットが一致しないことを示唆している可能性があります。シークレットが一致するかどうかをプログラムを使用して確認できる方法はありません。

これは、ロギングを複数回デプロイする場合に生じる可能性があります。たとえば、初期のデプロイメントを修正しても、Kibana によって使用される secret が置き換えられる一方で、一致するマスター oauthclient エントリーは置き換えられません。

以下を実行できます。

$ oc delete oauthclient/kibana-proxy

openshift-ansible の説明に従って openshift_logging ロールを再実行します。これにより oauthclient は置き換えられ、次のログインではループは生じません。

*"error":"invalid\_request" on login*

Kibana でのログインエラー

Kibana コンソールにアクセスしようとする際に、以下のブラウザーエラーが表示される場合があります。

{"error":"invalid_request","error_description":"The request is missing a required parameter,
 includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed."}

この問題は、OAuth2 クライアントとサーバー間の不一致が原因で発生します。ログイン後にサーバーが安全にリダイレクトできるように、クライアントのリターンアドレスがホワイトリストで指定されている必要があります。不一致がある場合、エラーメッセージが表示されます。

これは、直前のデプロイメントからの残りである oauthclient エントリーによって引き起こされる可能性があります。 この場合、エントリーを置き換えることができます。

$ oc delete oauthclient/kibana-proxy

openshift-ansible の説明に従って openshift_logging ロールを再実行します。これにより、oauthclient エントリーが置き換えられます。Kibana コンソールに戻り、再びログインします。

問題が解決しない場合は、OAuth クライアントに一覧表示されている URL の Kibana にアクセスしていることを確認してください。この問題は、転送先ポート (標準の 443 HTTPS ポートではなく 1443 など) の URL にアクセスすることで発生する可能性があります。

oauthclient を編集してサーバーのホワイトリストを調整できます。

$ oc edit oauthclient/kibana-proxy

実際に使用しているアドレスを組み込むことが許可されているリダイレクト URI の一覧を編集します。保存し、終了した後に、エラーは解決するはずです。

Kibana のアクセスにより 503 エラーが表示される

Kibana コンソールを表示する時にプロキシーエラーが発生する場合は、2 つの問題のうちのいずれかが原因である可能性があります。

  • Kibana が Pod を認識していない可能性があります。ElasticSearch の起動が遅い場合、Kibana は ElasticSearch に到達しようとする際にエラーを出す可能性があり、この場合 Kibana はこれを有効であるとは見なしません。関連するサービスにエンドポイントがあるかどうかをチェックすることができます。

    $ oc describe service logging-kibana
    Name:                   logging-kibana
    [...]
    Endpoints:              <none>

    Kibana Pod が有効である場合に、エンドポイントは一覧表示されます。有効でない場合は、Kibana Pod およびデプロイメントの状態を確認してください。

  • Kibana サービスにアクセスするための名前付きルートはマスクされている可能性があります。

    これは、あるプロジェクトでテストデプロイメントを実行し、次に最初のデプロイメントを完全に削除することなく別のプロジェクトでデプロイした場合に発生する可能性があります。複数のルートが同じ宛先に送信される場合、デフォルトルーターのみが最初に作成された宛先にルーティングされます。問題が発生するルートをチェックして、そのルートが複数の場所で定義されているかどうかを確認してください。

    $ oc get route  --all-namespaces --selector logging-infra=support
    NAMESPACE   NAME         HOST/PORT                 PATH      SERVICE
    logging     kibana       kibana.example.com                  logging-kibana
    logging     kibana-ops   kibana-ops.example.com              logging-kibana-ops

    この例では、重複するルートがありません。