diff --git a/debscripts/control b/debscripts/control new file mode 100644 index 0000000..ccd90a9 --- /dev/null +++ b/debscripts/control @@ -0,0 +1,15 @@ +Package: zabbix-php-monitoring +Version: 1.0.0 +Section: admin +Priority: optional +Architecture: all +Depends: php8.3-fpm, zabbix-agent, logrotate, jq +Maintainer: System Administrator +Description: PHP Exception Monitoring for Zabbix + This package provides comprehensive PHP exception monitoring for Zabbix. + It includes: + - Automatic exception logging via auto_prepend_file + - Zabbix template for monitoring and alerting + - Log rotation configuration + - User permissions for log access and service management + - Deduplication of identical exceptions based on unique identifiers \ No newline at end of file diff --git a/debscripts/postinst b/debscripts/postinst new file mode 100755 index 0000000..d553a92 --- /dev/null +++ b/debscripts/postinst @@ -0,0 +1,46 @@ +#!/bin/bash +set -e + +# Post-installation script for zabbix-php-monitoring + +# Create log directory with proper permissions +mkdir -p /var/log/zabbix +chown www-data:zabbix /var/log/zabbix +chmod 755 /var/log/zabbix + +# Create log file with proper permissions if it doesn't exist +if [ ! -f /var/log/zabbix/php.log ]; then + touch /var/log/zabbix/php.exceptions.log + chown www-data:zabbix /var/log/zabbix/php.exceptions.log + chmod 644 /var/log/zabbix/php.exceptions.log +fi + +# Set permissions on sudoers file +chown root:root /etc/sudoers.d/zabbix-php-user +chmod 440 /etc/sudoers.d/zabbix-php-user + +# Unset previous empty prepend_file +# sed -i 's/^[[:space:]]*auto_prepend_file[[:space:]]*=[[:space:]]*$/; auto_prepend_file =/' /etc/php/*/fpm/php.ini + +for cfg in /etc/php/8.3/fpm/pool.d/*.conf; do + grep -q auto_prepend_file $cfg && continue + read -p "$(echo -e "\e[3;31mZabbix monitor in $cfg einrichten? [\e[1;31mY\e[0m,n]: \e[0m")" ok + comment='' + [[ "$ok" =~ n|N ]] && comment='; Comment out to enable\n; ' + echo -e "\n; Added by php8.3-zabbix-monitor\n${comment}php_admin_value[auto_prepend_file] = /usr/lib/zabbix-php.php" >> $cfg +done + +# Restart services to apply configuration +systemctl reload php8.3-fpm.service || true +systemctl restart zabbix-agent.service || true + +echo "Zabbix PHP monitoring has been installed successfully." +echo "Log file: /var/log/zabbix/php.exceptions.log" +echo "Template file: /usr/share/doc/zabbix-php-monitoring/zabbix_template_php_exceptions.yaml" +echo "" +echo "To complete setup:" +echo "1. Import the template into your Zabbix server" +echo "2. Assign the template to your hosts" +echo "3. Configure zabbix_agentd.conf with appropriate log monitoring" + +exit 0 diff --git a/debscripts/prerm b/debscripts/prerm new file mode 100755 index 0000000..44eaba7 --- /dev/null +++ b/debscripts/prerm @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +# Pre-removal script for zabbix-php-monitoring + +echo "Removing zabbix-php-monitoring..." + +# Restart PHP-FPM to clear the auto_prepend_file configuration +systemctl reload php8.3-fpm.service || true + +# Note: We don't remove the log files as they may contain important data +echo "Log files in /var/log/zabbix/ have been preserved" +echo "Configuration files will be removed" + +exit 0 \ No newline at end of file diff --git a/src/usr/share/doc/zabbix-php-monitoring/zabbix_template_php_exceptions.yaml b/src/usr/share/doc/zabbix-php-monitoring/zabbix_template_php_exceptions.yaml index 364c397..3a87cbe 100644 --- a/src/usr/share/doc/zabbix-php-monitoring/zabbix_template_php_exceptions.yaml +++ b/src/usr/share/doc/zabbix-php-monitoring/zabbix_template_php_exceptions.yaml @@ -63,7 +63,7 @@ zabbix_export: } triggers: - uuid: 9df96b18c230490a9a0a9e2307226350 - expression: 'length(last(/PHP Exceptions Monitoring/php.exception.latest)) > 15' + expression: 'length(last(/PHP Exceptions Monitoring/php.exception.latest)) > 15 and change(/PHP Exceptions Monitoring/php.exception.latest) <> 0' name: 'PHP Exception Detected' event_name: 'New PHP Exception Logged' priority: HIGH @@ -102,6 +102,7 @@ zabbix_export: value: application - tag: component value: php + recovery_mode: NONE - uuid: 8df96b18c230490a9a0a9e2307226340 name: 'PHP Exception Log Size' type: ZABBIX_PASSIVE