GrafanaのダッシュボードをPDF化するGrafana reporterを使ってみた

## Grafana reporterとは？
GrafanaのダッシュボードをPDF化します。
そんなの必要ある？って私も思ってましたがGrafanaで自分で好きな範囲に変更してみたら良いのでは？と思ってましたが月一でレポート作れないの？って要望がありまして・・

そんなの無いだろうと思ったらありました！
せっかく使ってみたのでメモ代わりに記載します。

## 環境

||バージョン|
|:--|:--|
|CentOS| 7.5|
|Grafana|5.2.1|
|Zabbix|4.0.0 alpha9|

CentOS7上でGrafanaを入れています。今回はZabbixは関係ないですが、データはZabbixから引っ張ってきています。

## 完成のイメージ
Grafanaのダッシュボードの右上にPDF作成のリンクを作成して、クリックするだけでPDFを作成します。
以下の例では「Report」という名前のリンクを作っています。
![grafana-report11.png](https://qiita-image-store.s3.amazonaws.com/0/101744/f73e276a-9090-b20e-3140-8f2b0b710691.png)



## LaTeX関連のパッケージインストール
早速進めていきましょう！CentOS7にログインしてパッケージを追加していきます。
LaTeXは全然詳しくないので、偉そうなことは言えませんが有名な文書処理システムのやつです。
関連パッケージを入れます。

```
# yum install texlive-pdftex texlive-latex-bin texlive-texconfig* texlive-latex* texlive-metafont* texlive-cmap* texlive-ec texlive-fncychap* texlive-pdftex-def texlive-fancyhdr* texlive-titlesec* texlive-multirow texlive-framed* texlive-wrapfig* texlive-parskip* texlive-caption texlive-ifluatex* texlive-collection-fontsrecommended texlive-collection-latexrecommended texinfo-tex
```

## Go関連のパッケージをインストール
Grafana reporterはGoで動作するようなのでGo関連のパッケージをインストールします。

```
# wget https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz
# tar -C /usr/local -xzf go1.10.2.linux-amd64.tar.gz
# export PATH=$PATH:/usr/local/go/bin
```

## Grafana reporterインストール
いよいよGrafana reporterをインストール！

```
# go get github.com/IzakMarais/reporter/...
# go install -v github.com/IzakMarais/reporter/cmd/grafana-reporter
```
 
## Grafana reporterをsystemdに登録
まずファイルの場所を移動します。
なんとなく/usr/local/binにしてますが、お好きな場所に格納してください。

```
cd /usr/local/bin
mv /root/go ./
```

次にGrafana reporterをsystemdに登録しましょう。
viエディタなどで以下のように記載して保存します。

```
# vi /etc/systemd/system/grafana-reporter.service

[Unit]
Description = Grafana reporter daemon
[Service]
ExecStart = /usr/local/bin/go/bin/grafana-reporter
Restart = always
Type = simple
[Install]
WantedBy=multi-user.target
```

## Grafana reporter起動
登録したら次に起動しましょう。
ついでに自動起動と起動したことを確認します。

```
# systemctl start grafana-reporter
# systemctl enable grafana-reporter
# systemctl status grafana-reporter
```

## APIキー作成
次にGrafana上でAPIキーを作成します。
Grafanaの左側のメニューから「Configuration」→「API Keys」を選択します

![grafana-report1.png](https://qiita-image-store.s3.amazonaws.com/0/101744/7f644d17-cb18-c8ad-e268-c6f78776e0b5.png)

次に任意のAPIキーの名前を入力して「add」をクリックします。
![grafana-report5.png](https://qiita-image-store.s3.amazonaws.com/0/101744/3fa2402f-4cd8-4ea4-9c3f-84e8e81a8d32.png)


作成したAPIキーをメモしましょう。
一部隠していますが、以下のように表示されます。
![grafana-report3.png](https://qiita-image-store.s3.amazonaws.com/0/101744/154138d8-06bd-118b-525f-1a1f13251c55.png)

## reportボタン作成
次にGrafanaのダッシュボードにボタンを作成します。
ボタンを設置したいダッシュボードを開いて上部の「Setting」をクリックします。
![grafana-report6.png](https://qiita-image-store.s3.amazonaws.com/0/101744/2b2431c2-95f2-4582-ad47-9e2528073bfd.png)

次に左側メニューから「Links」を選択し「Add Dashboard Link」をクリック
![grafana-report7.png](https://qiita-image-store.s3.amazonaws.com/0/101744/bf00482e-4baa-97d6-88bd-e89b288d02fd.png)

各種情報を入力して「Add」をクリックします。
![grafana-report8.png](https://qiita-image-store.s3.amazonaws.com/0/101744/c17f0d32-cc4f-8ae0-341b-da6cb216e6e2.png)

入力情報の詳細

|項目|入力値|
|:--|:--|
|Type|link|
|Url|http://<サーバIPアドレス>:8686/api/v5/report/\<dashboardUID\>?apitoken=\<APIキー\>&from=now-24h&to=now|
|Title|Report|
|Tooltip|空欄|
|Icon|doc|

Includeの項目はすべてチェックを入れてください。

ややこしいのはUrlだと思いますがサーバIPアドレスはGrafana reporterをインストールしたIPアドレスです。
dashboardUID？と思うかもしれませんがUIDはダッシュボードを開いたときに表示されています。
以下の画像の赤枠の部分がUIDです。
![grafana-report9.png](https://qiita-image-store.s3.amazonaws.com/0/101744/2745f32f-3d09-d548-3e5a-3fd849b5ed99.png)

APIキーは先ほど作ったものを張り付けてください。
from=now-24h&to=nowは作成するPDFの期間です。24時間以外の書式がわからん！と思われるかもしれませんが、それも以下の画像のように調べられますので、お好みの期間を設定してください。
![grafana-report10.png](https://qiita-image-store.s3.amazonaws.com/0/101744/5f567241-e35c-9260-523c-8a76847cd9ab.png)

サーバアドレスが**192.168.0.10**
dashboardUIDが**aaaa**
apitokenが**bbbb**
とするとUrlに入力する値は以下になります

**http://192.168.0.10:8686/api/v5/report/aaaa?apitoken=bbbb&from=now-24h&to=now**

といわけで無事に完成です。
右上のリンクを「ポチっと」するとPDFができあがります。
![grafana-report11.png](https://qiita-image-store.s3.amazonaws.com/0/101744/f73e276a-9090-b20e-3140-8f2b0b710691.png)

##参考ページ
http://www.bujarra.com/generando-informes-con-grafana-y-programar-su-envio/?lang=ja
https://github.com/IzakMarais/reporter