Главная

Friday, 30 March 2018

Тестовый полигон Docker с Zabbix и Jenkins.

Всем привет. 

Недавно у меня появилась возможность попробовать руками СI/CD. Мне поручили развернуть полигон Docker+Zabbix+Jenkins. Это было мое тестовое задание.

Вкратце оно звучало так:
1. Развернуть машину на Centos 7.
1.1 Установить базовый софт и обновления.
1.2 Настроить доступ ssh по публичным ключам
2. Установить и настроить запуск docker
3. Поднять докер контейнер с zabbix внутри
4. Настроить zabbix на мониторинг localhost
5. Поднять контейнер с jenkins внутри
6. После настройки jenkins создать job который при запуске будет ротировать логи localhost
7. Настроить sftp доступ к логам zabbix (readonly)

По правде говоря для меня все было в новинку, кроме первого пункта. Далее я покажу мои шаги с возможными проблемами и попытками их решения. Скажу сразу что как для полного новичка в СI/CD у меня не все получалось. И скорее всего другие кандидаты его выполнили быстрее.

Старт.

1. Развернуть на виртуальном хосте Centos 7.
Тут элементарно. Можно использовать VirtualBox. Однако помните что 7-я Centos любит 64-х разрядную ОС и аппаратную поддержку виртуализации VT-x или AMD-V. Если ваш ЦП не поддерживает инструкции VT-x или AMD-V, то VirtualBox не предложит вам эмуляцию 64-х разрядной ОС.

1.1 Установить базовый софт и обновления.
Под базовым софтом подразумевается установка утилит
mc, nano, htop, ncdu    Ok
yum install bind-utils  Ok

1.2 Настроить доступ ssh по публичным ключам
На эту тему у меня получился пост ранее, читаем здесь.

2. Установить и настроить docker
docker search zabbix
docker pull zabbix

3. Поднять докер контейнер с zabbix внутри.
Для этого мне понадобилось поднять целых три контейнера: 
zabbiz-server + zabbix-web + mysql-server.
Инструктор говорил что есть докер-образы 3 в 1.

3.1 Поднимаем Мysql-server
docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix" \
      -e MYSQL_ROOT_PASSWORD="root" \
      -d mysql:5.7

Проверим что MySQL поднялся
docker logs mysql-server
В конце должно быть
>Starting MySQL или Ready for connections.

3.2 Поднимаем zabbix-server
docker run --name zabbix-server -t -p 10051:10051 \
-e DB_SERVER_HOST="172.17.0.2" -e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="root" \
--link mysql-server:mysql \
-d zabbix/zabbix-server-mysql:latest

Проверяем логи:
>docker logs zabbix-server

Проверка доступности MySQL из контейнера Zabbix-server
>docker exec -it zabbix-server bash
bash> mysql -u zabbix -p zabbix -h 172.17.0.2
bash> mysqladmin ping -u zabbix -p zabbix -h 172.17.0.2

Использование параметра --link не обязательно.

3.3 Поднимаем zabbix-web (frontend zabbix)
docker run --name zabbix-web -t -p 80:80 \
-e DB_SERVER_HOST="172.17.0.2" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e ZBX_SERVER_HOST="172.17.0.3" \
-e ZBX_SERVER_NAME="MyZabbix" \
-e PHP_TZ="Europe/Riga" \
-d zabbix/zabbix-web-apache-mysql:latest

Проверяем логи:
docker logs zabbix-web

Первый вход в frontend zabbix:
http://IP_адрес_хоста
admin/zabbix

4. Настроить zabbix на мониторинг localhost

Для мониторинга самого хоста, его ЦП и памяти ставим zabbix-agent на Centos:
rpm -Uvh https://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
yum update
yum install zabbix-agent

Говорим zabbix-агенту где его сервер:
nano /etc/zabbix/zabbix_agentd.conf
Server=172.17.0.3
ServerActive=172.17.0.3
Hostname=Zabbix server iGov

Запускаем агент и добавляем его запуск в автозагрузку хоста:
systemctl start zabbix-agent
systemctl enable zabbix-agent

Проверка лога:
cat /var/log/zabbix/zabbix_agentd.log
и портов на прослушивание:
netstat -napl | grep zabbix

На самом Zabbix-сервере в панели Configuration/Hosts:
Interface agent has adr 172.31.1.100, "ZBX" green color, and Name as "Zabbix server iGov"
Все хорошо, агент информацию отдает, мы  ее видим.


Про остальные шаги допишу завтра.

Успехов.

4 comments:

  1. вот продолжение
    https://nyukers.blogspot.com/2018/04/docker-zabbix-jenkins.html

    ReplyDelete
  2. Zabbix 3 в 1 - это zabbix/zabbix-appliance. Но вот только как быть с persistent data? почему-то у меня данный запуск контейнера работает, если убрать разделы -v, где указаны volumes на хосте. А с ними не работает.
    Пробовал ли ты запустить Заббикс с хранением данных на хосте? Иначе после перезапуска все твои настройки исчезнут, и контейнер будет работать с исходными настройками, как с чистого листа...

    sudo docker run --name zabbix -t \
    -p 15051:10051 \
    -p 15080:80 \
    -v /data/persistent-storage/zabbix/configs:/etc/zabbix \
    -v /data/persistent-storage/zabbix/logs:/var/log/zabbix \
    -v /data/persistent-storage/zabbix/frontend:/usr/share/zabbix \
    -v /data/persistent-storage/zabbix/home:/var/lib \
    --restart=always \
    -d zabbix/zabbix-appliance

    ReplyDelete
  3. Не пробовал, не успел).

    ReplyDelete

А что вы думаете по этому поводу?