ラボ 6 - ポッドのトラブルシューティング ラボ
はじめに
このラボでは、Sumo Logic を使用して Kubernetes ポッドを監視し、検出された問題を詳しく分析して、原因を特定します。
Explore を開く
Explore は、Sumo Logic の組み込みのビューであり、Kubernetes スタックの視覚的表示に移動するために使用できます。
- Explore を開くには、上部のメニューバーの [+ New (+ 新規)] をクリックします。
- ドロップダウン メニューから [Explore (参照)] を選択します。
[Explore (参照)] ナビゲーションパネルが左側に表示され、Kubernetes スタックの折りたたみビューが表示されます。
- これで、Kubernetes 環境を参照できます。
Kubernetes 環境の分析
Explore は、Kubernetes クラスタのコンテンツを表示し、システム階層を簡単に移動できるフレームワークです。左側のナビゲーション パネルには、すべてのクラスタのリストと、各クラスタの下にネストされた namespace (名前空間)、container (コンテナ)、pod (ポッド) が表示されます。
- ナビゲーション パネルの上部で、[Explore By (参照方法)] を使用して名前空間ビューを確認します。まだ、選択していない場合は、[Explore By (参照方法)] をクリックしてメニューを展開し、[Kubernetes Namespace View (Kubernetes 名前空間ビュー)] を選択します。選択した内容が下に表示されます。
- [Dashboards (ダッシュボード)] を選択し、プルダウンメニューから [Kubernetes - Cluster Overview (クラスタの概要)] を選択します。
- [Kubernentes - Cluster Overview (クラスタの概要)] によって、クラスタのステータスを示すダッシュボード パネルが表示されます。このラボの場合は、[prod01.travellogic.info] をクリックしてから、[Pods Running (実行中のポッド)] パネルで [prod-loggen] の名前空間をクリックします。このビューで、prod-loggen の機能していない 2 つのポッドがわかります (赤くマークされているポッド)。
- ポッドの上にマウスを置くと、失敗したサービスに関する情報を参照できます。これらのサービスはグラフで 1 状態を保っていません。
- さらにドリルダウンするために、pagerduty の上にカーソルを置いて左クリックします。[Related Explore (関連参照)] で、ポッド pageduty-xxxxxxxx-xxxxxx をクリックします。ポッドは一時的なものであるため、carbonblack と pagerduty の後の文字は常に変化します。
- さらにドリルダウンするために、pagerduty の上にカーソルを置いて左クリックします。[Related Explore (関連参照)] で、ポッド pageduty-xxxxxxxx-xxxxxx をクリックします。ポッドは一時的なものであるため、carbonblack と pagerduty の後の文字は常に変化します。
- ポッドの上にマウスを置くと、失敗したサービスに関する情報を参照できます。これらのサービスはグラフで 1 状態を保っていません。
- 選択したデータは、右側のダッシュボードのパネルに表示されます。
- このページの一番下までスクロールして、[Log Stream (ログ ストリーム)] を表示します。[Logs (ログ)] パネルに、PagerDuty によって生成されたログが表示されます。次に、ログを詳しく確認します。右上のメニューアイコン (3 つのドット) をクリックし、[Open in Search (検索で開く)] を選択します。
- これで、ログ検索インターインターフェイスで PagerDuty に関連するログを確認できます。デフォルトでは、[Aggregates (集計)] ビューで表示されます。[Messages (メッセージ)] タブをクリックすると、実際のログ メッセージを確認できます。
- ログ メッセージを確認できるようになったので、[Messages (メッセージ)] の [Display Field (表示フィールド)] のチェックを外すことで、ログ メッセージをさらに分離できます。これにより、メッセージから抽出された、parse 済みのログ メタデータ メッセージのみに絞り込むことができます。言い換えると、ログ メッセージを複数のフィールドに分けて parse したため、メッセージ フィールドを除外してログ メッセージを取得することで、何が起きているかを容易に確認できます。
- ログ メッセージを表示して、そのうちの 2 つに注目します。スクリーンショットは、何かが間違っていることを示す java.io.IOException を示しています。このメッセージには、認証に関係する HTTP のステータスコード 401 も含まれています。
- 認証に問題があることが考えられるため、メッセージを下にスクロールして認証に使用されている access_id を確認します。ログ メッセージを調べて、同じ 2 つのメッセージを見つけます。最初のページに表示されない場合があることに注意してください。さらに分離するには、access_id を取得し、それに関連する他のログ メッセージがあるかどうかを確認します。
- access_id の最後の値をコピーします。この例では、suRhn0DW7l4DZ を強調表示し、右クリックして [Copy Selected Text (選択したテキストをコピー)] を選択します。
- キーワード suRhn0DW7l4DZU の新しいログ検索を開き、時間を [Last 60 Minutes (過去 60 分間)] に設定します。念のため新しいログ検索を実行する手順について再度示します。上部のメニューバーの [+ New (+ 新規)] をクリックし、ドロップダウン メニューから [Log Search (ログ検索)] を選択します。
access_id キーワードの「suRhn0DW7l4DZU」をクエリウィンドウに貼り付けて、[Start (開始)] をクリックします。2 つの Source Category からログが取得されていることがわかります。では、それらを確認しましょう。左側の [Hidden Fields (非表示フィールド)] の下で、メタデータ テキストの [Source Category] をクリックします。 - Labs/Sumo_Logic には 2 個のメッセージしかないことがわかります。これにより、根本原因の項目の発生頻度が少なく、干し草の山の中で針を探すような興味深い状況であることがわかりました。[Labs/Sumo_Logic] Source Category を強調表示して選択します。
- アクセス キー suRhn0DW7l4DZU は無効になり、削除されているようです。現在、access_id を含むログのみを表示しているため、検索が極端に制限されています。
- 発生した事象をより適切に理解するために、アクセスキーの削除と無効化に関連して発生したメッセージを確認します。ログ メッセージの 1 つで、[Category Labs/Sumo_Logic (カテゴリ Labs/Sumo_Logic)] ドロップ ダウンをクリックして、[Surrounding Messages (前後のメッセージ)] および [+/- 1 Minute (+/- 1 分)] を選択して、選択したメッセージの前後に発生した他のすべてのログ メッセージを参照します。
- 現在、発生状況を示す 5 つのメッセージが残っています。これらの行を下から上に確認することで、イベントの順番を明確にすることができます。
イベントの順序:
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 がアカウントに関連付けられたアクティブ キーを持っているか、またはユーザ アカウントに関連付けられたアクティブ キーをスキャンしたかどうかを確認することで回避できました。
クイズ (正しい/間違い)
- ポッドの名前を分離するには、ダッシュボードでポッドを表すハニカムの六角形にカーソルを置いて、ポッドの先頭の名前とハイフンの後の最後の 5 文字 (たとえば pagerduty-*-4wjln) をメモします。
- [Surrounding Messages (前後のメッセージ)] には、[+/- 60 Minute (+/- 60 分)] のオプションがあります。