GrafanaとPrometheusでJenkins監視

## やったこと
Mac OS環境でdocker-composeを使用してJenkins, Prometheus, Grafanaを起動しました。
Jenkins Pluginをインストールし、 Jenkinsのメトリクス監視を可視化しました。

## 稼働環境
- Mac OS Mojave
- Docker version 19.03.1
- docker-compose version 1.24.1

## docker-composeを使用した起動
Prometheusで、Jenkinsのメトリクス監視を追加します。

```prometheus.yml
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
  
  ### 追加 ##
  - job_name: ‘jenkins’
    metrics_path: /prometheus/
    static_configs:
    - targets: ['docker.for.mac.localhost:8080']
```

Jenkins, Prometheus, Grafanaを起動するためのymlファイルを作成します。

```docker-compose.yml
version: '3'
services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins
    restart: always
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - ./jenkins/jenkins_home:/var/jenkins_home
  prometheus:
    image: prom/prometheus:v2.11.1
    container_name: prometheus
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - 9090:9090
  grafana:
    image: grafana/grafana:6.2.5
    container_name: grafana
    ports:
      - 3000:3000
```
`docker-compose up -d --build`で起動します。

```sh

$ docker-compose up -d --build
Creating network "default" with the default driver
Creating prometheus ... done
Creating jenkins    ... done
Creating grafana    ... done
```

## Install Jenkins Plugin
[JenkinsのURL](http://localhost:8080)を開き、初期設定を行います。設定方法は省略します。
「Jenkinsの構成」 -> 「プラグインの管理」　で[プラグインマネージャー](http://localhost:8080/pluginManager/)を開きます。
検索欄で`prometheus`を入力し、[Prometheus metrics plugin](https://plugins.jenkins.io/prometheus)をインストールします。
インストール後は再起動してください。

## JenkinsとPrometheus連携
Jenkinsの再起動が完了ましたら、[PrometheusのURL](http://localhost:9090/graph)を開きます。
上部バーの「Status」 -> 「Targets」を開き、Jenkinsがupとなっていることが確認できます。
<img width="1344" alt="スクリーンショット 2019-08-04 1.26.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232123/533621c0-389e-9239-3905-af0f394df592.png">

PrometheusとGrafanaの連携は、調べれば出てきますので省略します。

## Grafanaでの可視化
[Grafana Labs]()で公開されているdashboardのtemplateをインポートします。
今回は[a Jenkins performance and health overview for jenkinsci/prometheus-plugin](https://grafana.com/grafana/dashboards/9524)をインポートします。
dashboardのIDを控えます。

[GrafanaのURL](http://localhost:3000)にアクセスし、「Home」 -> 「Import dashboard」を開きます。
控えたIDを入力し、インポートします。
表示されるようになりました。

<img width="1607" alt="スクリーンショット 2019-08-04 1.33.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232123/7bca8c4d-100a-fc4f-5b55-78c3f1856be7.png">



## 参考情報
https://medium.com/@eng.mohamed.m.saeed/monitoring-jenkins-with-grafana-and-prometheus-a7e037cbb376

### 備考
[prometheus公式サイト](https://prometheus.io/docs/instrumenting/exporters/)では、jenkinsが提供するexporterを使用したメトリクス監視も紹介されています。リポジトリは以下です。
https://github.com/lovoo/jenkins_exporter