diff --git a/zabbix/docker-compose.yaml b/zabbix/docker-compose.yaml new file mode 100644 index 0000000..bce60b0 --- /dev/null +++ b/zabbix/docker-compose.yaml @@ -0,0 +1,503 @@ +version: '3.5' +services: + zabbix-server: + image: zabbix/zabbix-server-mysql:ubuntu-6.4-latest + ports: + - "10051:10051" + volumes: + - /etc/localtime:/etc/localtime:ro +# - dbsocket:/var/run/mysqld/ + - /share/docker_data/zabbix/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro + - /share/docker_data/zabbix/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - /share/docker_data/zabbix/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro + - /share/docker_data/zabbix/var/lib/zabbix/export:/var/lib/zabbix/export:rw + - /share/docker_data/zabbix/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro + - /share/docker_data/zabbix/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro + - /share/docker_data/zabbix/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro + - /share/docker_data/zabbix/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro + - /share/docker_data/zabbix/snmptraps:/var/lib/zabbix/snmptraps:rw + ulimits: + nproc: 65535 + nofile: + soft: 20000 + hard: 40000 + deploy: + resources: + limits: + cpus: '0.70' + memory: 1G + reservations: + cpus: '0.5' + memory: 512M + env_file: + - /data/zabbix/.env_db_mysql + - /data/zabbix/.env_srv + secrets: + - MYSQL_USER + - MYSQL_PASSWORD + - MYSQL_ROOT_USER + - MYSQL_ROOT_PASSWORD +# - client-key.pem +# - client-cert.pem +# - root-ca.pem + depends_on: + - mysql-server + networks: + zbx_net_backend: + aliases: + - zabbix-server + - zabbix-server-mysql + - zabbix-server-ubuntu-mysql + - zabbix-server-mysql-ubuntu + zbx_net_frontend: +# devices: +# - "/dev/ttyUSB0:/dev/ttyUSB0" + stop_grace_period: 30s + sysctls: + - net.ipv4.ip_local_port_range=1024 65000 + - net.ipv4.conf.all.accept_redirects=0 + - net.ipv4.conf.all.secure_redirects=0 + - net.ipv4.conf.all.send_redirects=0 + labels: + com.zabbix.description: "Zabbix server with MySQL database support" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "zabbix-server" + com.zabbix.dbtype: "mysql" + com.zabbix.os: "ubuntu" + + zabbix-proxy-sqlite3: + image: zabbix/zabbix-proxy-sqlite3:ubuntu-6.4-latest + profiles: + - all + ports: + - "10061:10051" + volumes: + - /etc/localtime:/etc/localtime:ro + - /share/docker_data/zabbix/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - /share/docker_data/zabbix/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro + - /share/docker_data/zabbix/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro + - /share/docker_data/zabbix/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro + - /share/docker_data/zabbix/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro + - /share/docker_data/zabbix/snmptraps:/var/lib/zabbix/snmptraps:rw + ulimits: + nproc: 65535 + nofile: + soft: 20000 + hard: 40000 + deploy: + resources: + limits: + cpus: '0.70' + memory: 512M + reservations: + cpus: '0.3' + memory: 256M + env_file: + - /data/zabbix/.env_prx + - /data/zabbix/.env_prx_sqlite3 + depends_on: + - zabbix-java-gateway + - zabbix-snmptraps + networks: + zbx_net_backend: + aliases: + - zabbix-proxy-sqlite3 + - zabbix-proxy-ubuntu-sqlite3 + - zabbix-proxy-sqlite3-ubuntu + zbx_net_frontend: + stop_grace_period: 30s + labels: + com.zabbix.description: "Zabbix proxy with SQLite3 database support" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "zabbix-proxy" + com.zabbix.dbtype: "sqlite3" + com.zabbix.os: "ubuntu" + + zabbix-proxy-mysql: + image: zabbix/zabbix-proxy-mysql:ubuntu-6.4-latest + profiles: + - all + ports: + - "10071:10051" + volumes: + - /etc/localtime:/etc/localtime:ro +# - dbsocket:/var/run/mysqld/ + - /share/docker_data/zabbix/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro + - /share/docker_data/zabbix/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro + - /share/docker_data/zabbix/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro + - /share/docker_data/zabbix/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro + - /share/docker_data/zabbix/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro + - /share/docker_data/zabbix/snmptraps:/var/lib/zabbix/snmptraps:rw + ulimits: + nproc: 65535 + nofile: + soft: 20000 + hard: 40000 + deploy: + resources: + limits: + cpus: '0.70' + memory: 512M + reservations: + cpus: '0.3' + memory: 256M + env_file: + - /data/zabbix/.env_db_mysql_proxy + - /data/zabbix/.env_prx + - /data/zabbix/.env_prx_mysql + depends_on: + - mysql-server + secrets: + - MYSQL_USER + - MYSQL_PASSWORD + - MYSQL_ROOT_USER + - MYSQL_ROOT_PASSWORD +# - client-key.pem +# - client-cert.pem +# - root-ca.pem + networks: + zbx_net_backend: + aliases: + - zabbix-proxy-mysql + - zabbix-proxy-ubuntu-mysql + - zabbix-proxy-mysql-ubuntu + zbx_net_frontend: + stop_grace_period: 30s + labels: + com.zabbix.description: "Zabbix proxy with MySQL database support" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "zabbix-proxy" + com.zabbix.dbtype: "mysql" + com.zabbix.os: "ubuntu" + + zabbix-web-apache-mysql: + image: zabbix/zabbix-web-apache-mysql:ubuntu-6.4-latest + profiles: + - all + ports: + - "8081:8080" + - "8443:8443" + volumes: + - /etc/localtime:/etc/localtime:ro +# - dbsocket:/var/run/mysqld/ + - /share/docker_data/zabbix/etc/ssl/apache2:/etc/ssl/apache2:ro + - /share/docker_data/zabbix/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro + deploy: + resources: + limits: + cpus: '0.70' + memory: 512M + reservations: + cpus: '0.5' + memory: 256M + env_file: + - /data/zabbix/.env_db_mysql + - /data/zabbix/.env_web + secrets: + - MYSQL_USER + - MYSQL_PASSWORD +# - client-key.pem +# - client-cert.pem +# - root-ca.pem + depends_on: + - mysql-server + - zabbix-server + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 30s + networks: + zbx_net_backend: + aliases: + - zabbix-web-apache-mysql + - zabbix-web-apache-ubuntu-mysql + - zabbix-web-apache-mysql-ubuntu + zbx_net_frontend: + stop_grace_period: 10s + sysctls: + - net.core.somaxconn=65535 + labels: + com.zabbix.description: "Zabbix frontend on Apache web-server with MySQL database support" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "zabbix-frontend" + com.zabbix.webserver: "apache2" + com.zabbix.dbtype: "mysql" + com.zabbix.os: "ubuntu" + + zabbix-web-nginx-mysql: + image: zabbix/zabbix-web-nginx-mysql:ubuntu-6.4-latest + ports: + - "80:8080" + - "443:8443" + volumes: + - /etc/localtime:/etc/localtime:ro +# - dbsocket:/var/run/mysqld/ + - /share/docker_data/zabbix/etc/ssl/nginx:/etc/ssl/nginx:ro + - /share/docker_data/zabbix/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro + deploy: + resources: + limits: + cpus: '0.70' + memory: 512M + reservations: + cpus: '0.5' + memory: 256M + env_file: + - /data/zabbix/.env_db_mysql + - /data/zabbix/.env_web + secrets: + - MYSQL_USER + - MYSQL_PASSWORD +# - client-key.pem +# - client-cert.pem +# - root-ca.pem + depends_on: + - mysql-server + - zabbix-server + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/ping"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 30s + networks: + zbx_net_backend: + aliases: + - zabbix-web-nginx-mysql + - zabbix-web-nginx-ubuntu-mysql + - zabbix-web-nginx-mysql-ubuntu + zbx_net_frontend: + stop_grace_period: 10s + sysctls: + - net.core.somaxconn=65535 + labels: + com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "zabbix-frontend" + com.zabbix.webserver: "nginx" + com.zabbix.dbtype: "mysql" + com.zabbix.os: "ubuntu" + + zabbix-agent: + image: zabbix/zabbix-agent:ubuntu-6.4-latest + profiles: + - full + - all + ports: + - "10050:10050" + volumes: + - /etc/localtime:/etc/localtime:ro + - /share/docker_data/zabbix/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro + - /share/docker_data/zabbix/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro + - /share/docker_data/zabbix/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro + - /share/docker_data/zabbix/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro + deploy: + resources: + limits: + cpus: '0.2' + memory: 128M + reservations: + cpus: '0.1' + memory: 64M + mode: global + env_file: + - /data/zabbix/.env_agent + privileged: true + pid: "host" + networks: + zbx_net_backend: + aliases: + - zabbix-agent + - zabbix-agent-passive + - zabbix-agent-ubuntu + stop_grace_period: 5s + labels: + com.zabbix.description: "Zabbix agent" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "zabbix-agentd" + com.zabbix.os: "ubuntu" + + zabbix-java-gateway: + image: zabbix/zabbix-java-gateway:ubuntu-6.4-latest + profiles: + - full + - all + ports: + - "10052:10052" + deploy: + resources: + limits: + cpus: '0.5' + memory: 512M + reservations: + cpus: '0.25' + memory: 256M + env_file: + - /data/zabbix/.env_java + networks: + zbx_net_backend: + aliases: + - zabbix-java-gateway + - zabbix-java-gateway-ubuntu + stop_grace_period: 5s + labels: + com.zabbix.description: "Zabbix Java Gateway" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "java-gateway" + com.zabbix.os: "ubuntu" + + zabbix-snmptraps: + image: zabbix/zabbix-snmptraps:ubuntu-6.4-latest + profiles: + - full + - all + ports: + - "162:1162/udp" + volumes: + - /share/docker_data/zabbix/snmptraps:/var/lib/zabbix/snmptraps:rw + deploy: + resources: + limits: + cpus: '0.5' + memory: 256M + reservations: + cpus: '0.25' + memory: 128M + networks: + zbx_net_frontend: + aliases: + - zabbix-snmptraps + zbx_net_backend: + stop_grace_period: 5s + labels: + com.zabbix.description: "Zabbix snmptraps" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "snmptraps" + com.zabbix.os: "ubuntu" + + zabbix-web-service: + image: zabbix/zabbix-web-service:ubuntu-6.4-latest + profiles: + - full + - all + ports: + - "10053:10053" + volumes: + - /share/docker_data/zabbix/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro + security_opt: + - seccomp:/data/zabbix/chrome_dp.json + deploy: + resources: + limits: + cpus: '0.5' + memory: 512M + reservations: + cpus: '0.25' + memory: 256M + env_file: + - /data/zabbix/.env_web_service + networks: + zbx_net_backend: + aliases: + - zabbix-web-service + - zabbix-web-service-ubuntu + stop_grace_period: 5s + labels: + com.zabbix.description: "Zabbix web service" + com.zabbix.company: "Zabbix LLC" + com.zabbix.component: "web-service" + com.zabbix.os: "ubuntu" + + mysql-server: + image: mysql:8.0-oracle + command: + - mysqld + - --character-set-server=utf8mb4 + - --collation-server=utf8mb4_bin + - --default-authentication-plugin=mysql_native_password +# - --require-secure-transport +# - --ssl-ca=/run/secrets/root-ca.pem +# - --ssl-cert=/run/secrets/server-cert.pem +# - --ssl-key=/run/secrets/server-key.pem + volumes: + - /share/docker_data/zabbix/var/lib/mysql:/var/lib/mysql:rw +# - dbsocket:/var/run/mysqld/ + env_file: + - /data/zabbix/.env_db_mysql + secrets: + - MYSQL_USER + - MYSQL_PASSWORD + - MYSQL_ROOT_PASSWORD +# - server-key.pem +# - server-cert.pem +# - root-ca.pem + stop_grace_period: 1m + networks: + zbx_net_backend: + aliases: + - mysql-server + - zabbix-database + - mysql-database + + db_data_mysql: + image: busybox + volumes: + - /share/docker_data/zabbix/var/lib/mysql:/var/lib/mysql:rw + +# elasticsearch: +# image: elasticsearch +# profiles: +# - full +# - all +# environment: +# - transport.host=0.0.0.0 +# - discovery.zen.minimum_master_nodes=1 +# networks: +# zbx_net_backend: +# aliases: +# - elasticsearch + +networks: + zbx_net_frontend: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "false" + ipam: + driver: default + config: + - subnet: 172.16.238.0/24 + zbx_net_backend: + driver: bridge + driver_opts: + com.docker.network.enable_ipv6: "false" + internal: true + ipam: + driver: default + config: + - subnet: 172.16.239.0/24 + +volumes: + snmptraps: +# dbsocket: + +secrets: + MYSQL_USER: + file: /data/zabbix/.MYSQL_USER + MYSQL_PASSWORD: + file: /data/zabbix/.MYSQL_PASSWORD + MYSQL_ROOT_USER: + file: /data/zabbix/.MYSQL_ROOT_USER + MYSQL_ROOT_PASSWORD: + file: /data/zabbix/.MYSQL_ROOT_PASSWORD +# client-key.pem: +# file: ./env_vars/.ZBX_DB_KEY_FILE +# client-cert.pem: +# file: ./env_vars/.ZBX_DB_CERT_FILE +# root-ca.pem: +# file: ./env_vars/.ZBX_DB_CA_FILE +# server-cert.pem: +# file: ./env_vars/.DB_CERT_FILE +# server-key.pem: +# file: ./env_vars/.DB_KEY_FILE