From 63afcd8bce037c3f700c5862a2e362e9109a64aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Deckert?= Date: Fri, 14 Oct 2022 15:12:09 +0200 Subject: [PATCH] version bump, better default configs, save some var dirs --- zabbix/Makefile | 61 +++++++-- zabbix/appliance/02firstboot.start | 29 +++- zabbix/package.accept_keywords | 1 - zabbix/package.use | 4 +- zabbix/snmp/snmpd.conf | 3 +- zabbix/world | 2 +- .../zabbix/zabbix-syslog/Template_syslog.xml | 128 ++++++++++++++++++ .../zabbix_syslog_create_urls.pl | 2 +- .../zabbix-syslog/zabbix_syslog_lkp_host.pl | 6 +- 9 files changed, 213 insertions(+), 23 deletions(-) create mode 100644 zabbix/zabbix/zabbix-syslog/Template_syslog.xml diff --git a/zabbix/Makefile b/zabbix/Makefile index 761b703..a224433 100644 --- a/zabbix/Makefile +++ b/zabbix/Makefile @@ -77,6 +77,7 @@ zabbix-syslog: mkdir -p $(CHROOT)/etc/zabbix/scripts/lib cp zabbix/zabbix-syslog/zabbix_syslog_create_urls.pl $(CHROOT)/etc/zabbix/scripts/zabbix_syslog_create_urls.pl cp zabbix/zabbix-syslog/zabbix_syslog_lkp_host.pl $(CHROOT)/etc/zabbix/scripts/zabbix_syslog_lkp_host.pl + cp zabbix/zabbix-syslog/Template_syslog.xml $(CHROOT)/etc/zabbix/scripts/Template_syslog.xml cp zabbix/zabbix-syslog/zabbix_syslog.cfg $(CHROOT)/etc/zabbix/zabbix_syslog.cfg cp zabbix/zabbix-syslog/lib/ZabbixAPI.pm $(CHROOT)/etc/zabbix/scripts/lib/ZabbixAPI.pm cp zabbix/zabbix-syslog/70-zabbix_rsyslog.conf $(CHROOT)/etc/rsyslog.d/70-zabbix_rsyslog.conf @@ -84,22 +85,56 @@ zabbix-syslog: chmod +x $(CHROOT)/etc/zabbix/scripts/zabbix_syslog_create_urls.pl chmod +x $(CHROOT)/etc/zabbix/scripts/zabbix_syslog_lkp_host.pl -fping: +zabbix-config: + sed -i \ + -e 's:# PidFile=/tmp/zabbix_agent2.pid:PidFile=/run/zabbix/zabbix_agent2.pid:' \ + -e 's:# LogFile=/tmp/zabbix_agent2.log:LogFile=/var/log/zabbix/zabbix_agent2.log:' \ + $(CHROOT)/etc/zabbix/zabbix_agent2.conf + sed -i \ + -e 's:LogFile=/tmp/zabbix_proxy.log:LogFile=/var/log/zabbix/zabbix_proxy.log:' \ + -e 's:# PidFile=/tmp/zabbix_proxy.pid:PidFile=/run/zabbix/zabbix_proxy.pid:' \ + $(CHROOT)/etc/zabbix/zabbix_proxy.conf + sed -i \ + -e 's:LogFile=/tmp/zabbix_server.log:LogFile=/var/log/zabbix/zabbix_server.log:' \ + -e 's:# PidFile=/tmp/zabbix_server.pid:PidFile=/run/zabbix/zabbix_server.pid:' \ + -e 's:# StartPollers=5:StartPollers=15:' \ + -e 's:# StartIPMIPollers=0:StartIPMIPollers=5:' \ + -e 's:# StartPollersUnreachable=1:StartPollersUnreachable=15:' \ + -e 's:# StartPingers=1:StartPingers=25:' \ + -e 's:# StartDiscoverers=1:StartDiscoverers=5:' \ + -e 's:# JavaGateway=:JavaGateway=127.0.0.1:' \ + -e 's:# VMwareCacheSize=8M:VMwareCacheSize=16M:' \ + -e 's:# VMwareTimeout=10:VMwareTimeout=30:' \ + -e 's:# SNMPTrapperFile=/tmp/zabbix_traps.tmp:SNMPTrapperFile=/var/log/snmptt/snmptt.log:' \ + -e 's:# CacheSize=8M:CacheSize=32M:' \ + -e 's:# HistoryIndexCacheSize=4M:HistoryIndexCacheSize=8M:' \ + -e 's:Timeout=4:Timeout=10:' \ + -e 's:^# AlertScriptsPath=.*:AlertScriptsPath=/var/lib/zabbix/alertscripts:' \ + -e 's:^# ExternalScripts=.*:ExternalScripts=/var/lib/zabbix/externalscripts:' \ + -e 's:# ProxyConfigFrequency=3600:ProxyConfigFrequency=360:' \ + -e 's:# ProxyDataFrequency=1:ProxyDataFrequency=60:' \ + $(CHROOT)/etc/zabbix/zabbix_server.conf + +fping-perm: chmod u=rwsx,g=rx,o=rx $(CHROOT)/usr/sbin/fping chmod u=rwsx,g=rx,o=rx $(CHROOT)/usr/sbin/fping6 -snmp: - cp snmp/snmpd.conf $(CHROOT)/etc/snmp/snmpd.conf - cp snmp/snmptrapd.conf $(CHROOT)/etc/snmp/snmptrapd.conf - cp snmp/snmptt.conf $(CHROOT)/etc/snmp/snmptt.conf +snmp-conf: + cp -f snmp/snmpd.conf $(CHROOT)/etc/snmp/snmpd.conf + cp -f snmp/snmptrapd.conf $(CHROOT)/etc/snmp/snmptrapd.conf + cp -f snmp/snmptt.conf $(CHROOT)/etc/snmp/snmptt.conf sed -i \ - -e 's:net_snmp_perl_enable = 0:net_snmp_perl_enable = 1:' \ - -e 's:translate_integers = 1:translate_integers = 0:' \ - -e 's:#mibs_environment = ALL:mibs_environment = ALL:' \ - -e 's.#date_time_format =.date_time_format = %H:%M:%S %Y/%m/%d.' \ - -e 's:daemon_uid = snmptt:daemon_uid = zabbix:' \ - -e 's:log_system_enable = 0:log_system_enable = 1:' \ - -e 's:unknown_trap_log_enable = 0:unknown_trap_log_enable = 1:' \ + -e 's:^mode = .*:mode = standalone:' \ + -e 's:^net_snmp_perl_enable = .*:net_snmp_perl_enable = 1:' \ + -e 's:^translate_log_trap_oid = .*:translate_log_trap_oid = 2:' \ + -e 's:^translate_integers = .*:translate_integers = 0:' \ + -e 's:^#mibs_environment = .*:mibs_environment = ALL:' \ + -e 's.^#date_time_format =.date_time_format = %H:%M:%S %Y/%m/%d.' \ + -e 's:^daemon_uid = .*:daemon_uid = zabbix:' \ + -e 's:^log_system_enable = .*:log_system_enable = 1:' \ + -e 's:^unknown_trap_log_enable = .*:unknown_trap_log_enable = 1:' \ + -e 's:^syslog_level = .*:syslog_level = err:' \ + -e 's:^syslog_system_level = .*:syslog_system_level = err:' \ $(CHROOT)/etc/snmp/snmptt.ini mkdir -p $(CHROOT)/var/log/snmptt chmod 0775 $(CHROOT)/var/log/snmptt @@ -107,4 +142,4 @@ snmp: preinstall: -postinstall: systemd-units $(02firstboot) $(cert-renew.sh) $(CHROOT)/var/lib/mysql apache-php zabbix-services zabbix-webapp $(zabbix-userparameter) zabbix-syslog fping snmp +postinstall: systemd-units $(02firstboot) $(cert-renew.sh) $(CHROOT)/var/lib/mysql apache-php zabbix-services zabbix-webapp $(zabbix-userparameter) zabbix-syslog zabbix-config fping-perm snmp-conf diff --git a/zabbix/appliance/02firstboot.start b/zabbix/appliance/02firstboot.start index 417390a..82ca7e7 100755 --- a/zabbix/appliance/02firstboot.start +++ b/zabbix/appliance/02firstboot.start @@ -93,8 +93,32 @@ if [ "$zabbixtype" == "server" ]; then ln -s /$LABEL/var/www/localhost/htdocs/zabbix/conf/zabbix.conf.php /var/www/localhost/htdocs/zabbix/conf/zabbix.conf.php fi fi + if [ ! -L /var/lib/net-snmp ]; then + echo 'Linking SNMP data directory...' + if [ ! -d "/$LABEL/var/lib/net-snmp" ]; then + mkdir -p /$LABEL/var/lib/net-snmp + cp -a /var/lib/net-snmp/. /$LABEL/var/lib/net-snmp + fi + rm -rf /var/lib/net-snmp.orig + mv /var/lib/net-snmp /var/lib/net-snmp.orig + ln -s /$LABEL/var/lib/net-snmp /var/lib/net-snmp + fi fi +# Zabbix home directory +if [ ! -L /var/lib/zabbix ]; then + echo 'Linking Zabbix home directory...' + if [ ! -d "/$LABEL/var/lib/zabbix" ]; then + mkdir -p /$LABEL/var/lib/zabbix + chown zabbix:zabbix /$LABEL/var/lib/zabbix + cp -a /var/lib/zabbix/. /$LABEL/var/lib/zabbix + fi + rm -rf /var/lib/zabbix.orig + mv /var/lib/zabbix /var/lib/zabbix.orig + ln -s /$LABEL/var/lib/zabbix /var/lib/zabbix +fi + + # Database if [ ! -L /var/lib/mysql ]; then systemctl stop mariadb @@ -102,6 +126,7 @@ if [ ! -L /var/lib/mysql ]; then echo 'Initialize MariaDB...' mkdir -p "/$LABEL/var/lib" rm -rf "/$LABEL/var/lib/mysql" + rm -rf "/$LABEL/var/lib/mysql.orig" cp -a "/var/lib/mysql" "/$LABEL/var/lib/mysql" mv "/var/lib/mysql" "/$LABEL/var/lib/mysql.orig" ln -s "/$LABEL/var/lib/mysql" "/var/lib/mysql" @@ -177,7 +202,7 @@ if [ "$zabbixtype" == "server" ]; then fi systemctl enable mariadb -systemctl enable zabbix-agentd +systemctl enable zabbix-agent2 if [ "$zabbixtype" == "server" ]; then systemctl enable zabbix-server systemctl enable apache2 @@ -185,7 +210,7 @@ else systemctl enable zabbix-proxy fi -systemctl restart zabbix-agentd +systemctl restart zabbix-agent2 if [ "$zabbixtype" == "server" ]; then systemctl restart zabbix-server systemctl restart apache2 diff --git a/zabbix/package.accept_keywords b/zabbix/package.accept_keywords index 93f6d82..ca7f274 100644 --- a/zabbix/package.accept_keywords +++ b/zabbix/package.accept_keywords @@ -1,3 +1,2 @@ # Zabbix -net-analyzer/zabbix net-analyzer/snmptt diff --git a/zabbix/package.use b/zabbix/package.use index b58763e..6be2eac 100644 --- a/zabbix/package.use +++ b/zabbix/package.use @@ -5,8 +5,8 @@ app-text/poppler -introspection -jpeg -jpeg2k dev-java/openjdk-bin headless-awt dev-lang/php apache2 bcmath curl gd ldap mysql mysqli sockets sysvipc truetype xmlreader xmlwriter media-libs/gd jpeg png -net-analyzer/zabbix curl frontend java ldap libxml2 mysql openipmi -postgres proxy server snmp ssh xmpp -net-analyzer/zabbix-headers curl frontend java ldap libxml2 mysql openipmi -postgres proxy server snmp ssh xmpp +net-analyzer/zabbix -agent agent2 curl frontend java ldap libxml2 mysql openipmi -postgres proxy server snmp ssh xmpp +net-analyzer/zabbix-headers -agent agent2 curl frontend java ldap libxml2 mysql openipmi -postgres proxy server snmp ssh xmpp net-analyzer/net-snmp perl net-analyzer/fping suid net-print/cups-filters -foomatic -postscript diff --git a/zabbix/snmp/snmpd.conf b/zabbix/snmp/snmpd.conf index 250e7f8..4c2263b 100644 --- a/zabbix/snmp/snmpd.conf +++ b/zabbix/snmp/snmpd.conf @@ -1 +1,2 @@ -mibs +ALL \ No newline at end of file +#mibs +SOME-OTHER-SPIFFY-MIB +mibs +ALL diff --git a/zabbix/world b/zabbix/world index f6358fb..ccd824f 100644 --- a/zabbix/world +++ b/zabbix/world @@ -7,7 +7,7 @@ dev-perl/JSON-RPC dev-perl/JSON-XS dev-perl/libwww-perl dev-tcltk/expect -net-analyzer/l2dm-lldp +net-analyzer/snmp-lldp net-analyzer/net-snmp net-analyzer/nmap net-analyzer/snmptt diff --git a/zabbix/zabbix/zabbix-syslog/Template_syslog.xml b/zabbix/zabbix/zabbix-syslog/Template_syslog.xml new file mode 100644 index 0000000..00c76fd --- /dev/null +++ b/zabbix/zabbix/zabbix-syslog/Template_syslog.xml @@ -0,0 +1,128 @@ + + + 2.0 + 2015-03-13T14:27:56Z + + + Templates + + + + + + + + ({Template_Syslog:syslog.str(.alert)}=1)and({Template_Syslog:syslog.nodata(900)}=0) + [SYSLOG] Alert message received + + 0 + 4 + + 0 + + + + ({Template_Syslog:syslog.str(.crit)}=1)and({Template_Syslog:syslog.nodata(900)}=0) + [SYSLOG] Critical message received + + 0 + 3 + + 0 + + + + ({Template_Syslog:syslog.str(.emerg)}=1)and({Template_Syslog:syslog.nodata(900)}=0) + [SYSLOG] Emergency message received + + 0 + 5 + + 0 + + + + ({Template_Syslog:syslog.str(.err)}=1)and({Template_Syslog:syslog.nodata(900)}=0) + [SYSLOG] Error received + + 0 + 2 + + 0 + + + + ({Template_Syslog:syslog.str(.warning)}=1)and({Template_Syslog:syslog.nodata(900)}=0) + [SYSLOG] Warning received + + 0 + 1 + + 0 + + + + diff --git a/zabbix/zabbix/zabbix-syslog/zabbix_syslog_create_urls.pl b/zabbix/zabbix/zabbix-syslog/zabbix_syslog_create_urls.pl index 56dac4e..00826f8 100644 --- a/zabbix/zabbix/zabbix-syslog/zabbix_syslog_create_urls.pl +++ b/zabbix/zabbix/zabbix-syslog/zabbix_syslog_create_urls.pl @@ -9,7 +9,7 @@ use lib "$Bin/lib"; use Data::Dumper; use Config::General; use ZabbixAPI; -our $VERSION = 3.1; +our $VERSION = 4.0; my $conf; $conf = eval {Config::General->new('/usr/local/etc/zabbix_syslog.cfg')}; if ($@) { diff --git a/zabbix/zabbix/zabbix-syslog/zabbix_syslog_lkp_host.pl b/zabbix/zabbix/zabbix-syslog/zabbix_syslog_lkp_host.pl index 7d0ab22..d5f89bf 100644 --- a/zabbix/zabbix/zabbix-syslog/zabbix_syslog_lkp_host.pl +++ b/zabbix/zabbix/zabbix-syslog/zabbix_syslog_lkp_host.pl @@ -13,7 +13,7 @@ use English '-no_match_vars'; use MIME::Base64 qw(encode_base64); use IO::Socket::INET; use Storable qw(lock_store lock_retrieve); -our $VERSION = 3.1; +our $VERSION = 4.0; my $CACHE_TIMEOUT = 600; my $CACHE_DIR = '/tmp/zabbix_syslog_cache_n'; @@ -193,6 +193,7 @@ sub zabbix_send { sprintf "\n%s\n%s\n%s\n\n", encode_base64($hostname), encode_base64($item), encode_base64($data); + my $packet = "ZBXD\1" . pack('V', length($request)) . "\0\0\0\0" . $request; my $sock = IO::Socket::INET->new( PeerAddr => $zabbixserver, @@ -202,7 +203,8 @@ sub zabbix_send { ); die "Could not create socket: $ERRNO\n" unless $sock; - $sock->send($request); + $sock->send($packet); + my @handles = IO::Select->new($sock)->can_read($SOCK_TIMEOUT); if ( $debug > 0 ) { print "host - $hostname, item - $item, data - $data\n"; }