Fluentdで始めるPrometheus / Prometheus Tokyo Meetup #1

Fluentdで始めるPrometheus / Prometheus Tokyo Meetup #1

Try Prometheus with Fluentd

59c0cc69a8ad4ca8d26d752b3b795b55?s=128

kazegusuri

April 10, 2017
Tweet

Transcript

  1. 3.

    さわってきたもの  Fluentd (2012~, v0.10)  Docker (2013~, v0.6) 

    Kubernetes (2015~, v0.10)  Prometheus (2015~, v0.13)  gRPC (2016~)
  2. 4.

    さわってきたもの  Fluentd (2012~, v0.10)  Docker (2013~, v0.6) 

    Kubernetes (2015~, v0.10)  Prometheus (2015~, v0.13)  gRPC (2016~)
  3. 5.
  4. 6.

    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
  5. 7.

    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
  6. 8.

    prometheus Output/Filter plugin  メトリクスをログから収集  Output/Filter pluginとして実装  メトリクスはInput

    Pluginで回収  アプリケーションの外でメトリクス収集  使えるメトリクスの種類  counter, gauge, summary, histogram  類似のツール  https://github.com/google/mtail
  7. 9.

    メトリクス収集の例 <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
  8. 10.

    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
  9. 13.

    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)
  10. 14.

    prometheus_output_monitor  retry_wait で現在のretry_wait がわかる  max_retry_wait の設定漏れがわかる  num_errors

    の差を見ればエラー出過ぎがわかる  emit_count の差を見ればそもそも来てないのがわかる
  11. 15.

    prometheus_tail_monitor  in_tail プラグインのメトリクスを収集  pos_fileの情報  position (どこまで読んだか) 

    inode (読んでいるファイル)  pos_fileを指定してなくても動作  labelにファイルのpathが自動で付与