---
title: GraylogをBOSHでデプロイ
tags: ["BOSH", "Graylog"]
categories: ["Dev", "Infrastructure", "LogManagement", "Graylog"]
date: 2017-08-07T03:21:38Z
updated: 2017-08-07T03:25:03Z
---

ログ管理の[Graylog](https://www.graylog.org/)のBOSH Releaseがあったので、試してみたメモです。


[https://github.com/AusDTO/graylog-boshrelease](https://github.com/AusDTO/graylog-boshrelease)

* Graylog
* MongoDB
* Elasticsearch (Master x 1, Data x 2)

を一発でデプロイできて便利です。


```
git clone git@github.com:AusDTO/graylog-boshrelease.git
cd graylog-boshrelease
```

BOSH 2.0対応のマニフェストファイルが用意されているので、基本的には


```
bosh deploy -n -d graylog manifests/graylog.yml
```

でデプロイできます。このままだとデフォルト設定が使用され、都合が悪いので、
マニフェストファイルをカスタマイズします。

BOSH CLI v2からは[Operator files]()という考え方が導入され、
ベースのマニフェストを書き換えなくてもパッチ用のYAMLを適用するだけでカスタマイズできるようになりました。

graylog-boshreleaseでは幾つかのカスタマイズポイントごとにすでにOperator filesが用意されているので、
それを`-o`で指定していくだけとなります。

ここでは

* `network.yml` ... graylogにstatic ipを割り当てるための設定
* `graylog-accounts.yml` ... ルートアカウントの設定
* `web-endpoint-uri.yml` ... RESTエンドポイントのURLの設定(`/api`まで設定する必要がある)

```
bosh deploy -n -d graylog manifests/graylog.yml \
    -o manifests/operators/network.yml \
    -o manifests/operators/graylog-accounts.yml \
    -o manifests/operators/web-endpoint-uri.yml \
    -v network-name=default \
    -v graylog-static-ip=10.244.0.240 \
    -v graylog-root-email=operations@example.com \
    -v graylog-root-username=administrator \
    -v graylog-root-password-sha2=60644240fe7ef9d4b17750b226a3ba88516cea9446439d275e922377f658fc4a \
    -v graylog-web-uri=https://graylog.example.com/api
```


sha2パスワードは`echo -n my-big-secret | shasum -a 256`で生成できます。

CredHubを使う場合は、

```
credhub set -n "/Bosh Lite Director/graylog/graylog-root-email" --type=value -v "operations@example.com"
credhub set -n "/Bosh Lite Director/graylog/graylog-root-username" --type=value -v "administrator"
credhub set -n "/Bosh Lite Director/graylog/graylog-root-password-sha2" --type=value -v "60644240fe7ef9d4b17750b226a3ba88516cea9446439d275e922377f658fc4a"
```

で設定し、

```
bosh deploy -n -d graylog manifests/graylog.yml \
    -o manifests/operators/network.yml \
    -o manifests/operators/graylog-accounts.yml \
    -o manifests/operators/web-endpoint-uri.yml \
    -v network-name=default \
    -v graylog-static-ip=10.244.0.240 \
    -v graylog-web-uri=https://graylog.example.com/api
```

でデプロイできます。


```
$ bosh vms -d graylog
Using environment '192.168.50.6' as client 'admin'

Task 131122. Done

Deployment 'graylog'

Instance                                                   Process State  AZ  IPs           VM CID                                VM Type  
elasticsearch-data/244afec8-3a5c-4e83-950a-28d1be187595    running        z1  10.244.0.10   304db4a0-50da-4230-5122-e9224c07f3cf  default  
elasticsearch-data/bbb21ffe-3cb9-43c3-b4ab-778aeb9a58f3    running        z1  10.244.0.9    caf7fd07-a0ff-49e0-6fb8-6b61d6b8e90c  default  
elasticsearch-master/0f2c212d-fbaf-448d-bfa8-b33102b41777  running        z1  10.244.0.8    e1e6aa3a-0fd2-451d-58ab-7042f240a6b0  default  
graylog/506d8334-dd3b-48d8-8429-4558cf088f4e               running        z1  10.244.0.240  c8b6ecef-073c-4156-6925-89562effd3ab  default  
mongodb/4182fb43-c8b4-422b-9356-7b82935713c6               running        z1  10.244.0.7    2710fa09-7333-430c-5545-bec0a8a0e21e  default  

5 vms

Succeeded
```

簡単です。

<img width="80%" src="https://user-images.githubusercontent.com/106908/29011041-cab6e9b6-7b6a-11e7-8c3a-091109b71f66.png">

<img width="80%" src="https://user-images.githubusercontent.com/106908/29011042-ccd6ce28-7b6a-11e7-9d16-cdddf326156f.png">


インストールできたけど、Graylogの使い方がわからない...
