メインコンテンツまでスキップ
Sumo Logic Japanese

ラボ 6 - ポッドのトラブルシューティング ラボ

このラボでは、Kubernetes 環境内に存在するポッドのトラブルシューティングを行う方法について説明します。

はじめに

このラボでは、Sumo Logic を使用して Kubernetes ポッドを監視し、検出された問題を詳しく分析して、原因を特定します。

Explore を開く

Explore は、Sumo Logic の組み込みのビューであり、Kubernetes スタックの視覚的表示に移動するために使用できます。

  1.  Explore を開くには、上部のメニューバーの [+ New (+ 新規)] をクリックします。
  2. ドロップダウン メニューから [Explore (参照)] を選択します。 

Screen Shot 2019-09-03 at 8.32.58 AM.png

[Explore (参照)] ナビゲーションパネルが左側に表示され、Kubernetes スタックの折りたたみビューが表示されます。

Screen Shot 2019-09-03 at 8.28.19 AM.png

  1. これで、Kubernetes 環境を参照できます。

Kubernetes 環境の分析 

Explore は、Kubernetes クラスタのコンテンツを表示し、システム階層を簡単に移動できるフレームワークです。左側のナビゲーション パネルには、すべてのクラスタのリストと、各クラスタの下にネストされた namespace (名前空間)、container (コンテナ)、pod (ポッド) が表示されます。

  1. ナビゲーション パネルの上部で、[Explore By (参照方法)] を使用して名前空間ビューを確認します。まだ、選択していない場合は、[Explore By (参照方法)] をクリックしてメニューを展開し、[Kubernetes Namespace View (Kubernetes 名前空間ビュー)] を選択します。選択した内容が下に表示されます。

