Slide 1

Slide 1 text

Prometheusによる クラウドネイティブなモニタリングとは Cloud Native Days Tokyo 2018 / OpenStack Days Tokyo 2018 2018/08/02 NECソリューションイノベータ株式会社 稲生 章人 1

Slide 2

Slide 2 text

Notice 掲載内容は私自身の見解であり、必ずしも所属する企業や組織の立場、戦略、意見を 代表するものではありません。 ref: https://個人の見解.jp 2

Slide 3

Slide 3 text

Agenda ● 自己紹介 ● 発表内容 ● トレンド ● モニタリングについて ● Prometheus ● Operator ● Prometheus Operator ● デモ ● Wrap-up ● 参考 3

Slide 4

Slide 4 text

自己紹介 ● 稲生 章人(いのう あきひと) / @atoato88 ○ 業務 ■ OpenStack (Essexごろ) からクラウドテクノロジーに触れ、 2016年に IaaS基盤の構築・運用業務を経験。その後、コンテナ技術の調査・機 能検証に従事。SW開発よりインフラ構築の経験が多いです。 ○ 言語 ■ Bash (2007 - ) ■ Python (2014 - ) ■ Go (2017 - ) ○ その他 ■ 最近はコンテナ界隈の勉強会 (Kubernetes Meetup, Cloud Native Meetup, etc..)に割と出没しています ■ 犬好き 4

Slide 5

Slide 5 text

発表内容 ● Prometheus を使った Kubernetes のアプリケーションモニタリングの基本をお話し ます。 ● これから Kuberentes を使ったアプリケーションのデプロイや運用をしようと思って いる方がメインターゲットです。 ● Kubernetes の基本的な概念や使い方を把握されている方を想定しています。 ● Kubernetes と Prometheus、Prometheus Operator を使った場合の特徴や利点 を知っていただき、選択肢の1つとして認識いただけると良いかと思います。 5

Slide 6

Slide 6 text

トレンド ● コンテナ技術の活用が本格化 ● コンテナオーケストレーションエンジンとしては Kubernetes のシェアが最も高く※1、 大手クラウドベンダーが Kubernetes as a Service (KaaS) の提供を相次いで開始 ○ GKE(Google Cloud Platform) ○ AKS(Microsoft Azure) ○ EKS(Amazon Web Services) ※1: https://sysdig.com/blog/2018-docker-usage-report/ 6

Slide 7

Slide 7 text

トレンド ● コンテナで動かすアプリケーションは “Cloud Native” というキーワードに象徴される考え 方に沿って作成するのが良いと言われています。 ○ Cloud Native の定義は CNCF のページに記述されています。 ■ https://www.cncf.io/about/faq/ ■ “Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach. These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.” ■ 本セッションのテーマに関わる特徴としては、以下が挙げられます ● マイクロサービス ● コンテナ ● オブザバブル(可観測性を持つ) ● 自動化されている ● 頻繁なシステム変更が可能 7

Slide 8

Slide 8 text

クラウドネイティブなアプリケーション ● 頻繁な更新が可能という特徴があります。 ● コンテナを利用した多くのマイクロサービスによって構成されており、マイクロサービ ス間は絡み合っています。 ● コンテナはVM等と比較してライフサイクルが短く、設定反映などの運用操作でもコ ンテナは新たに作成されます。また、IPアドレスは一般的に不定です。 death star の図 を貼るか? ref: https://www.slideshare.net/BruceWong3/the-case-for-chaos#12 8

Slide 9

Slide 9 text

モニタリングについて ● “モニタリング” という言葉には様々な解釈がありますが、本セッションでのモニタリ ングの定義は以下の4つの方式で構成されることとします。 ○ Profiling : プロファイリング ○ Tracing : トレーシング ○ Logging : ロギング ○ Metrics : メトリクス ● そして、Prometheus は Metrics をカバーするソフトウェアであり、本セッションでは Prometheus による Metrics を使ったモニタリングの説明となります。 9

Slide 10

Slide 10 text

クラウドネイティブなモニタリングについて ● ホワイトボックスモニタリングを中心とするモニタリング ● 集団に対する集計値のモニタリング ● サービスの自動的な検出および自動的なモニタリング開始 10

Slide 11

Slide 11 text

