Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Prometheusを始めよう / Introduction Prometheus ja
Search
kameneko
September 25, 2019
Technology
1
950
Prometheusを始めよう / Introduction Prometheus ja
「Introduction Prometheus」の日本語・改訂版です。
https://speakerdeck.com/takumanakagame/introduction-prometheus
kameneko
September 25, 2019
Tweet
Share
More Decks by kameneko
See All by kameneko
Prometheusでの監視データ活用マニュアル
takumanakagame
1
1.5k
書籍を書きました。 そう、VS Codeで。
takumanakagame
4
5.4k
今日から始めるPrometheusによるシステム監視 / Starting system monitoring with Prometheus today
takumanakagame
1
1.7k
システム監視、何からはじめる? / What is the first step for system monitoring?
takumanakagame
11
8.4k
Reading technical post for 'Reduce toil through better alerting'
takumanakagame
0
180
Reading white paper for `Monitoring Modern Infrastructure` Chapter 1
takumanakagame
0
150
次世代のログ基盤 Grafana Lokiを始めよう! / Introduction Grafana Loki and Promtail
takumanakagame
3
4.2k
CloudNativeな監視とは?今日から始める監視 / What is Cloud Native Monitoring. Let's try Monitoring!
takumanakagame
10
2.7k
Introduction Prometheus
takumanakagame
0
230
Other Decks in Technology
See All in Technology
PLaMoの事後学習を支える技術 / PFN LLMセミナー
pfn
PRO
9
3.7k
コンテキストエンジニアリングとは? 考え方と応用方法
findy_eventslides
4
870
「AI駆動PO」を考えてみる - 作る速さから価値のスループットへ:検査・適応で未来を開発 / AI-driven product owner. scrummat2025
yosuke_nagai
1
490
SoccerNet GSRの紹介と技術応用:選手視点映像を提供するサッカー作戦盤ツール
mixi_engineers
PRO
1
160
GA technologiesでのAI-Readyの取り組み@DataOps Night
yuto16
0
250
Oracle Cloud Infrastructure:2025年9月度サービス・アップデート
oracle4engineer
PRO
0
360
AIが書いたコードをAIが検証する!自律的なモバイルアプリ開発の実現
henteko
1
290
“2件同時配達”の開発舞台裏 〜出前館PMが挑んだダブルピック実現に向けた体験設計〜
demaecan
0
180
extension 現場で使えるXcodeショートカット一覧
ktombow
0
190
Goのビルドシステムの変遷 / The history of Go's build system
ymotongpoo
12
3.8k
AWSにおけるTrend Vision Oneの効果について
shimak
0
110
タスクって今どうなってるの?3.14の新機能 asyncio ps と pstree でasyncioのデバッグを (PyCon JP 2025)
jrfk
1
220
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Statistics for Hackers
jakevdp
799
220k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
19
1.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
114
20k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The World Runs on Bad Software
bkeepers
PRO
71
11k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
51k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Transcript
Prometheusを始めよう かめねこ さくらインターネット株式会社
かめねこ Takuma Nakagame @kameneko1004 • SAKURA internet Inc. ◦ Cloud
Service Provider • IT infrastructure engineer • Evangelist • LIKE ◦ Prometheus ◦ FreeNAS
今回のゴール • Prometheusを触りたくてソワソワしちゃう • 監視がやりたくなる • というかPrometheusに恋する
Prometheusとは?
Prometheusとは? • SoundCloudのエンジニアによって開発された監視システム • 時系列データベース採用したPull型データモデル • 自動で監視対象を追跡するServiceDiscovery • PromQLによる柔軟なクエリ •
Golangで書かれているのでシンプル
Dream Hack Monitoring with Prometheus • 10,000 computers • 500
switches by PromCon 2016 Berlin https://promcon.io/2016-berlin/talks/monitoring-dreamhack-the-worlds-largest-digital-festival/
Prometheusのアーキテクチャ
None
None
ちょっとよくわからないので
最低限のコンポーネントをご紹介
これだけ覚えればとりあえずOK • Prometheus Server • Exporter • Service Discovery •
PromQL
• 監視ターゲットからメトリクスを収集 • PromQLで必要なメトリクスを抽出 • Alertを定義 • WebGUI Prometheus Server
Exporter • 監視エージェント的な存在 • メトリクスを収集してPrometheusに展開
Exporter
Exporter 監視対象ごとにExporterが存在 • Server : Node Exporter • MySQL :
MySQL Server Exporter • Nginx : NGINX Exporter • Apache : Apache Exporter • 他にもいっぱい! https://prometheus.io/docs/instrumenting/exporters/
Service Discovery 自動で監視対象を追跡 • Kubernetes • AWS EC2 • GCP
GCE • OpenStack • Azure • …その他
PromQL • Prometheus Query Language • メトリクスを抽出 • アラートの定義も •
WebGUI • API • Grafana
An Example of PromQL http_requests_total HTTPのリクエスト数をすべて取得 http_requests_total{pod_name=”nginx1”} POD ‘nginx1’なHTTPのリクエストだけ取得 sum(http_requests_total)
HTTPのリクエストの合計を取得
Prometheusを始めるには?
Prometheusを始めるSTEP • コンテナ • バイナリ
Prometheusを始めるSTEP 1. バイナリをダウンロード 2. ファイルを解凍 3. 実行! • コンテナ •
バイナリ
バイナリをダウンロード https://github.com/prometheus/prometheus/releases $ wget https://github.com/prometheus/prometheus/releases/download/v2.11.1/prometheus-2.12.0.linux-amd64.tar.gz
解凍 $ tar -xvf prometheus-2.12.0.linux-amd64.tar.gz
Run $ cd prometheus-2.12.0.linux-amd64/ $ ./prometheus
Run $ cd prometheus-2.12.0.linux-amd64/ $ ./prometheus FINISH!
もう少し掘り下げると global: scrape_interval: 1m evaluation_interval: 15s scrape_timeout: 1m scrape_configs: -
job_name: 'prometheus' static_configs: - targets: - 'localhost:9090' - 'localhost:9542'
もう少し掘り下げると global: scrape_interval: 1m evaluation_interval: 15s scrape_timeout: 1m scrape_configs: -
job_name: 'prometheus' static_configs: - targets: - 'localhost:9090' - 'localhost:9542' Prometheus全体の設定
もう少し掘り下げると global: scrape_interval: 1m evaluation_interval: 15s scrape_timeout: 1m scrape_configs: -
job_name: 'prometheus' static_configs: - targets: - 'localhost:9090' - 'localhost:9542' 監視ターゲットの追加設定 ← は静的に指定
もう少し掘り下げると global: scrape_interval: 1m evaluation_interval: 15s scrape_timeout: 1m scrape_configs: -
job_name: 'kubernetes_pods' kubernetes_sd_configs: - role: pod relabeling: - source_labels: [__meta_kubernetes_pod_name] target_label: pod_name - source_labels: [__meta_kubernetes_node_name] target_label: hostname
もう少し掘り下げると global: scrape_interval: 1m evaluation_interval: 15s scrape_timeout: 1m scrape_configs: -
job_name: 'kubernetes_pods' kubernetes_sd_configs: - role: pod relabeling: - source_labels: [__meta_kubernetes_pod_name] target_label: pod_name - source_labels: [__meta_kubernetes_node_name] target_label: hostname Kubernetesの場合は kubernetes_sd_configs を利用
もう少し掘り下げると global: scrape_interval: 1m evaluation_interval: 15s scrape_timeout: 1m scrape_configs: -
job_name: 'kubernetes_pods' kubernetes_sd_configs: - role: pod relabeling: - source_labels: [__meta_kubernetes_pod_name] target_label: pod_name - source_labels: [__meta_kubernetes_node_name] target_label: hostname relabelingで 任意のラベルを 生成・加工する
Prometheusが適する環境と苦手な環境
Prometheusが得意とすること • Kubernetesの監視 ◦ 標準でKubernetesのAPIをサポート • クラウド環境の監視 ◦ 大手クラウドをサポート •
大規模監視 ◦ SaaSと比べてTCOが低くなる
Prometheusが苦手とすること • ログやイベント監視 ◦ Key (メトリクスとラベルの組み合わせ ) に対して Value (浮動小数点数)
を持つデータモデル • 100%のメトリクスを要求すること ◦ 99.9%のメトリクス ◦ 課金システムなどは注意が必要 • ドキュメントの充実度 ◦ ドキュメントが少ない ◦ 日本語は「入門Prometheus」くらい
Prometheusが苦手とすること • ログやイベント監視 ◦ Key (メトリクスとラベルの組み合わせ ) に対して Value (浮動小数点数)
を持つデータモデル • 100%のメトリクス ◦ 課金システムなどは注意が必要 • ドキュメントの充実度 ◦ ドキュメントが本当に無い ◦ 日本語は「入門Prometheus」くらい
まとめ
まとめ • Kubernetesやクラウドに適した監視システム • ServiceDiscoveryで監視対象を自動追跡 • Exporterの数だけ監視できる ◦ なければ作る •
シンプル
まとめ • Kubernetesやクラウドに適した監視システム • ServiceDiscoveryで監視対象を自動追跡 • Exporterの数だけ監視できる ◦ なければ作る •
シンプル Prometheusはいいぞ