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
940
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
170
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
おやつは300円まで!の最適化を模索してみた
techtekt
PRO
0
280
kubellが考える戦略と実行を繋ぐ活用ファーストのデータ分析基盤
kubell_hr
0
140
フィンテック養成勉強会#56
finengine
0
130
クラウドセキュリティを支える技術と運用の最前線 / Cutting-edge Technologies and Operations Supporting Cloud Security
yuj1osm
2
280
大「個人開発サービス」時代に僕たちはどう生きるか
sotarok
19
9.2k
BPaaSにおける人と協働する前提のAIエージェント-AWS登壇資料
kentarofujii
0
120
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.7k
dbt開発 with Claude Codeのためのガードレール設計
10xinc
0
110
「魔法少女まどか☆マギカ Magia Exedra」のグローバル展開を支える、開発チームと翻訳チームの「意識しない協創」を実現するローカライズシステム
gree_tech
PRO
0
570
ZOZOマッチのアーキテクチャと技術構成
zozotech
PRO
3
1.3k
DDD集約とサービスコンテキスト境界との関係性
pandayumi
2
260
Kiroと学ぶコンテキストエンジニアリング
oikon48
6
9.1k
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Mobile First: as difficult as doing things right
swwweet
224
9.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Building Adaptive Systems
keathley
43
2.7k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.8k
Faster Mobile Websites
deanohume
309
31k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
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はいいぞ