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
1.9k
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.6k
handy-spanner GCPUG
kazegusuri
4
1.9k
Open SKT: メルペイ開発の裏側 / builderscon tokyo 2019 Open SKT
kazegusuri
22
27k
Keep watching and extending features of gRPC
kazegusuri
3
2.5k
Testing with microservices in merpay
kazegusuri
10
10k
Real World Mercari API Architecture
kazegusuri
1
6.2k
gRPC and REST with gRPC in practice
kazegusuri
19
7.9k
GRPCの実践と現状での利点欠点 / Go Conference 2016 Spring
kazegusuri
44
32k
OutputとBufferedOutputの間の何か
kazegusuri
2
3.3k
Other Decks in Programming
See All in Programming
AI時代のドメイン駆動設計-DDD実践におけるAI活用のあり方 / ddd-in-ai-era
minodriven
23
8.9k
kiroでゲームを作ってみた
iriikeita
0
180
CEDEC 2025 『ゲームにおけるリアルタイム通信への QUIC導入事例の紹介』
segadevtech
3
960
オープンセミナー2025@広島「君はどこで動かすか?」アンケート結果
satoshi256kbyte
0
200
「リーダーは意思決定する人」って本当?~ 学びを現場で活かす、リーダー4ヶ月目の試行錯誤 ~
marina1017
0
240
サーバーサイドのビルド時間87倍高速化
plaidtech
PRO
0
440
令和最新版手のひらコンピュータ
koba789
14
8k
ライブ配信サービスの インフラのジレンマ -マルチクラウドに至ったワケ-
mirrativ
1
260
なぜ今、Terraformの本を書いたのか? - 著者陣に聞く!『Terraformではじめる実践IaC』登壇資料
fufuhu
4
650
ワープロって実は計算機で
pepepper
2
1.4k
コーディングは技術者(エンジニア)の嗜みでして / Learning the System Development Mindset from Rock Lady
mackey0225
2
560
Introduction to Git & GitHub
latte72
0
120
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Into the Great Unknown - MozCon
thekraken
40
2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
RailsConf 2023
tenderlove
30
1.2k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
How GitHub (no longer) Works
holman
315
140k
Designing Experiences People Love
moore
142
24k
Automating Front-end Workflow
addyosmani
1370
200k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
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の監視に必要なメトリクスを収集 他にもネタ(メトリクス)があれば実装します! おわり