From dcc0acdca572105b141cdc8057d6919d9be4c98a Mon Sep 17 00:00:00 2001 From: "Daniel F. Dickinson" Date: Tue, 9 Dec 2025 00:21:18 -0500 Subject: [PATCH 1/2] zabbix: add initscript for server Adds an initscript for zabbix_server, and related helper files + uses a zabbix_server uci conf to enable/disable startup + updates the default zabbix_server.conf to work with initscript + add a sysctl.d conf to set max-files more appropriate for zabbix_server Signed-off-by: Daniel F. Dickinson --- admin/zabbix/Makefile | 10 ++++- .../zabbix-discovery-workers.conf.sysctl | 1 + admin/zabbix/files/zabbix_server.config | 3 ++ admin/zabbix/files/zabbix_server.init | 41 +++++++++++++++++++ .../patches/020-change-server-config.patch | 38 +++++++++++++++++ 5 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 admin/zabbix/files/zabbix-discovery-workers.conf.sysctl create mode 100644 admin/zabbix/files/zabbix_server.config create mode 100755 admin/zabbix/files/zabbix_server.init create mode 100644 admin/zabbix/patches/020-change-server-config.patch diff --git a/admin/zabbix/Makefile b/admin/zabbix/Makefile index 99ded40d5ec7a2..12f00043197417 100644 --- a/admin/zabbix/Makefile +++ b/admin/zabbix/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=zabbix PKG_VERSION:=7.0.12 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://cdn.zabbix.com/zabbix/sources/stable/$(basename $(PKG_VERSION))/ \ @@ -334,6 +334,8 @@ Package/zabbix-agentd-gnutls/conffiles = $(Package/zabbix-agentd/conffiles) define Package/zabbix-server/conffiles /etc/zabbix_server.conf +/etc/config/zabbix_server +/etc/sysctl.d/90-zabbix-discovery-workers.conf endef Package/zabbix-server-openssl/conffiles = $(Package/zabbix-server/conffiles) Package/zabbix-server-gnutls/conffiles = $(Package/zabbix-server/conffiles) @@ -422,6 +424,12 @@ Package/zabbix-get-gnutls/install = $(Package/zabbix-get/install) define Package/zabbix-server/install $(call Package/zabbix/install/sbin,$(1),server) $(call Package/zabbix/install/etc,$(1),server) + $(call Package/zabbix/install/init.d,$(1),server) + + $(INSTALL_DIR) $(1)/etc/sysctl.d + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_CONF) ./files/zabbix-discovery-workers.conf.sysctl $(1)/etc/sysctl.d/90-zabbix-discovery-workers.conf + $(INSTALL_CONF) files/zabbix_server.config $(1)/etc/config/zabbix_server endef Package/zabbix-server-openssl/install = $(Package/zabbix-server/install) Package/zabbix-server-gnutls/install = $(Package/zabbix-server/install) diff --git a/admin/zabbix/files/zabbix-discovery-workers.conf.sysctl b/admin/zabbix/files/zabbix-discovery-workers.conf.sysctl new file mode 100644 index 00000000000000..e88c23943f991b --- /dev/null +++ b/admin/zabbix/files/zabbix-discovery-workers.conf.sysctl @@ -0,0 +1 @@ +fs.file-max=100000 diff --git a/admin/zabbix/files/zabbix_server.config b/admin/zabbix/files/zabbix_server.config new file mode 100644 index 00000000000000..45e3f3062b0aba --- /dev/null +++ b/admin/zabbix/files/zabbix_server.config @@ -0,0 +1,3 @@ + +config zabbix_server 'general' + option enabled 0 diff --git a/admin/zabbix/files/zabbix_server.init b/admin/zabbix/files/zabbix_server.init new file mode 100755 index 00000000000000..7a96fdefbd0ff3 --- /dev/null +++ b/admin/zabbix/files/zabbix_server.init @@ -0,0 +1,41 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2008-2025 OpenWrt.org + +START=59 + +USE_PROCD=1 + +NAME=zabbix_server +PROG=/usr/sbin/${NAME} +CONFIG=/etc/zabbix_server.conf + +start_service() { + if [ -z "${CONFIG}" ]; then + logger "Missing configuration '${CONFIG}'" + exit 1 + fi + + # Get enabled config option + config_load "$NAME" + config_get_bool enabled general enabled 0 + + # shellcheck disable=SC2154 + if [ "$enabled" -eq 0 ]; then + logger "service not enabled in /etc/config/$NAME" + exit 1 + fi + + mkdir -p /var/run/zabbix + chown zabbix:zabbix /var/run/zabbix + chown zabbix:zabbix ${CONFIG} + + procd_open_instance + procd_set_param command ${PROG} -c ${CONFIG} -f + procd_set_param user zabbix + procd_set_param limits nofile="16384 100000" + procd_set_param file /etc/zabbix_server.conf + procd_set_param respawn + procd_set_param stdout 1 + procd_set_param stderr 1 + procd_close_instance +} diff --git a/admin/zabbix/patches/020-change-server-config.patch b/admin/zabbix/patches/020-change-server-config.patch new file mode 100644 index 00000000000000..dec545f33016e8 --- /dev/null +++ b/admin/zabbix/patches/020-change-server-config.patch @@ -0,0 +1,38 @@ +--- a/conf/zabbix_server.conf ++++ b/conf/zabbix_server.conf +@@ -27,6 +27,7 @@ + # Mandatory: no + # Default: + # LogType=file ++LogType=system + + ### Option: LogFile + # Log file name for LogType 'file' parameter. +@@ -35,7 +36,7 @@ + # Default: + # LogFile= + +-LogFile=/tmp/zabbix_server.log ++# LogFile=/tmp/zabbix_server.log + + ### Option: LogFileSize + # Maximum size of log file in MB. +@@ -45,6 +46,7 @@ LogFile=/tmp/zabbix_server.log + # Range: 0-1024 + # Default: + # LogFileSize=1 ++LogFileSize=0 + + ### Option: DebugLevel + # Specifies debug level: +@@ -67,6 +69,10 @@ LogFile=/tmp/zabbix_server.log + # Default: + # PidFile=/tmp/zabbix_server.pid + ++# Although procd does not require a pid file, zabbix uses the pidfile to ++# correctly shutdown on receipt of a TERM or INT signal. ++PidFile=/var/run/zabbix/zabbix_server.pid ++ + ### Option: SocketDir + # IPC socket directory. + # Directory to store IPC sockets used by internal Zabbix services. From 4b5361e52f7740b45cb204612dc32f9f24138653 Mon Sep 17 00:00:00 2001 From: "Daniel F. Dickinson" Date: Tue, 9 Dec 2025 00:24:07 -0500 Subject: [PATCH 2/2] zabbix: add php8 filter dependency for frontend For zabbix-server-frontend, the absence of php8-mod-filter results in many of the frontend's pages failing to render. Therefore add this module as a frontend dependency. Signed-off-by: Daniel F. Dickinson --- admin/zabbix/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/admin/zabbix/Makefile b/admin/zabbix/Makefile index 12f00043197417..dd91b5121fd59b 100644 --- a/admin/zabbix/Makefile +++ b/admin/zabbix/Makefile @@ -194,6 +194,7 @@ define Package/zabbix-server-frontend +php8-mod-gd \ +php8-mod-bcmath \ +php8-mod-ctype \ + +php8-mod-filter \ +php8-mod-xmlreader \ +php8-mod-xmlwriter \ +php8-mod-session \