Screen Shot 2019-09-04 at 12.03.08 PM.png

  1. [Dashboards (ダッシュボード)] を選択し、プルダウンメニューから [Kubernetes - Cluster Overview (クラスタの概要)] を選択します。
    Screen Shot 2019-09-04 at 12.08.02 PM.png
  2.  [Kubernentes - Cluster Overview (クラスタの概要)] によって、クラスタのステータスを示すダッシュボード パネルが表示されます。このラボの場合は、[prod01.travellogic.info] をクリックしてから、[Pods Running (実行中のポッド)] パネルで [prod-loggen] の名前空間をクリックします。このビューで、prod-loggen の機能していない 2 つのポッドがわかります (赤くマークされているポッド)。 
    Screen Shot 2019-09-04 at 12.12.15 PM.png
    1. ポッドの上にマウスを置くと、失敗したサービスに関する情報を参照できます。これらのサービスはグラフで 1 状態を保っていません。
      Screen Shot 2019-09-04 at 12.32.48 PM.png
      1. さらにドリルダウンするために、pagerduty の上にカーソルを置いて左クリックします。[Related Explore (関連参照)] で、ポッド pageduty-xxxxxxxx-xxxxxx をクリックします。ポッドは一時的なものであるため、carbonblack と pagerduty の後の文字は常に変化します。 
        Screen Shot 2019-09-03 at 8.26.14 AM.png
  3. 選択したデータは、右側のダッシュボードのパネルに表示されます。Screen Shot 2019-09-03 at 8.21.25 AM.png
  4. このページの一番下までスクロールして、[Log Stream (ログ ストリーム)] を表示します。[Logs (ログ)] パネルに、PagerDuty によって生成されたログが表示されます。次に、ログを詳しく確認します。右上のメニューアイコン (3 つのドット) をクリックし、[Open in Search (検索で開く)] を選択します。Screen Shot 2019-09-04 at 12.46.56 PM.png
  5. これで、ログ検索インターインターフェイスで PagerDuty に関連するログを確認できます。デフォルトでは、[Aggregates (集計)] ビューで表示されます。[Messages (メッセージ)] タブをクリックすると、実際のログ メッセージを確認できます。Screen Shot 2019-09-04 at 12.56.01 PM.png
  6. ログ メッセージを確認できるようになったので、[Messages (メッセージ)] の [Display Field (表示フィールド)] のチェックを外すことで、ログ メッセージをさらに分離できます。これにより、メッセージから抽出された、parse 済みのログ メタデータ メッセージのみに絞り込むことができます。言い換えると、ログ メッセージを複数のフィールドに分けて parse したため、メッセージ フィールドを除外してログ メッセージを取得することで、何が起きているかを容易に確認できます。Screen Shot 2019-09-04 at 1.01.17 PM.png
  7. ログ メッセージを表示して、そのうちの 2 つに注目します。スクリーンショットは、何かが間違っていることを示す java.io.IOException を示しています。このメッセージには、認証に関係する HTTP のステータスコード 401 も含まれています。
  8. 認証に問題があることが考えられるため、メッセージを下にスクロールして認証に使用されている access_id を確認します。ログ メッセージを調べて、同じ 2 つのメッセージを見つけます。最初のページに表示されない場合があることに注意してください。さらに分離するには、access_id を取得し、それに関連する他のログ メッセージがあるかどうかを確認します。 Screen Shot 2019-09-04 at 1.13.21 PM.png
  9. access_id の最後の値をコピーします。この例では、suRhn0DW7l4DZ を強調表示し、右クリックして [Copy Selected Text (選択したテキストをコピー)] を選択します。Screen Shot 2020-03-31 at 2.45.56 PM.png
  10. キーワード suRhn0DW7l4DZU の新しいログ検索を開き、時間を [Last 60 Minutes (過去 60 分間)] に設定します。念のため新しいログ検索を実行する手順について再度示します。上部のメニューバーの [+ New (+ 新規)] をクリックし、ドロップダウン メニューから [Log Search (ログ検索)] を選択します。

    access_id キーワードの「suRhn0DW7l4DZU」をクエリウィンドウに貼り付けて、[Start (開始)] をクリックします。2 つの Source Category からログが取得されていることがわかります。では、それらを確認しましょう。左側の [Hidden Fields (非表示フィールド)] の下で、メタデータ テキストの [Source Category] をクリックします。Screen Shot 2019-09-04 at 1.27.02 PM.png
  11. Labs/Sumo_Logic には 2 個のメッセージしかないことがわかります。これにより、根本原因の項目の発生頻度が少なく、干し草の山の中で針を探すような興味深い状況であることがわかりました。[Labs/Sumo_Logic] Source Category を強調表示して選択します。Screen Shot 2019-09-04 at 1.32.06 PM.png
  12. アクセス キー suRhn0DW7l4DZU は無効になり、削除されているようです。現在、access_id を含むログのみを表示しているため、検索が極端に制限されています。
  13. 発生した事象をより適切に理解するために、アクセスキーの削除と無効化に関連して発生したメッセージを確認します。ログ メッセージの 1 つで、[Category Labs/Sumo_Logic (カテゴリ Labs/Sumo_Logic)] ドロップ ダウンをクリックして、[Surrounding Messages (前後のメッセージ)] および [+/- 1 Minute (+/- 1 分)] を選択して、選択したメッセージの前後に発生した他のすべてのログ メッセージを参照します。 Screen Shot 2019-09-04 at 1.35.23 PM.png
  14. 現在、発生状況を示す 5 つのメッセージが残っています。これらの行を下から上に確認することで、イベントの順番を明確にすることができます。 Screen Shot 2019-09-04 at 1.40.09 PM.png

イベントの順序:

5 行目: kenneth がログアウトしました。

4 行目: ユーザ shady+soc がログインしました。

3 行目: ユーザ shady+soc がユーザ kenneth を削除しました。

2 行目: ユーザ kenneth の削除によりアクセス キーが無効になりました。

1 行目: ユーザ kenneth の削除によりアクセス キーも削除されました。

概要:

shady+soc は、Kenneth ユーザを削除しました。これにより、Kenneth のアクセス キーも無効になり削除されました。Kenneth のアクセス キーは PagerDuty での認証に使用されていましたが、削除されたため、Pod ビューの前の表示のように、サービスで認証ができなくなり失敗しました。 

さらに追跡調査を行った結果、Kenneth が退社して、shady+soc によって登録抹消が行われたことが判明しました。この問題は、shady+soc がユーザを削除する前に Kenneth のマネージャーに連絡して、Kenneth がアカウントに関連付けられたアクティブ キーを持っているか、またはユーザ アカウントに関連付けられたアクティブ キーをスキャンしたかどうかを確認することで回避できました。

クイズ (正しい/間違い)

  1. ポッドの名前を分離するには、ダッシュボードでポッドを表すハニカムの六角形にカーソルを置いて、ポッドの先頭の名前とハイフンの後の最後の 5 文字 (たとえば pagerduty-*-4wjln) をメモします。
  2. [Surrounding Messages (前後のメッセージ)] には、[+/- 60 Minute (+/- 60 分)] のオプションがあります。
  • この記事は役に立ちましたか?