クラウドネイティブなモニタリングについて ● ホワイトボックスモニタリングを中心とするモニタリング ○ ホワイトボックスモニタリングは、システム内部を調査した情報を用いたモニタリング ○ ブラックボックスモニタリングは、サービスが正常動作していないなどの実際に起きている問題を扱 うモニタリング。 ○ ブラックボックスモニタリングを使ってサービスが実際にダウンしていることをモニタリングすること の重要性は変わらないものの、ホワイトボックスモニタリングによって事前に障害の兆候や異常を 知ることで早期の対処が可能。 slow... down... 11 サービス プロセス/コンテナ システム

Slide 12

Slide 12 text

Service クラウドネイティブなモニタリングについて ● 集団に対する集計値のモニタリング ○ 複数のコンテナで構成されているマイクロサービスや、複数のマイクロサービスで構成されるサー ビスなど、モニタリングの対象は集団として捉える必要が出てきます。このような要求に対応するた めの集計機能が必要となります。 ○ このような観点のモニタリングではメトリクスを用いることになります。 ■ 例:直近のHTTPリクエストで(サービスを構成するコンテナ全体を通して )エラー発生率が上 がってきていないか? 12

Slide 13

Slide 13 text

13 Service B クラウドネイティブなモニタリングについて ● サービスの自動的な検出および自動的なモニタリング開始 ○ 動的に変更される構成要素(スケールアウトしてコンテナが増える、マイクロサービスが新たに増え る、など)に自動的に追従する必要があります。 Service A Service C monitor discovery & monitor discovery & monitor 変更 既存

Slide 14

Slide 14 text

Prometheus ● メトリクスを用いたPull型のモニタリングシステム ● 2012年に SoundCloud 社のエンジニアによって開発がスタート。2016年に CNCF がホ ストする2番目のプロジェクトとなった。 ● データは時系列で保存される ● ラベルを用いた強力なデータモデルとクエリ言語(PromQL)が利用可能 ○ データモデルはシンプルなテキスト形式なため、 Prometheus が読み込むメトリクスを容易に実装可能 ○ クエリ言語ではラベルを用いた集約が可能なため、自分の欲しい観点で値を取得可能 (例 : サービスごと、リージョンごと、など ) ● サービスディスカバリにより動的にモニタリング対象を追加・変更可能 ● Grafana 等を用いることでデータを可視化できる ● Logging の機能は提供しない ● 長期ストレージ機能は提供しない 14

Slide 15

Slide 15 text

Prometheus ● コンポーネント構成 ref: https://prometheus.io/docs/introduction/overview/ Prometheus server モニタリング対象からメトリクス値を取得して保 存する。また、取得したメトリクス値に従って障 害かどうかを判定するルール判定を行う。 Alertmanager Prometheus が障害と判断した時に特定の通 知を実行するコンポーネントであり、メール通知 やSlackを始めとするチャットツールへの通知、 任意のWebhook実行が可能。 Pushgateway バッチジョブ等の結果をキャッシュし、 Prometheusが結果をPullする。 Grafana Prometheus に蓄積されたデータの参照、グラ フ化を行うダッシュボード。 15

Slide 16

Slide 16 text

Prometheus ● データモデル と PromQL による集計 http_requests_total{code="200",instance="10.8.0.10:8080", ...} 8586 http_requests_total{code="200",instance="10.8.0.25:8080", ...} 7946 http_requests_total{code="404",instance="10.8.0.10:8080", ...} 8004 http_requests_total{code="404",instance="10.8.0.25:8080", ...} 7905 16 15909 sum(http_requests_total{job="example-app", code="404"}) → 8004 + 7905 15851 PromQL PromQL sum(http_requests_total{job="example-app", instance="10.8.0.25:8080"}) → 7946 + 7905

Slide 17

Slide 17 text

Prometheus ● サービスディスカバリ ○ kubernetes-sd : Kubernetes API を使って Kubernetes 上のリソース情報を取得できる。 Service のIPアドレスや Endpoints 情報を取得し、 Prometheus がメトリクスを取得するのに利用する。 ○ 他にも OpenStack、GCP GCE、AWS EC2、Azure 等のサービスディスカバリ機能もある。 17 Service A Service B discovery & monitor 変更 既存

Slide 18

Slide 18 text

Prometheus ● Grafana を使って Prometheus に格納されたデータを可視化 18

Slide 19

Slide 19 text

Prometheus ● モニタリングで提供するべきメトリクス ref: https://www.slideshare.net/brianbrazil/devops-ireland-systems-monitoring-with-prometheus#27 ref: https://www.slideshare.net/brianbrazil/devops-ireland-systems-monitoring-with-prometheus#28 19

