Недавно у меня появилась возможность попробовать руками С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"
Все хорошо, агент информацию отдает, мы ее видим.
Про остальные шаги допишу завтра.
Успехов.
Дописал завтра?
ReplyDeleteвот продолжение
ReplyDeletehttps://nyukers.blogspot.com/2018/04/docker-zabbix-jenkins.html
Zabbix 3 в 1 - это zabbix/zabbix-appliance. Но вот только как быть с persistent data? почему-то у меня данный запуск контейнера работает, если убрать разделы -v, где указаны volumes на хосте. А с ними не работает.
ReplyDeleteПробовал ли ты запустить Заббикс с хранением данных на хосте? Иначе после перезапуска все твои настройки исчезнут, и контейнер будет работать с исходными настройками, как с чистого листа...
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