GitLab x Prometheus -Application Performance-

GitLab x Prometheus -Application Performance-

2017/11/17
GitLab Meetup Tokyo #5
https://gitlab-jp.connpass.com/event/69475/

269258447d4284b5cb2ce0f048d143b2?s=128

Shingo.Kitayama

November 17, 2017
Tweet

Transcript

  1. GitLab x Prometheus デプロイアプリのPerformance測定 Shingo.Kitayama 2017/11/17 GitLab Meetup Tokyo #5

    https://gitlab-jp.connpass.com/event/69475/
  2. Introduction GitLab x Prometheus 2 日本ヒューレット・パッカード株式会社 テクニカルアーキテクト ・オープンソースソリューションの提案 ・コンサルティング、および構築デリバリーを担当 Now

    on Sale
  3. Introduction ITmediaエンタープライズ 連載中 3 変化を拒むおっさんに 喝をいれる連載 執筆中!! お仕事の息抜き&気分転換に ご覧ください。

  4. 本日のIndex GitLab x Prometheus 4 1. とりあえず理解するPrometheus 2. GitLabとPrometheusの連携 3.

    アプリパフォーマンス監視
  5. 1. とりあえず理解するPrometheus 5 - What’s Prometheus -

  6. Prometheusとは オープンソースの軽量サービス監視ツール 6 https://qiita.com/tnir/items/7dd63b7baa4299135194 パフォーマンスデータの収集やグラフの表示、アラートなどの通常監視機能に加え、クエリを利用して、CPUの負荷やメモリ、 ストレージの利用率、HTTPのレイテンシなどのメトリクスを計算しグラフ化することも可能。 - Pull型監視 - 監視対象

    Prometheus 管理サーバ側から管理対象に情報をリクエストし、ステータスを収集する方法。監視対象を完全にコントロールできる 反面、監視対象ホストが増えるたびに管理サーバの設定ファイルを更新する必要があります。 情報収集 リクエスト
  7. Prometheusの仕組み Prometheus Architecture 7 監視対象 Prometheus Server Retrieval PromQL ローカル

    ストレージ Storage 監視対象プロセス Exporter 情報収集 リクエスト ジョブプログラム PushGateway リクエスト 情報収集 情報送信 Alert manager Web UI ・ Grafana ・ API Client アラート送信 mail slack web hook Expression Browser 『メトリクスの収集/格納』 『アラートの通知』 『クエリの返答』
  8. Prometheus Exporters メトリクスの収集 8 監視対象 node exporter mysqld exporter mysql

    監視対象 既存の監視メトリックをPrometheusメトリックとしてエクスポートするのに役立つライブラリ。 http://target.local:9100/metrics - job_name: node static_configs: - targets: - ":9100" Prometheus Server
  9. 2. GitLabとPrometheusの連携 9 - Prometheus within GitLab -

  10. GitLabにおけるPrometheusの用途 Omnibus GitLabに付随しているPrometheusはGitLab管理用途 10 GitLabのプロセスステータス管理用Prometheus GitLabでデプロイしたアプリの パフォーマンス測定用Prometheus Omnibus GitLabに付随しているPrometheusでは、GitLab上で利用するプロセスのステー タスチェックを行う。

    個別にExporterを用意することによって、Environmentに配置したアプリケーションのパフォー マンスチェックを動的に行う。
  11. GitLabのプロセスステータス管理用Prometheus Exporters for Process Status 11 Exporters ステータス内容 ポート Node

    exporter メモリ、ディスク、CPU使用率などのマ シンリソースの測定 localhost:9100 Redis exporter Redisプロセスのリソース測定 localhost:9121 Postgres exporter ProstgreSQLプロセスのリソース測定 localhost:9187 GitLab monitor exporter DatabaseやGit、SidekiqなどのGitLab に関するリソース測定 localhost:9168
  12. GitLabのプロセスステータス管理用Prometheus http://gitlab.example.com/-/metrics?token=$token_id 12

  13. GitLabでデプロイしたアプリのパフォーマンス測定用Prometheus サポートメトリクス 13 Exporters Support Metric Kubernetes Average Memory Usage

    (MB) Average CPU Utilization (%) NGINX VTS exporter Throughput (req/sec) Latency (ms) HTTP Error Rate (HTTP Errors / sec) NGINX Ingress Controller Throughput (req/sec) Latency (ms) HTTP Error Rate (HTTP Errors / sec) HAProxy Throughput (req/sec) HTTP Error Rate (%) Amazon Cloud Watch Throughput (req/sec) Latency (ms) HTTP Error Rate (%)
  14. 3. アプリパフォーマンス監視 14 - Performance Monitoring -

  15. アプリケーションデプロイメント Sample Application 15

  16. Application構成 デプロイメント構成 16 Docker Engine Prometheus Server GitLab 情報収集 リクエスト

    http://haproxy:8080/admin?stats HAProxy Exporter http://gitlab-runner01:9101/metrics HAProxy Tomcat ユーザー アクセス - job_name: review-develop-33z241 static_configs: - targets: - gitlab-runner01:9101 relabel_configs: - source_labels: - job target_label: environment
  17. Demo 17 でも(時間があったら

  18. Environment Monitoring $CI_ENVIRONMENT_SLUG 18 Environment = $CI_ENVIRONMENT_SLUG

  19. 19 Thank you