今日から始めるPrometheusによるシステム監視 / Starting system monitoring with Prometheus today
by
kameneko
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
© SAKURA internet Inc. 今日から始める Prometheus によるシステム監視 SAKURA internet Inc. Takuma Nakagame 2021/03/06 Open Source Conference 2021 Online/Spring
Slide 2
Slide 2 text
かめねこ • エバンジェリストとインフラエンジニアしてる • システム監視とかしているぺんぎん • 水族館に行きたくて仕方がない • 来週自動車免許取得予定(ウッキウキ @kameneko @kameneko1004
Slide 3
Slide 3 text
このセッションのゴール
Slide 4
Slide 4 text
このセッションのゴール 「Prometheus完全に理解した」 プ ロ メ テ ウ ス
Slide 5
Slide 5 text
このセッションのゴール 「Prometheus完全に理解した」 1. Prometheusの特徴とアーキテクチャ 2. Prometheusを利用するには?
Slide 6
Slide 6 text
© SAKURA internet Inc. Prometheus とは?
Slide 7
Slide 7 text
Prometheusとは? • SoundCloudのエンジニアによって開発された監視システム • 時系列データベースを採用したPull型データモデル • ServiceDiscoveryによるターゲット自動追従 • PromQLによるシンプルかつ柔軟なクエリ • 多種多様なExporter
Slide 8
Slide 8 text
Dream Hack Monitoring using Prometheus 10,000 Computers 500 Switches https://promcon.io/2016-berlin/talks/monitoring-dreamhack-the-worlds-largest-digital-festival/
Slide 9
Slide 9 text
© SAKURA internet Inc. アーキテクチャ
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
1. Prometheus Server 2. Service Discovery 3. Exporter 4. Alerting 5. PromQL 6. Visualization
Slide 12
Slide 12 text
1. Prometheus Server • Prometheus本体 • 監視ターゲットからメトリクスを収集 • シングルバイナリで実行 • クエリの実行やアラート管理
Slide 13
Slide 13 text
2. Service Discovery • ターゲットを自動的に追従する仕組み • 対応したAPIからインスタンス情報を収集、自動追加/削除 • 各種クラウドプラットフォームやOSSに対応 • Azure, AWS EC2, GCP GCE, OpenStack など…
Slide 14
Slide 14 text
3. Exporter • 監視対象からメトリクスを収集し、Prometheusへ公開 • リバースプロキシとして動作 • 多種多様なExporterが存在
Slide 15
Slide 15 text
4. Alerting • Alertmanager を利用 • アラートの重複排除や柔軟なルーティングを実現 • Prometheusとは別のコンポーネントとして分離
Slide 16
Slide 16 text
5. PromQL • Prometheus Query Language • シンプルかつ時系列データにマッチ • ラベルによるフィルタリング • メトリクスの抽出からアラートまで利用
Slide 17
Slide 17 text
6. Visualization • Prometheusの持つWeb UI
Slide 18
Slide 18 text
6. Visualization • Grafana
Slide 19
Slide 19 text
1. Prometheus Server 2. Service Discovery 3. Exporter 4. Alerting 5. PromQL 6. Visualization
Slide 20
Slide 20 text
Prometheus hosted by CNCF Projects • Cloud Native Computing Foundationによってホスト • Cloud Nativeなオープンソースプロジェクトを推進 • The Linux Foundation配下の組織 • PrometheusはCNCFの2つ目のGraduated Project
Slide 21
Slide 21 text
Prometheus hosted by CNCF Projects • Graduated = 卒業 → 一人前のソフトウェア • ソフトウェアの成熟度, コミュニティ, 継続性, etc… • イノベーター理論と合致 • ソフトウェアの習熟度を示す
Slide 22
Slide 22 text
Prometheus hosted by CNCF Projects • PrometheusはCloud NativeなMonitoring Software • キーワード • コンテナ, サービスメッシュ, マイクロサービス • Observabilityを実現 クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代 的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織 にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータ ブルインフラストラクチャ、および宣言型APIがあります。 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な 自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行 うことができます。 Cloud Native Computing Foundationは、オープンソースでベンダー中立プロジェクトのエコシステムを育 成・維持して、このパラダイムの採用を促進したいと考えてます。 私たちは最先端のパターンを民主化し、こ れらのイノベーションを誰もが利用できるようにします。
Slide 23
Slide 23 text
Prometheus hosted by CNCF Projects • PrometheusはCloud NativeなMonitoring Software • キーワード • コンテナ, サービスメッシュ, マイクロサービス • Observabilityを実現 クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代 的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織 にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータ ブルインフラストラクチャ、および宣言型APIがあります。 これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な 自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行 うことができます。 Cloud Native Computing Foundationは、オープンソースでベンダー中立プロジェクトのエコシステムを育 成・維持して、このパラダイムの採用を促進したいと考えてます。 私たちは最先端のパターンを民主化し、こ れらのイノベーションを誰もが利用できるようにします。
Slide 24
Slide 24 text
© SAKURA internet Inc. Observability
Slide 25
Slide 25 text
Observability 可観測性は人によって意味が異なる https://distributed-systems-observability-ebook.humio.com/
Slide 26
Slide 26 text
可観測性 Observability システムの情報を取得し、見える状態にすること
Slide 27
Slide 27 text
可観測性 Observability システムの情報を取得し、見える状態にすること 可観測
Slide 28
Slide 28 text
従来のシステムのオペレーション Web3層モデル Web App DB ユーザ シンプルな構成
Slide 29
Slide 29 text
従来のシステムのオペレーション Web3層モデル Web App DB ユーザ 問題が発生しても、 個別に追うことが出来た シンプルな構成
Slide 30
Slide 30 text
分散システムのオペレーション 小さなサービス 分散システム
Slide 31
Slide 31 text
分散システムのオペレーション 分散システム 大量のコンポーネント 人間の手で追っていくことが 難しくなった
Slide 32
Slide 32 text
Twitterの 分散システム https://blog.twitter.com/engineering/en_us/a/2013/observability-at-twitter.html
Slide 33
Slide 33 text
Observabilityによる 横断的な監視
Slide 34
Slide 34 text
可観測性 Observability システムの情報を取得し、見える状態にすること 可観測
Slide 35
Slide 35 text
© SAKURA internet Inc. Observability と Prometheus
Slide 36
Slide 36 text
Telemetry • Observabilityを実現するツールに求められる要素 • Observability ≠ Telemetry • Telemetryなツールの導入 → Observabilityの実現ではない
Slide 37
Slide 37 text
Telemetry Metrics Logging Tracing Telemetry サービスを定量的に数値として計測 コンポーネントに対するイベントを記録 リクエストに対するイベントを記録
Slide 38
Slide 38 text
Telemetry Metrics Logging Tracing Telemetry サービスを定量的に数値として計測 コンポーネントに対するイベントを記録 リクエストに対するイベントを記録
Slide 39
Slide 39 text
Metrics for Prometheus • 継続的な数値データ • 時系列データ • 統計的な集計 • トレンド予測
Slide 40
Slide 40 text
© SAKURA internet Inc. Prometheus をはじめよう!
Slide 41
Slide 41 text
Prometheusをはじめるには
Slide 42
Slide 42 text
Prometheusをはじめるには バイナリを実行する
Slide 43
Slide 43 text
Prometheusをはじめるには バイナリを実行する 以上
Slide 44
Slide 44 text
Prometheusをはじめるには https://github.com/prometheus/prometheus/releases Releaseページへ
Slide 45
Slide 45 text
Prometheusをはじめるには 任意のアーキテクチャのバイナリをダウンロード
Slide 46
Slide 46 text
$ wget https://github.com/prometheus/prometheus/releases/ download/v2.25.0/prometheus-2.25.0.linux-amd64.tar.gz $ tar -xvf prometheus-2.25.0.linux-amd64.tar.gz $ cd prometheus-2.25.0.linux-amd64 $ ls console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool Prometheusをはじめるには ダウンロードしたファイルを解凍 Prometheus本体 構成ファイル
Slide 47
Slide 47 text
$ ./prometheus Prometheusをはじめるには バイナリを実行して完了
Slide 48
Slide 48 text
© SAKURA internet Inc. その他の要素
Slide 49
Slide 49 text
Storage • 通常はローカルディスクにデータを持つ • 2時間毎のブロック • Chunks, Index, Meta • 直近2時間未満はオンメモリ + WAL • 単体での冗長化/永続化の仕組みはなし ./data ├── 01BKGV7JBM69T2G1BGBGM6KB12 │ └── meta.json ├── 01BKGTZQ1SYQJTR4PB43C8PD98 │ ├── chunks │ │ └── 000001 │ ├── tombstones │ ├── index │ └── meta.json ├── 01BKGTZQ1HHWHV8FBJXW1Y3W0K │ └── meta.json ├── 01BKGV7JC0RY8A6MACW02A2PJD │ ├── chunks │ │ └── 000001 │ ├── tombstones │ ├── index │ └── meta.json ├── chunks_head │ └── 000001 └── wal ├── 000000002 └── checkpoint.00000001 └── 00000000
Slide 50
Slide 50 text
Storage Options • --storage.tsdb.path データの保存先PATHを指定(デフォルトは./path) • --storage.tsdb.retention.time ローカルストレージのデータ保持期間を指定 • --storage.tsdb.wal-compression 圧縮を有効にする ./data ├── 01BKGV7JBM69T2G1BGBGM6KB12 │ └── meta.json ├── 01BKGTZQ1SYQJTR4PB43C8PD98 │ ├── chunks │ │ └── 000001 │ ├── tombstones │ ├── index │ └── meta.json ├── 01BKGTZQ1HHWHV8FBJXW1Y3W0K │ └── meta.json ├── 01BKGV7JC0RY8A6MACW02A2PJD │ ├── chunks │ │ └── 000001 │ ├── tombstones │ ├── index │ └── meta.json ├── chunks_head │ └── 000001 └── wal ├── 000000002 └── checkpoint.00000001 └── 00000000
Slide 51
Slide 51 text
Remote Storage • 外部のデータベースに保存する仕組み • 対応したデータベースを利用 • アダプタ経由/直接 • PostgreSQL, Graphite, InfluxDB, M3DB, Cortex, Thanos など
Slide 52
Slide 52 text
PromQL • メトリクスを抽出、集計する言語 • ラベルによるフィルタリング • 多種多様な関数
Slide 53
Slide 53 text
PromQL http_requests_total http_requests_total{job="apiserver", handler="/api/comments"} http_requests_total{job=~".*server"} rate(http_requests_total[5m]) メトリクス名のみ ラベルでフィルタリング 正規表現でフィルタリング 関数の利用
Slide 54
Slide 54 text
© SAKURA internet Inc. おわりに
Slide 55
Slide 55 text
おわりに • Cloud Nativeなシステム監視ソフトウェア • とてもシンプル・簡単 • 強力なService Discovery • AlertmanagerやGrafanaとの連携 • Observabilityの実現に向けて
Slide 56
Slide 56 text
No content