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.8k
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.5k
handy-spanner GCPUG
kazegusuri
4
1.8k
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.1k
gRPC and REST with gRPC in practice
kazegusuri
19
7.8k
GRPCの実践と現状での利点欠点 / Go Conference 2016 Spring
kazegusuri
44
32k
OutputとBufferedOutputの間の何か
kazegusuri
2
3.2k
Other Decks in Programming
See All in Programming
Devin , 正しい付き合い方と使い方 / Living and Working with Devin
yukinagae
1
530
ローコードサービスの進化のためのモノレポ移行
taro28
1
330
いまさら聞けない生成AI入門: 「生成AIを高速キャッチアップ」
soh9834
12
3.7k
家族・子育て重視/沖縄在住を維持しながらエンジニアとしてのキャリアをどのように育てていくか?
ug
0
240
アプリを起動せずにアプリを開発して品質と生産性を上げる
ishkawa
0
290
自分のために作ったアプリが、グローバルに使われるまで / Indie App Development Lunch LT
pixyzehn
1
120
生成AIの使いどころ
kanayannet
0
100
php-fpm がリクエスト処理する仕組みを追う / Tracing-How-php-fpm-Handles-Requests
shin1x1
5
820
Preact、HooksとSignalsの両立 / Preact: Harmonizing Hooks and Signals
ssssota
1
700
Devin入門と最近のアップデートから見るDevinの進化 / Introduction to Devin and the Evolution of Devin as Seen in Recent Update
rkaga
7
3.8k
爆速スッキリ! Rspack 移行の成果と道のり - Muddy Web #11
dora1998
1
150
CTFのWebにおける⾼難易度問題について
hamayanhamayan
1
980
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Embracing the Ebb and Flow
colly
85
4.6k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Thoughts on Productivity
jonyablonski
69
4.5k
It's Worth the Effort
3n
184
28k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
25k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.4k
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の監視に必要なメトリクスを収集 他にもネタ(メトリクス)があれば実装します! おわり