Docker (linux)
Установка docker
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh
OpenVPN
Создаем папку для конфигурации и генерируем ее, вместо SERVERADDR
нужно подставить IP-адрес сервера (порт 11194 защита от дурака)
export configdir=/etc/openvpn
mkdir $configdir
docker run -v $configdir:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://SERVERADDR:11194 -e "duplicate-cn"
создаем корневые сертификаты. Попросит придумать пароль - водим любой пароль (минимум 5 символов) и любое CommonName - это имя сервера
docker run -v $configdir:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
запускаем openvpn сервер
docker run -v $configdir:/etc/openvpn -d --name openvpn --restart=always -p 11194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn
создаем пользователя. Потребуется пароль, который придумали выше (CLIENTNAME нужно заменить на имя юзера)
docker run -v $configdir:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass
для скачивания файла конфигурации из контейнера на хост машину (CLIENTNAME нужно заменить на имя юзера) - файл появится в папке root
docker run -v $configdir:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn
проверяем список запущенных контейнеров
docker ps -a
для мониторинга клиентов онлайн необходимо внести изменения в файл /etc/openvpn/server.conf, закомментировать status /tmp/openvpn-status.log и добавить строчку status openvpn-status.log, после чего перезапустить openvpn и проверить клиентов командой
cat /etc/openvpn/openvpn-status.log
примечание:
ip адреса клиентов относятся к подсети 192.168.255.0
Portainer
Это инструмент управления контейнерами доступный через WebUI
проверяем версии docker и docker compose, версия последнего нам нужна будет далее
docker -v`
docker compose version
создаем рабочий каталог
cd /opt`
sudo mkdir twportainer`
cd ./twportainer
создаем файл конфигурации
sudo nano docker-compose.yml
вставляем содержимое (у меня ругался на версию, но на работу не влияет)
version: "X"
services:
twportainer:
image: portainer/portainer-ce:latest
container_name: twportainer
environment:
- TZ=Europe/Moscow
volumes:
/var/run/docker.sock:/var/run/docker.sock
/opt/twportainer/portainer_data:/data
ports:
- "8000:8000"
- "9443:9443"
- "9000:9000"
restart: always
запускаем twportainer
docker compose up -d
доступ к WebUI через
После каждого нового добавления контейнера - раздать статические ip контейнерам через portainer
Postgres и Zabbix
загружаем образ postgres
docker pull postgres
загружаем образ zabbix
docker pull zabbix/zabbix-server-pgsql
создаем сеть
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
запускаем контейнера PostgreSQL (POSTGRES_PASSWORD=любой свой пароль)
docker run --name postgres-server -t -e POSTGRES_USER="zabbix" -e POSTGRES_PASSWORD="12345678" -e POSTGRES_DB="zabbix"
--network=zabbix-net --restart unless-stopped -d postgres:latest
запускаем образец snmp Zabbix
docker run --name zabbix-snmptraps -t -v /zbx_instance/snmptraps:/var/lib/zabbix/snmptraps:rw -v /var/lib/zabbix/mibs:/usr/share/snmp/mibs:ro --network=zabbix-net -p 162:1162/udp --restart unless-stopped -d zabbix/zabbix-snmptraps:alpine-7.2-latest
запускаем Zabbix сервер
docker run --name zabbix-server-pgsql -t -e DB_SERVER_HOST="postgres-server" -e POSTGRES_USER="zabbix" -e POSTGRES_PASSWORD="12345678" -e POSTGRES_DB="zabbix" -e ZBX_ENABLE_SNMP_TRAPS="true" --network=zabbix-net -p 10050:10050 --volumes-from zabbix-snmptraps --restart unless-stopped -d zabbix/zabbix-server-pgsql:6.0-alpine-latest
запускаем Zabbix WebUI
docker run --name zabbix-web-nginx-pgsql -t -e ZBX_SERVER_HOST="zabbix-server-pgsql" -e DB_SERVER_HOST="postgres-server" -e POSTGRES_USER="zabbix" -e POSTGRES_PASSWORD="12345678" -e POSTGRES_DB="zabbix" --network=zabbix-net -p 443:8443 -p 80:8080 -v /etc/ssl/nginx:/etc/ssl/nginx:ro --restart unless-stopped -d zabbix/zabbix-web-nginx-pgsql:6.0-alpine-latest
доступ к WebUI через
загружаем образ zabbix-agent
docker pull zabbix/zabbix-agent2
запускаем Zabbix-agent (вместо NAMEZ - имя сервера для мониторинга, вместо 172.20.240.3 - ip zabbix сервера, volume и user необходимы для получения данных о контейнерах docker)
docker run --name some-zabbix-agent -e ZBX_HOSTNAME="NAMEZ" -e ZBX_SERVER_HOST="172.20.240.3" -e ZBX_PASSIVE_ALLOW="true" -e ZBX_ACTIVE_ALLOW="false" -e ZBX_TIMEOUT="3" --network=zabbix-net --user=0:0 --volume="/var/run/docker.sock:/var/run/docker.sock" --privileged --restart unless-stopped --init -d zabbix/zabbix-agent2:latest
в веб интерфейсе zabbix прописываем все по стандарту адрес агента и добавляем что хотим мониторить. Из того что смог подцепить шаблонами
- Zabbix server health
- Zabbix agent
- Linux filesystems by Zabbix agent
- Linux memory by Zabbix agent
- Linux block devices by Zabbix agent
- Linux network interfaces by Zabbix agent
- Linux generic by Zabbix agent
- Docker by Zabbix agent 2
- Systemd by Zabbix agent 2
если необходим доступ к мониторингу postgres - создаем еще одно клиента для postgres
docker run --name some-zabbix-agentPG -e ZBX_HOSTNAME="NAMEPG" -e ZBX_SERVER_HOST="172.20.240.3" -e ZBX_PASSIVE_ALLOW="true" -e ZBX_ACTIVE_ALLOW="false" -e ZBX_TIMEOUT="3" -e PGROLE="zabbix" -e PGPASS="12345678" -e PGHOST="172.20.240.1" -e PGPORT="5432" -e PGDATABASE="zabbix" --network=zabbix-net --privileged --restart unless-stopped --init -d zabbix/zabbix-agent2:latest
в веб интерфейсе zabbix прописываем все по стандарту адрес агента и добавляем шаблон PostgreSQL by Zabbix agent 2 и в его маркерах меняем 4 параметра
- {$PG.CONNSTRING.AGENT2} tcp://172.20.240.1:5432
- {$PG.DATABASE} zabbix
- {$PG.PASSWORD} 12345678
- {$PG.USER} zabbix
Подключение агента с удаленных машин?
Мониторинг клиентов OpenVPN и их траффика через и будет ли это работать через docker?
Grafana?