EC2(ubuntu 16.04) + Zabbix + Grafanaでかっこいいダッシュボードを作る

# 背景
EC2(ubuntu)上でZabbixを起動してサーバ監視を行っていたが、Zabbixのダッシュボードの見た目がダサかったので、かっこいいダッシュボードを作りたかった
GrafanaにはZabbixと連携することが(プラグイン)で可能なため、採用した

# 前提
* EC2(ubuntu)にてZabbixサーバが起動している(Zabbixのインストールは[こちら](https://www.zabbix.com/documentation/3.4/manual/installation/install_from_packages/debian_ubuntu)を参考)
* ZabbixではWeb監視、ElasticBeansTalkを使ったリソース監視、CoudeWatchでのログ監視、RDSのリソース監視、Zabbixサーバ自体の監視を行っている

# 手順
## Grafanaのインストール
Grafanaの公式を参考にした
以下のコマンドを実行してインストールを行う
(Grafanaのバージョンは適宜変更が必要)

```sh
sudo wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.1.4_amd64.deb
sudo apt-get install -y adduser libfontconfig
sudo dpkg -i grafana_5.1.4_amd64.deb
```

Grafanaを起動

```sh
sudo service grafana-server start
```

## Zabbix plugin for Grafanaをインストール
以下のコマンドを実行してインストール

```sh
sudo grafana-cli plugins install alexanderzobnin-zabbix-app
```

## apacheにリバースプロキシを設定
Grafanaが3000番ポート、EC2への接続は80番ポートとなっているため、リバースプロキシの設定が必要となる

proxyモジュールを有効にする

```sh
sudo a2enmod proxy
sudo a2enmod proxy_http
```

リバースプロキシの設定ファイルを作成する

```shell
sudo vim /etc/apache2/conf-available/node.conf
```

```sh:node.conf
# リバースプロキシとしての用途だけなのでProxyRequestsはOff
ProxyRequests Off

# Zabbixへの接続パスをプロキシ設定から除外する
ProxyPass /zabbix !

# localhostの3000番ポートにリクエストを投げる
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
```

configファイルの設定を有効にする
(**conf-enabled**フォルダにシンボリックリンクを作成することで設定が読み込まれる)

```sh
cd /etc/apache2/conf-enabled/
sudo ln -s ../conf-available/node.conf node.conf
```

apacheを再起動する

```sh
sudo service apache2 restart
```

## ZabbixにGrafana連携用のユーザを作成する
Grafana → Zabbixの連携で使用するユーザを新規作成する
Zabbixの画面にて『管理』　→　『ユーザー』　→　『ユーザーの作成』と選択する

* ユーザ名とパスワードは任意の値を設定
* 権限は「すべてのグループに対して、読み取り可能」

|![grafana_user_1.png](https://qiita-image-store.s3.amazonaws.com/0/198158/380468cc-ca13-a7f0-f278-d7dbb1a88766.png)|
|:-:|

|![grafana_user_2.png](https://qiita-image-store.s3.amazonaws.com/0/198158/657136be-ce6e-3b60-5ca9-b2dc4212e1b6.png)|
|:-:|

## GrafanaとZabbixを連携させる
### Grafanaにログインする
初期設定はID:admin、PW：adminとなっている（※要変更）

|![grafana_login.png](https://qiita-image-store.s3.amazonaws.com/0/198158/b0430436-e9ce-7cc0-93f1-52824384bf05.png)|
|:-:|

### Zabbixプラグインを有効にする
「Enable now」をクリックする

|![grafana_home_dashboard.png](https://qiita-image-store.s3.amazonaws.com/0/198158/1ceaf61a-4323-91d3-7a2f-69b57a197582.png)|
|:-:|

「Enable」をクリックする

|![grafana_plugin_enable.png](https://qiita-image-store.s3.amazonaws.com/0/198158/48871513-8280-2931-07d6-f0f73d5c3f8b.png)|
|:-:|

### Data Sourceを追加する
左端のメニューから「Configuration　→ Data Sources」を選択する

|![grafana_select_datasources.png](https://qiita-image-store.s3.amazonaws.com/0/198158/d6f2fde9-22f0-6cc6-f94a-9650ef5dd16a.png)|
|:-:|

「Add data source」をクリックする

|![grafana_add_datasource_button.png](https://qiita-image-store.s3.amazonaws.com/0/198158/d8379e35-d77e-b447-0e05-895772453d4e.png)|
|:-:|

以下の情報を入力し、「Save & Test」ボタンを押下する

* Name：grafana(任意)
* Type：zabbix
* HTTP
    * URL:`http://{ZabbixサーバのURL or ホスト名}/zabbix/api_jsonrpc.php`
    * Access:Server(Default)
* Zabbix API details
    * Username:grafana(Zabbixにて作成したユーザ)
    * Password:*******(Zabbixにて作成したパスワード)
    * Trends:True(チェックあり)

|![grafana_datasources.png](https://qiita-image-store.s3.amazonaws.com/0/198158/17de50ad-cfb8-5742-747f-378258d9f707.png)|
|:-:|

テストが成功すればData Sourceの登録は完了する

### ダッシュボードの作成
メニュー右端の「Create → Dashborad」からダッシュボードを好きなように作成する
こんな感じのダッシュボードが出来上がる

|![grafana_show_dashboard.png](https://qiita-image-store.s3.amazonaws.com/0/198158/250c04ef-72df-bbed-5997-bb28c6e70f38.png)|
|:-:|

# 最後に
Zabbixの画面と比べてかなりかっこいいデザインになった！
ZabbixとGrafanaを同じEC2インスタンス上で起動させる時のリバースプロキシの設定でハマってしまった
Zabbixへの接続パスをプロキシ設定から除外しないとGrafanaの表示が狂う、Zabbixにログインできない。という状態になってしまった
Grafanaのインストール、Zabbixとの連携はかなりスムーズに行えたので、Grafana + Zabbixのハードルは低いと考えて良さそう
Zabbixのインストール + Grafana連携というのをこれからのデフォルトにしていいと思う