Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Prometheusを始めよう / Introduction Prometheus ja

kameneko
September 25, 2019

Prometheusを始めよう / Introduction Prometheus ja

「Introduction Prometheus」の日本語・改訂版です。
https://speakerdeck.com/takumanakagame/introduction-prometheus

kameneko

September 25, 2019
Tweet

More Decks by kameneko

Other Decks in Technology

Transcript

  1. Prometheusを始めよう
    かめねこ
    さくらインターネット株式会社

    View Slide

  2. かめねこ
    Takuma Nakagame
    @kameneko1004
    ● SAKURA internet Inc.
    ○ Cloud Service Provider
    ● IT infrastructure engineer
    ● Evangelist
    ● LIKE
    ○ Prometheus
    ○ FreeNAS

    View Slide

  3. 今回のゴール
    ● Prometheusを触りたくてソワソワしちゃう
    ● 監視がやりたくなる
    ● というかPrometheusに恋する

    View Slide

  4. Prometheusとは?

    View Slide

  5. Prometheusとは?
    ● SoundCloudのエンジニアによって開発された監視システム
    ● 時系列データベース採用したPull型データモデル
    ● 自動で監視対象を追跡するServiceDiscovery
    ● PromQLによる柔軟なクエリ
    ● Golangで書かれているのでシンプル

    View Slide

  6. Dream Hack Monitoring with Prometheus
    ● 10,000 computers
    ● 500 switches
    by PromCon 2016 Berlin
    https://promcon.io/2016-berlin/talks/monitoring-dreamhack-the-worlds-largest-digital-festival/

    View Slide

  7. Prometheusのアーキテクチャ

    View Slide

  8. View Slide

  9. View Slide

  10. ちょっとよくわからないので

    View Slide

  11. 最低限のコンポーネントをご紹介

    View Slide

  12. これだけ覚えればとりあえずOK
    ● Prometheus Server
    ● Exporter
    ● Service Discovery
    ● PromQL

    View Slide

  13. ● 監視ターゲットからメトリクスを収集
    ● PromQLで必要なメトリクスを抽出
    ● Alertを定義
    ● WebGUI
    Prometheus Server

    View Slide

  14. Exporter
    ● 監視エージェント的な存在
    ● メトリクスを収集してPrometheusに展開

    View Slide

  15. Exporter

    View Slide

  16. Exporter
    監視対象ごとにExporterが存在
    ● Server : Node Exporter
    ● MySQL : MySQL Server Exporter
    ● Nginx : NGINX Exporter
    ● Apache : Apache Exporter
    ● 他にもいっぱい!
    https://prometheus.io/docs/instrumenting/exporters/

    View Slide

  17. Service Discovery
    自動で監視対象を追跡
    ● Kubernetes
    ● AWS EC2
    ● GCP GCE
    ● OpenStack
    ● Azure
    ● …その他

    View Slide

  18. PromQL
    ● Prometheus Query Language
    ● メトリクスを抽出
    ● アラートの定義も
    ● WebGUI
    ● API
    ● Grafana

    View Slide

  19. An Example of PromQL
    http_requests_total
    HTTPのリクエスト数をすべて取得
    http_requests_total{pod_name=”nginx1”}
    POD ‘nginx1’なHTTPのリクエストだけ取得
    sum(http_requests_total)
    HTTPのリクエストの合計を取得

    View Slide

  20. Prometheusを始めるには?

    View Slide

  21. Prometheusを始めるSTEP
    ● コンテナ
    ● バイナリ

    View Slide

  22. Prometheusを始めるSTEP
    1. バイナリをダウンロード
    2. ファイルを解凍
    3. 実行!
    ● コンテナ
    ● バイナリ

    View Slide

  23. バイナリをダウンロード
    https://github.com/prometheus/prometheus/releases
    $ wget https://github.com/prometheus/prometheus/releases/download/v2.11.1/prometheus-2.12.0.linux-amd64.tar.gz

    View Slide

  24. 解凍
    $ tar -xvf prometheus-2.12.0.linux-amd64.tar.gz

    View Slide

  25. Run
    $ cd prometheus-2.12.0.linux-amd64/
    $ ./prometheus

    View Slide

  26. Run
    $ cd prometheus-2.12.0.linux-amd64/
    $ ./prometheus
    FINISH!

    View Slide

  27. もう少し掘り下げると
    global:
    scrape_interval: 1m
    evaluation_interval: 15s
    scrape_timeout: 1m
    scrape_configs:
    - job_name: 'prometheus'
    static_configs:
    - targets:
    - 'localhost:9090'
    - 'localhost:9542'

    View Slide

  28. もう少し掘り下げると
    global:
    scrape_interval: 1m
    evaluation_interval: 15s
    scrape_timeout: 1m
    scrape_configs:
    - job_name: 'prometheus'
    static_configs:
    - targets:
    - 'localhost:9090'
    - 'localhost:9542'
    Prometheus全体の設定

    View Slide

  29. もう少し掘り下げると
    global:
    scrape_interval: 1m
    evaluation_interval: 15s
    scrape_timeout: 1m
    scrape_configs:
    - job_name: 'prometheus'
    static_configs:
    - targets:
    - 'localhost:9090'
    - 'localhost:9542'
    監視ターゲットの追加設定
    ← は静的に指定

    View Slide

  30. もう少し掘り下げると
    global:
    scrape_interval: 1m
    evaluation_interval: 15s
    scrape_timeout: 1m
    scrape_configs:
    - job_name: 'kubernetes_pods'
    kubernetes_sd_configs:
    - role: pod
    relabeling:
    - source_labels: [__meta_kubernetes_pod_name]
    target_label: pod_name
    - source_labels: [__meta_kubernetes_node_name]
    target_label: hostname

    View Slide

  31. もう少し掘り下げると
    global:
    scrape_interval: 1m
    evaluation_interval: 15s
    scrape_timeout: 1m
    scrape_configs:
    - job_name: 'kubernetes_pods'
    kubernetes_sd_configs:
    - role: pod
    relabeling:
    - source_labels: [__meta_kubernetes_pod_name]
    target_label: pod_name
    - source_labels: [__meta_kubernetes_node_name]
    target_label: hostname
    Kubernetesの場合は
    kubernetes_sd_configs
    を利用

    View Slide

  32. もう少し掘り下げると
    global:
    scrape_interval: 1m
    evaluation_interval: 15s
    scrape_timeout: 1m
    scrape_configs:
    - job_name: 'kubernetes_pods'
    kubernetes_sd_configs:
    - role: pod
    relabeling:
    - source_labels: [__meta_kubernetes_pod_name]
    target_label: pod_name
    - source_labels: [__meta_kubernetes_node_name]
    target_label: hostname
    relabelingで
    任意のラベルを
    生成・加工する

    View Slide

  33. Prometheusが適する環境と苦手な環境

    View Slide

  34. Prometheusが得意とすること
    ● Kubernetesの監視
    ○ 標準でKubernetesのAPIをサポート
    ● クラウド環境の監視
    ○ 大手クラウドをサポート
    ● 大規模監視
    ○ SaaSと比べてTCOが低くなる

    View Slide

  35. Prometheusが苦手とすること
    ● ログやイベント監視
    ○ Key (メトリクスとラベルの組み合わせ ) に対して
    Value (浮動小数点数) を持つデータモデル
    ● 100%のメトリクスを要求すること
    ○ 99.9%のメトリクス
    ○ 課金システムなどは注意が必要
    ● ドキュメントの充実度
    ○ ドキュメントが少ない
    ○ 日本語は「入門Prometheus」くらい

    View Slide

  36. Prometheusが苦手とすること
    ● ログやイベント監視
    ○ Key (メトリクスとラベルの組み合わせ ) に対して
    Value (浮動小数点数) を持つデータモデル
    ● 100%のメトリクス
    ○ 課金システムなどは注意が必要
    ● ドキュメントの充実度
    ○ ドキュメントが本当に無い
    ○ 日本語は「入門Prometheus」くらい

    View Slide

  37. まとめ

    View Slide

  38. まとめ
    ● Kubernetesやクラウドに適した監視システム
    ● ServiceDiscoveryで監視対象を自動追跡
    ● Exporterの数だけ監視できる
    ○ なければ作る
    ● シンプル

    View Slide

  39. まとめ
    ● Kubernetesやクラウドに適した監視システム
    ● ServiceDiscoveryで監視対象を自動追跡
    ● Exporterの数だけ監視できる
    ○ なければ作る
    ● シンプル
    Prometheusはいいぞ

    View Slide