Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TechDojo_20210929_OpenShiftアプリ監視デモ

Takahiro Esaki
September 28, 2021

 TechDojo_20210929_OpenShiftアプリ監視デモ

Takahiro Esaki

September 28, 2021
Tweet

More Decks by Takahiro Esaki

Other Decks in Technology

Transcript

  1. 監視の多様な観点と今回の焦点 © 2021 IBM Corporation 4 n 「監視」には多様な観点があるが、今回は「リソース監視」に着⽬する 監視観点 目的

    具体的な監視対象 ビジネスKPI ユーザがサービスを利用できているか、サービス は期待効果を創出しているか、システムがどのラ イフサイクルに位置しているかなどを確認する • アクティブユーザ数、ログイン数、アクセス ルート、キャッシュコンバージョンレート など フロントエンド ブラウザやモバイルアプリのフロントエンドのパ フォーマンス/エラーを監視し、ユーザ満足・売り 上げに貢献しているか確認する • レンダリングパフォーマンス • JavaScriptエラー など アプリケーション アプリ単位でのパフォーマンスやエラーなどを測 定し、期待通りの動作をしているか確認する。障 害原因の調査を実施する • クエリ実行時間、外部API応答時間 • デプロイパイプラインメタ情報 • ヘルスチェック など リソース (サーバ) アプリが稼働しているサーバの物理的なメトリク スを測定し、スケーリング検討や障害原因の調査 を実施する • CPU/メモリ/ディスクなどの共通メトリクス • WebサーバのHTTPステータスコード、DB サーバのスロークエリなどの特有メトリクス ネットワーク ネットワークの疎通/パフォーマンスなどからアプ リが期待通りの動作をしているかを確認する。障 害原因の調査を実施する • インバウンド/アウトバンドのIPアドレス、 パケット、アクセス頻度、ルーティング な ど セキュリティ 不正アクセス/悪意的な攻撃などからユーザ情報や 企業機密などのデータを保護するための検知/追跡 の仕組みを構築する • ユーザ、コマンド、ファイルシステムの実行 履歴 など 本 日 の 焦 点
  2. コンテナ単体 Kubernetes(k8s) OpenShift • コンテナ⾃体は疎結合のため、マイク ロサービスを実現するには、CPU/メ モリなどのリソースの監視(やコンテ ナ間の通信を担保するためのネット ワーク監視が必要 •

    Master NodeがWorker Node内の Podの死活やCPU/メモリなどのリ ソース状況、IPアドレスなどを監視し、 定義されたマニフェストの状態と⼀致 しているか確認する。⼀致していなけ れば、⼀致するような修復命令を出す • ⼈が確認・運⽤するための監視/ロギ ングの仕組みは別途実施する必要あり • KubernetesのWorker Nodeが内部的 に実施しているCPU/メモリなどのリ ソース状況、IPアドレスなどの監視や その結果を、⼈が確認・運⽤するため の仕組みをGUIで提供する コンテナを利⽤するにあたって必要な監視 n K8sはマイクロサービス実現に必要な内部的な「リソース監視」「ネットワーク監視」の仕組みを持つ n OpenShiftは、更に⼈がGUIで確認/操作するための監視運⽤コンポーネントを提供する コンテナ コンテナ コンテナ コンテナ 監視運用のコンポーネント (Prometeus,Grafana など利用) GUI © 2021 IBM Corporation 5 Pod Worker Node kubelet kube-proxy Master Node kube-api-server kube-scheduler kube-controller- manager マニフェス ト 内部的なリソース/ ネットワーク監視 Pod 開発者/運用者
  3. 代表的なOpenShiftの監視コンポーネント n OpenShiftはk8sと親和性の⾼いOSSを活⽤して次のような監視コンポーネントを提供 機能 主な利用OSS 説明 Dashboards Grafana • ClusterやPodのCPU使用率、メモリ使用率、帯域幅、受信パケットなどデ

    フォルトのメトリクスをグラフで確認 Metrics Prometheus • 任意のメトリクスをクエリを作成・実行することで結果を取得・表示 Alerting Alertmanager • アラートの管理(登録、検索 など) • サイレンスの管理(メンテナンス期間中にアラートをオフにする設定) © 2021 IBM Corporation 6
  4. 1. 左部メニューからMonitoringをクリックし、Metricsを選択 2. Dashboards メニューを押下し、モニタリング対象を指定する。 ① Dashboardをクリックし、「Kubernetes / Compute Resouces

    / Namespace (Pods)」 を選択。 ② Namespaceをクリックし、「production」を選択。 3. MemoryおよびCPU使⽤率を確認します ダッシュボード(リソース使⽤状況) © 2021 IBM Corporation 8
  5. © 2021 IBM Corporation 9 4. 特定のプロジェクトに関するリソース確認ではなく、Openshiftクラスター全体のリソース使⽤状況を確認します。 ① Kubernetes /

    Compute Resources / Cluster を選択します。 【 参考 】 Grafana-UIを押下すると、Grafana⾃体のダッシュボード画⾯でも参照可能です
  6. 1. Prometheus のクエリー⾔語 (PromQL) クエリーを実⾏し、プロットに可視化されるメトリクスを検査できます。 2. Openshiftダッシュボードから、設定されているアラートを確認しましょう。左部メニューから、モニタリング > メトリクスを選択し ます。

    3. 「カーソルでメトリクスを挿⼊する」を選択し、事前に定義されたクエリーの⼀覧を表⽰します。 ※ クエリーとは、Prometeusクエリー(PromQL)を指します。独⾃のクエリーを作成、実⾏する場合は以下を参照 https://prometheus.io/docs/prometheus/latest/querying/basics/ メトリクス 11 sort_desc(sum(sum_over_time(ALERTS{ alertstate="firing"}[24h]))by(alertname))
  7. © 2021 IBM Corporation 12 3. クエリーの実⾏をクリックするし、対象の内容を描画します。 参考: カスタムクエリーを作成するには、Prometheus クエリー⾔語

    (PromQL) のクエリーを Expression フィールドに追加します 複数のクエリーを追加するには、「クエリーの追加」 を選択します。
  8. Podのログ © 2021 IBM Corporation 13 n トポロジー画⾯からworklog-apiのView logsをクリック –

    任意のPodを選択 (ここではworklog apiを選択) n Podのログが表⽰されるので、 内容を確認してみる