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.4k
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
The free-lunch guide to idea circularity
hollycummins
0
340
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
160
Rで始めるML・LLM活用入門
wakamatsu_takumu
0
200
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
1.3k
Understanding Apache Lucene - More than just full-text search
spinscale
0
140
ふつうのRubyist、ちいさなデバイス、大きな一年 / Ordinary Rubyists, Tiny Devices, Big Year
chobishiba
1
500
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
7
3.1k
OTP を自動で入力する裏技
megabitsenmzq
0
120
存在論的プログラミング: 時間と存在を記述する
koriym
4
460
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
170
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
2
520
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
440
Featured
See All Featured
Abbi's Birthday
coloredviolet
2
5.6k
Between Models and Reality
mayunak
2
240
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
490
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Paper Plane (Part 1)
katiecoart
PRO
0
5.8k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Fireside Chat
paigeccino
42
3.8k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
410
How to train your dragon (web standard)
notwaldorf
97
6.6k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
320
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
160
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の監視に必要なメトリクスを収集 他にもネタ(メトリクス)があれば実装します! おわり