Grafana в docker… пора потратить 5 минут
В продолжение предыдущей статьи с установкой prometheus в docker, я решил добавить еще пару статей, чтобы привести все это к готовому рабочему виду. Сегодня вслед за prometheus‘ом в «плаванье» отправляется grafana.
Сама по себе grafana воспринимается мной как весьма удобное, легковесное решение визуализации данных собственно с этой позиции я ее и использую.
Без лишних слов давайте сразу перейдем к делу и подготовим Dockerfile.
Выберем базовый образ на котором будем собирать наш сервис:
FROM ubuntu:16.04
Добавим переменную окружения для хранения версии:
ENV version 4.6.2
Скачаем и сохраним по указанному пути архив с grafana (обратите внимание, что здесь в ссылке, аналогично примеру с prometheus, используется переменная в которой содержится значение версии ($version)):
ADD https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-$version.linux-x64.tar.gz /grafana/
Сменим текущую директорию:
WORKDIR /grafana
Сменим текущую директорию:
WORKDIR /grafana/grafana-$version
Распакуем архив с grafana и удалим все лишнее (аналогично ссылке применяем переменную, чтобы в случае необходимости поменять номер версии исправлением одной строки):
RUN tar -zxvf grafana-$version.linux-x64.tar.gz -C ./ && \ rm grafana-$version.linux-x64.tar.gz && \ ln -s /grafana/grafana-$version/bin/grafana-server /usr/bin/
Скопируем папку с конфигурационными файлами (забираем из архива и кладем в директорию с Dockerfile’ом):
COPY conf .
Установим по умолчанию запускать в контейнере grafana:
CMD ["/usr/bin/grafana-server"]
Соберем из Dockerfile docker-образ:
docker build -t grafana .
Сделаем service-скрипт для systemd (делаем это для удобства повседневного использования данного контейнера):
[Unit] Description=grafana in Docker After=docker.service Requires=docker.service [Service] TimeoutStartSec=0 ExecStartPre=-/usr/bin/docker kill grafana ExecStartPre=-/usr/bin/docker rm grafana ExecStart=/usr/bin/docker run --net=host --name=grafana -v /mnt/data/Docker/Dockerfiles/grafana/data:/grafana/grafana-4.4.2/data grafana:latest ExecStop=/usr/bin/docker stop grafana [Install] WantedBy=multi-user.target Alias=grafana.service
Здесь так же как и в prometheus’e я выношу каталог data на хостовую систему, чтобы не потерять информацию при перезапуске контейнера.
Надеюсь данная статья будет кому-нибудь полезна, все ваши предложения и замечания пишите в коментариях.