CoreOS+docker-composeで作成したzabbixのアラートをRedmineに連携する②(redmine側の設定)

はじめに

zabbixで検知したアラートに対し、毎回zabbixへログインし確認すると面倒で管理が出来なくなることがあります。CoreOS + Docker-composeで作成した環境の場合、少しクセがあるのでそれも踏まえて、実装方法を考えてみました。(imapメールでの連携です)

参考サイト

前回の記事です。

http://のり散歩.net/?p=1336

手順

まず、Docker-composeで作成したRedmineにログインします。

#対象ディレクトリへ移動する
cd /home/core/redmine

vim docker-compose.yml



以前の記事で 7行目付近 build: . の行頭にコメントアウトしていた#を解除します。
これにより次に作成するDockerfileの内容がサービス起動時に動くようになります。

version: '2'
services:
redmine:
image: redmine
ports:
- 3000:3000
build: . # コメントアウトを解除
environment:
POSTGRES_PORT_5432_TCP: postgres
POSTGRES_ENV_POSTGRES_USER: redmine
POSTGRES_ENV_POSTGRES_PASSWORD: secret
POSTGRES_ENV_POSTGRES_DB: redmine
volumes:
- redmine_data:/usr/src/redmine/files
depends_on:
- postgres
links:
- "postgres:postgres"
networks:
- default
postgres:
image: postgres
environment:
POSTGRES_PASSWORD: secret
POSTGRES_USER: redmine
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
redmine_data:
driver: local
postgres_data:
driver: local
#Dockerfileの作成
vim Dockerfile

Dockerfileの内容は以下の通りです。
初期のコンテナでは使えないコマンドなどがあるので機能を追加します。

FROM redmine

RUN su - root
RUN apt-get update
RUN apt-get -y install vim
RUN apt-get -y install cron


次に、IMAPメールを取り込むシェルを作ります。
cronで動かすと環境変数を個別で設定する必要が出てきますが、面倒なので手動ログインユーザのenvの内容をほぼ突っ込んでます。

vim imapMailCheck.sh
#!/bin/bash
export POSTGRES_ENV_POSTGRES_USER=redmine
export POSTGRES_ENV_POSTGRES_PASSWORD=secret
export RUBYGEMS_VERSION=2.7.8
export BUNDLER_VERSION=1.17.1
export HOSTNAME=e20eda3fde56
export REDMINE_VERSION=3.4.6
export RUBY_VERSION=2.4.5
export GEM_HOME=/usr/local/bundle
export POSTGRES_PORT_5432_TCP=postgres
export PWD=/usr/src/redmine
export HOME=/home/redmine
export BUNDLE_PATH=/usr/local/bundle
export BUNDLE_APP_CONFIG=/usr/local/bundle
export RAILS_ENV=production
export TERM=xterm
export BUNDLE_SILENCE_ROOT_WARNING=1
export RUBY_MAJOR=2.4
export REDMINE_DOWNLOAD_MD5=5f4993446ecf25782f469763c0d32ea1
export SHLVL=1
export RUBY_DOWNLOAD_SHA256=2f0cdcce9989f63ef7c2939bdb17b1ef244c4f384d85b8531d60e73d8cc31eeb
export PATH=/usr/local/bundle/bin:/usr/local/bundle/gems/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

export POSTGRES_ENV_POSTGRES_DB=redmine
_=/usr/bin/env

/usr/local/bundle/bin/rake --trace -f /usr/src/redmine/Rakefile redmine:email:receive_imap RAILS_ENV="production" host=imap.gmail.com port=993 ssl=1 [email protected] password=xxxxxxxxx folder=REDMINE move_on_success=REDMINE_OK move_on_failure=REDMINE_NG unknown_user=accept project=itil


重要なのは下段のrakeコマンドです。
このコマンドを1分毎に実行し、アラートメールの内容を取り込みます。

◆そのほかのやること
・上記の [email protected] を入力する
・上記の password=xxxxxxxxx を入力する
・gmailで「REDMINE」というフォルダを作る(現在はラベルでしょうかね)
・gmailでREDMINEフォルダの配下に「REDMINE_OK」と「REDMINE_NG」フォルダを作る
・Redmineのプロジェクト設定で識別子itilを作る。または任意で設定しproject=itil を書換える

#サービス再立ち上げ
sudo docker-compose -p redmine down
sudo docker-compose -p redmine up -d


#作ったファイルをコンテナに送り込む
docker cp imapMailCheck.sh redmine_redmine_1:/usr/src/redmine/imapMailCheck.sh

#コンテナにログインする
docker exec -it redmine_redmine_1 /bin/bash

#送り込んだファイルがあるか確認する
ls /usr/src/redmine/imapMailCheck.sh

#aptをアップデートする。好きなパッケージを入れる
sudo docker exec redmine_redmine_1 apt-get update
sudo docker exec redmine_redmine_1 apt-get install -y curl vim cron nano


#cronの設定
crontab -e

cron の内容は以下の通りです。最下段に追加します。

* * * * * sh /usr/src/redmine/imapMailCheck.sh

保存後、ctrl+d でコンテナから抜けます。

動作確認

http://<coreosのIP:3000> でRedmineへアクセスします。


このように、チケットが登録されていれば成功です。

おわりに

zabbixのアラートがRedmineに飛べば、視認性も高くなり、対応担当者の割り振りなども楽になると思います。現在の設定ですと、復旧も個別にチケット起票されてしまうので、復旧は飛ばさないようにするなど、工夫が必要です。発生チケットの返信で入れられれば一番いいのですが、うまくいかないですね。

コメント

タイトルとURLをコピーしました