Slide 20

Slide 20 text

デモ ● Prometheus WebUI ● Grafana ダッシュボード 20

Slide 21

Slide 21 text

Operator ● CoreOSのブログで発表された考え方で、アプリケーションの作成、設定、管理を 行ってくれる固有のコントローラのこと。Kubernetes の仕組みを使って実現されて おり、アプリケーション独自のタスクを自動化してくれる。 ● 発表当時(2016/11)に紹介されていたのは、etcd-operator と prometheus-operator の2つ。 ● Kubernetes 上のアプリケーションと同様のアプローチでマニフェストを使った宣言 によって対象を管理することができる。 ● KubeCon Europe 2018 で Operator Framework が発表され、今後 Kubernetes のエコシステムで各種 Operator の実装が進むと考えられる。 21 ref: https://coreos.com/blog/introducing-operator-framework

Slide 22

Slide 22 text

Prometheus Operator ● Prometheus を管理する Operator で、デプロイ・モニタリング設定・アラート設定な どを Kubernetes のリソースとして扱うことが可能。 ● Prometheus Operator デプロイ後、以下のようなマニフェストを Kubernetes に適 用すれば Prometheus がデプロイされる。 apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus spec: serviceMonitorSelector: matchLabels: team: frontend resources: requests: memory: 400Mi apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: example-app labels: team: frontend spec: selector: matchLabels: app: example-app endpoints: - port: web 22

Slide 23

Slide 23 text

Prometheus Operator ● Prometheus は Pod としてデプロイされるため、オートヒールなど Kubernetes の 標準機能が動作します。 ● 設定変更は kubectl などを使って kind:Prometheus や kind:ServiceMonitor リ ソースに対する変更で実行します。 ref: https://coreos.com/operators/prometheus/docs/latest/user-guides/getting-started.html 23

Slide 24

Slide 24 text

1. サンプルアプリデプロイ 2. Prometheus + Grafana デ プロイ 3. モニタリング設定投入 4. Grafana で確認 5. アプリをスケールアウト 6. Grafana で再度確認 デモ 24 Example App Prometheus Grafana monitor データ読み込み ブラウザから確認 Prometheus Operator デプロイ デモ構成の概要 ref: https://github.com/atoato88/prometheus-monitoring-demo

Slide 25

Slide 25 text

Wrap-up ● モニタリングのソフトウェアもクラウドネイティブアプリケーションの特徴に対応でき る必要があります。(手動の運用では追いつかない可能性があります。) ○ ホワイトボックスモニタリングも行いましょう ○ 集団に対する集計値を使ってサービスに対する健全性をモニタリングしましょう ○ サービスの動的な変更を考慮しましょう ● Prometheus、Prometheus Operator を使って Kubernetes と連携したモニタリン グを実現しましょう。 ● 既存の運用基盤からクラウドネイティブアプリケーションを扱う事もできると思いま すが、Operator など Kubernetes を使ったシステムを検討することで幸せになれま す。使える仕組みは積極的に使いましょう。 25

Slide 26

Slide 26 text

その他の関連トピック ● Thanos ○ https://github.com/improbable-eng/thanos ○ 長期データ保管に対応 ○ 複数のPrometheusのメトリクスをマージして見れるグローバルビュー ○ メトリクスのダウンサンプリング機能 ● Istio v1.0 リリース (2018/07/31) ← NEW!! ○ https://istio.io/blog/2018/announcing-1.0/ ○ サービスメッシュにより提供されるモニタリング機能 26

Slide 27

Slide 27 text

参考 ● Prometheus ○ https://prometheus.io/ ● Prometheus Operator ○ https://github.com/coreos/prometheus-operator ● SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム ○ https://www.oreilly.co.jp/books/9784873117911/ ● Prometheus Up & Running ○ http://shop.oreilly.com/product/0636920147343.do ● Declarative Multi Cluster Monitoring With Prometheus ○ http://sched.co/Dqw1 ○ slide ● Monitoring What Matters: The Prometheus Approach to Whitebox Monitoring ○ https://www.slideshare.net/brianbrazil/monitoring-what-matters-the-prometheus-approach-to-whitebox-monitoring-berlin- ops-summit-2016 27

Slide 28

Slide 28 text

使用素材 ● ICOON MONO ○ http://icooon-mono.com/ 28 ● 歯車 ● 炎 ● 人物 ● 電球

Slide 29

Slide 29 text

Thank you!! 29