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
Fluentdで始めるPrometheus / Prometheus Tokyo Meetup #1
Search
kazegusuri
April 10, 2017
Programming
1
2k
Fluentdで始めるPrometheus / Prometheus Tokyo Meetup #1
Try Prometheus with Fluentd
kazegusuri
April 10, 2017
Tweet
Share
More Decks by kazegusuri
See All by kazegusuri
go-sqlite3を使ってCloud Spannerエミュレーターを作ってみた / Cloud Spanner emulator with go-sqlite3
kazegusuri
5
6.7k
handy-spanner GCPUG
kazegusuri
4
2k
Open SKT: メルペイ開発の裏側 / builderscon tokyo 2019 Open SKT
kazegusuri
22
27k
Keep watching and extending features of gRPC
kazegusuri
3
2.6k
Testing with microservices in merpay
kazegusuri
10
11k
Real World Mercari API Architecture
kazegusuri
1
6.3k
gRPC and REST with gRPC in practice
kazegusuri
19
8.1k
GRPCの実践と現状での利点欠点 / Go Conference 2016 Spring
kazegusuri
44
32k
OutputとBufferedOutputの間の何か
kazegusuri
2
3.4k
Other Decks in Programming
See All in Programming
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
190
dchart: charts from deck markup
ajstarks
3
990
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
6k
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
2.4k
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
190
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
260
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
120
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
Fragmented Architectures
denyspoltorak
0
150
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
130
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
520
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
527
40k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
sira's awesome portfolio website redesign presentation
elsirapls
0
140
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
HDC tutorial
michielstock
1
370
Designing Powerful Visuals for Engaging Learning
tmiket
0
230
GraphQLとの向き合い方2022年版
quramy
50
14k
Fireside Chat
paigeccino
41
3.8k
Tell your own story through comics
letsgokoyo
1
810
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Why Our Code Smells
bkeepers
PRO
340
58k
The Invisible Side of Design
smashingmag
302
51k
Transcript
Fluentdで始めるPrometheus @kazegusuri /Masahiro Sano Prometheus Tokyo Meetup #1
自己紹介 佐野 正浩(@kazegusuri) Principal Engineer@Mercari, Inc. Platform
Team Go と PHP で開発してます
さわってきたもの Fluentd (2012~, v0.10) Docker (2013~, v0.6)
Kubernetes (2015~, v0.10) Prometheus (2015~, v0.13) gRPC (2016~)
さわってきたもの Fluentd (2012~, v0.10) Docker (2013~, v0.6)
Kubernetes (2015~, v0.10) Prometheus (2015~, v0.13) gRPC (2016~)
None
fluent-plugin-prometheus 大きくわけて3つの機能 FluentdにPrometheus用のエンドポイント提供 prometheus Input Plugin
メッセージからメトリクスを取得 prometheus Output/Filter Plugin Fluentd自体の内部メトリクス prometheus_monitor Input Plugin https://github.com/kazegusuri/fluent-plugin-prometheus
prometheus Input Plugin FluentdにPrometheus用のエンドポイント提供 PrometheusからのPull 他のプラグインで取得したメトリクスを返す <source>
@type prometheus port 24231 </source> GET /metrics scrape_configs: - job_name: fluentd static_configs: - targets: - 'localhost:24231‘ metrics_path: /metrics
prometheus Output/Filter plugin メトリクスをログから収集 Output/Filter pluginとして実装 メトリクスはInput
Pluginで回収 アプリケーションの外でメトリクス収集 使えるメトリクスの種類 counter, gauge, summary, histogram 類似のツール https://github.com/google/mtail
メトリクス収集の例 <filter nginx> @type prometheus <metric> name nginx_size_counter_bytes type counter
desc nginx bytes sent key size <labels> host ${hostname} foo bar </labels> </metric> </filter> {"size": 200} {"size": 100} # TYPE nginx_size_counter_bytes counter # HELP nginx_size_counter_bytes nginx bytes sent nginx_size_counter_bytes{host=“hoge",foo="bar"} 100 # TYPE nginx_size_counter_bytes counter # HELP nginx_size_counter_bytes nginx bytes sent nginx_size_counter_bytes{host=“hoge",foo="bar"} 300
prometheus_monitor Input plugin Fluentdの内部状態をメトリクスに monitor_agent プラグイン相当の機能 取得可能なメトリクス
buffer_queue_length buffer_total_queued_size retry_count http://docs.fluentd.org/v0.12/articles/monitoring <match nginx> @type forward @id test_forward disable_retry_limit <server> host 127.0.0.1 </server> </match> fluentd_status_buffer_queue_length{ plugin_id="test_forward", plugin_category="output", type="forward“ } 17 fluentd_status_buffer_total_bytes{ plugin_id="test_forward", plugin_category="output", type="forward“ } 228 fluentd_status_retry_count{ plugin_id="test_forward", plugin_category="output", type="forward“ } 19
prometheus_monitorを使えば監視できそうな気はする だがFluentdで監視したいのはそれだけなのか… retryに失敗しすぎてretry_waitが長過ぎ問題… 実は全部emitに失敗していた… そもそもoutputに来てなかった…
tailしていたと思ったらパスが変わっていた…
prometheus_monitorを使えば監視できそうな気はする だがFluentdで監視したいのはそれだけなのか… retryに失敗しすぎてretry_waitが長過ぎ問題… 実は全部emitに失敗していた… そもそもoutputに来てなかった…
tailしていたと思ったらパスが変わっていた… _人人人人人人人_ > 作ってみた <  ̄Y^Y^Y^Y^Y^Y ̄
prometheus_output_monitor アウトプットプラグインの詳細なメトリクスを収集 収集可能なメトリクス buffer_queue_length buffer_total_bytes
retry_count num_errors ★ emit_count retry_wait ★ (現在のretry_wait (秒)) emit_records (v0.14 only) write_count (v0.14 only) rollback_count (v0.14 only)
prometheus_output_monitor retry_wait で現在のretry_wait がわかる max_retry_wait の設定漏れがわかる num_errors
の差を見ればエラー出過ぎがわかる emit_count の差を見ればそもそも来てないのがわかる
prometheus_tail_monitor in_tail プラグインのメトリクスを収集 pos_fileの情報 position (どこまで読んだか)
inode (読んでいるファイル) pos_fileを指定してなくても動作 labelにファイルのpathが自動で付与
prometheus_tail_monitor positionの差を見ることで in_tail されてないことがわかるよ position自体でログサイズもわかるよ inodeでログローテートされてないことがわかるよ
max_retry_wait 指定無し
max_retry_wait指定有り
max_retry 指定 v0.12 v0.14
tailのposition
まとめ fluent-plugin-prometheus FluentdとPrometheusをつなぐプラグイン Fluentdの監視に必要なメトリクスを収集 他にもネタ(メトリクス)があれば実装します! おわり