Closed tuxpowered closed 2 years ago
Well, I've tested on a fresh 5.4.8 postgresql+nginx install and all is working fine:
Please provide detailed specs of your installation - I'll try to test with a docker containers with a closest configuration to yours. Look at error log of your web server. It's possible that PHP execution time is set to low.
Thank you for the quick reply , I am running 5.4.4 on MySQL. using official Docker images https://www.zabbix.com/container_images.
I run my own Nginx server in front to handle SSL. I did peak at the nginx server log before restoring the original images table, and it returned a 500 error. Restoring the original image table and everything worked fine.
This is the docker-compose file used.
version: '3.5'
services:
zabbix-server:
image: zabbix/zabbix-server-mysql:latest
ports:
- "10051:10051"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro
- ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro
- ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw
- ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
- ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
- ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
- ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro
- ./zbx_env/var/lib/zabbix/snmptraps:/var/lib/zabbix/snmptraps:ro
# links:
# - mysql-server:mysql-server
# - zabbix-java-gateway:zabbix-java-gateway
ulimits:
nproc: 65535
nofile:
soft: 20000
hard: 40000
deploy:
resources:
limits:
cpus: '0.70'
memory: 1G
reservations:
cpus: '0.5'
memory: 512M
env_file:
- .env_db_mysql
- .env_srv
# secrets:
# - MYSQL_USER
# - MYSQL_PASSWORD
# - MYSQL_ROOT_PASSWORD
# - client-key.pem
# - client-cert.pem
# - root-ca.pem
## If not run as root you can not install curl.
user: root
depends_on:
# - mysql-server
# - zabbix-java-gateway
- zabbix-snmptraps
networks:
zbx_net_backend:
aliases:
- zabbix-server
- zabbix-server-mysql
- zabbix-server-alpine-mysql
- zabbix-server-mysql-alpine
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: "alpine"
#zabbix-proxy-sqlite3:
# image: zabbix/zabbix-proxy-sqlite3:alpine-5.0-latest
# ports:
# - "10061:10051"
# volumes:
# - /etc/localtime:/etc/localtime:ro
# - /etc/timezone:/etc/timezone:ro
# - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro
# - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
# - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
# - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
# - ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro
# - ./zbx_env/var/lib/zabbix/snmptraps:/var/lib/zabbix/snmptraps:ro
# links:
# - zabbix-server:zabbix-server
# - zabbix-java-gateway:zabbix-java-gateway
# ulimits:
# nproc: 65535
# nofile:
# soft: 20000
# hard: 40000
# deploy:
# resources:
# limits:
# cpus: '0.70'
# memory: 512M
# reservations:
# cpus: '0.3'
# memory: 256M
# env_file:
# - .env_prx
# - .env_prx_sqlite3
# user: root
# depends_on:
# - zabbix-java-gateway
# - zabbix-snmptraps
# networks:
# zbx_net_backend:
# aliases:
# - zabbix-proxy-sqlite3
# - zabbix-proxy-alpine-sqlite3
# - zabbix-proxy-sqlite3-alpine
# 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: "alpine"
# zabbix-proxy-mysql:
# image: zabbix/zabbix-proxy-mysql:alpine-5.0-latest
# ports:
# - "10071:10051"
# volumes:
# - /etc/localtime:/etc/localtime:ro
# - /etc/timezone:/etc/timezone:ro
# - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro
# - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
# - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
# - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
# - ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro
# - ./zbx_env/var/lib/zabbix/snmptraps:/var/lib/zabbix/snmptraps:ro
# links:
# - zabbix-server:zabbix-server
# - zabbix-java-gateway:zabbix-java-gateway
# ulimits:
# nproc: 65535
# nofile:
# soft: 20000
# hard: 40000
# deploy:
# resources:
# limits:
# cpus: '0.70'
# memory: 512M
# reservations:
# cpus: '0.3'
# memory: 256M
# env_file:
# - .env_db_mysql_proxy
# - .env_prx
# - .env_prx_mysql
# depends_on:
# - mysql-server
# - zabbix-java-gateway
# - zabbix-snmptraps
# secrets:
# - MYSQL_USER
# - MYSQL_PASSWORD
# - MYSQL_ROOT_PASSWORD
# - client-key.pem
# - client-cert.pem
# - root-ca.pem
# networks:
# zbx_net_backend:
# aliases:
# - zabbix-proxy-mysql
# - zabbix-proxy-alpine-mysql
# - zabbix-proxy-mysql-alpine
# 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: "alpine"
# zabbix-web-apache-mysql:
# image: zabbix/zabbix-web-apache-mysql:alpine-5.0-latest
# ports:
# - "80:8080"
# - "443:8443"
# links:
# - mysql-server:mysql-server
# - zabbix-server:zabbix-server
# volumes:
# - /etc/localtime:/etc/localtime:ro
# - /etc/timezone:/etc/timezone:ro
# - ./zbx_env/etc/ssl/apache2:/etc/ssl/apache2:ro
# - ./zbx_env/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:
# - .env_db_mysql
# - .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-alpine-mysql
# - zabbix-web-apache-mysql-alpine
# 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: "alpine"
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:latest
ports:
- "8081:8080"
- "8443:8443"
links:
# - mysql-server:mysql-server
- zabbix-server:zabbix-server
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./zbx_env/etc/ssl/nginx:/etc/ssl/nginx:ro
- ./zbx_env/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:
- .env_db_mysql
- .env_web
# secrets:
# - MYSQL_USER
# - MYSQL_PASSWORD
# - client-key.pem
# - client-cert.pem
# - root-ca.pem
# user: root
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-nginx-mysql
- zabbix-web-nginx-alpine-mysql
- zabbix-web-nginx-mysql-alpine
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: "alpine"
zabbix-agent:
image: zabbix/zabbix-agent:latest
ports:
- "10050:10050"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
# Configure zabbix_agent.conf by modifying the .env_agent and reloading
- ./zbx_env/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro
- ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
- ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
- ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
links:
- zabbix-server:zabbix-server
deploy:
resources:
limits:
cpus: '0.2'
memory: 128M
reservations:
cpus: '0.1'
memory: 64M
mode: global
env_file:
- .env_agent
privileged: true
pid: "host"
networks:
zbx_net_backend:
aliases:
- zabbix-agent
- zabbix-agent-passive
- zabbix-agent-alpine
stop_grace_period: 5s
labels:
com.zabbix.description: "Zabbix agent"
com.zabbix.company: "Zabbix LLC"
com.zabbix.component: "zabbix-agentd"
com.zabbix.os: "alpine"
# zabbix-java-gateway:
# image: zabbix/zabbix-java-gateway:alpine-5.0-latest
# ports:
# - "10052:10052"
# deploy:
# resources:
# limits:
# cpus: '0.5'
# memory: 512M
# reservations:
# cpus: '0.25'
# memory: 256M
# env_file:
# - .env_java
# networks:
# zbx_net_backend:
# aliases:
# - zabbix-java-gateway
# - zabbix-java-gateway-alpine
# stop_grace_period: 5s
# labels:
# com.zabbix.description: "Zabbix Java Gateway"
# com.zabbix.company: "Zabbix LLC"
# com.zabbix.component: "java-gateway"
# com.zabbix.os: "alpine"
zabbix-snmptraps:
image: zabbix/zabbix-snmptraps:latest
ports:
- "162:1162/udp"
volumes:
- ./zbx_env/var/lib/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: "alpine"
# mysql-server:
# image: mysql:8.0
# command:
# - mysqld
# - --character-set-server=utf8
# - --collation-server=utf8_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:
# - ./zbx_env/var/lib/mysql:/var/lib/mysql:rw
# env_file:
# - .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:
# - ./zbx_env/var/lib/mysql:/var/lib/mysql:rw
# elasticsearch:
# image: elasticsearch
# 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
secrets:
MYSQL_USER:
file: ./.MYSQL_USER
MYSQL_PASSWORD:
file: ./.MYSQL_PASSWORD
MYSQL_ROOT_PASSWORD:
file: ./.MYSQL_ROOT_PASSWORD
# client-key.pem:
# file: ./.ZBX_DB_KEY_FILE
# client-cert.pem:
# file: ./.ZBX_DB_CERT_FILE
# root-ca.pem:
# file: ./.ZBX_DB_CA_FILE
# server-cert.pem:
# file: ./.DB_CERT_FILE
# server-key.pem:
# file: ./.DB_KEY_FILE
Your PHP comment is interesting, though I do not think the docker for the web lets you modify it, here is my .env_web
ZBX_SERVER_HOST=zabbix-server
ZBX_SERVER_PORT=10051
ZBX_SERVER_NAME=Composed installation
ZBX_MAXEXECUTIONTIME=600
ZBX_MEMORYLIMIT=128M
ZBX_POSTMAXSIZE=16M
ZBX_UPLOADMAXFILESIZE=2M
ZBX_MAXINPUTTIME=300
# Timezone one of: http://php.net/manual/en/timezones.php
PHP_TZ=America/Los_Angeles
Hello,
I can't deploy 100% of yours environment but I can reproduce your issue on a docker installation based on https://www.zabbix.com/documentation/current/en/manual/installation/containers documentation.
The problem is PHP memory limit which is default set to 128M, after I imported a bunch of icons and open map for edition, bang:
2021/12/20 22:34:34 [error] 20#20: *284 FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 16384 bytes) in /usr/share/zabbix/include/classes/api/services/CImage.php on line 162PHP message: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 16384 bytes) in Unknown on line 0PHP message: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 12288 bytes) in /usr/share/zabbix/include/classes/core/CCookieSession.php on line 123PHP message: PHP Warning: Unknown: Cannot call session save handler in a recursive manner in Unknown on line 0" while reading response header from upstream, client: 192.168.54.1, server: zabbix, request: "GET /sysmap.php?sysmapid=2 HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-fpm.sock:", host: "localhost", referrer: "http://localhost/zabbix.php?action=map.view&sysmapid=2"
So yeah, php_mysql is likely using more memory than php_psql. After I started docker container with "-e ZBX_MEMORYLIMIT=256M" option - maps edition works like a charm. Please try change ZBX_MEMORYLIMIT to 256M or more in your env file and let me know if the problem persists.
Have a nice day!
Thank you! That proved to be the underlining issue. Bumping it to 256 worked added a bit more and it improved still. I have always been hesitant to use postgres (mostly because I am comfortable w/ MySQL/MariaDB but I might have to dig into memory usage between the two with php.
On a slightly different question, your script that generates the resulting files, Is it free to use? I want to create some icon sets for Ubiquiti devices and your script would be awesome to include with it. (actually my search for icons was for Ubiquiti set when I found yours :) )
Hello. That's great the issue is solved. I've been using always mysql with zabbix but always with tweaked configuration for php so I didn't noticed such problems in production.
Well script is not a rocket science and I'm using GPL so yeah -- if it feets your needs elsewhere feel free to use it. Have a nice day.
Your script works wonderful, and the files are all visible in the GUI under
Admin>General>Images
.Existing maps open no problem. However, editing existing or creating a new map and editing it results in just a blank web page loading. (no background grid or anything). Any idea why?
I can provide you the new zabbix image table if it could help.