Premier commit

tags/smeserver-zabbix-proxy-0.3.1-1
Daniel Berteaud 12 years ago
commit b880124448
  1. 19
      createlinks
  2. 1
      root/etc/e-smith/db/configuration/defaults/zabbix-proxy/DbName
  3. 1
      root/etc/e-smith/db/configuration/defaults/zabbix-proxy/DbUser
  4. 1
      root/etc/e-smith/db/configuration/defaults/zabbix-proxy/TCPPort
  5. 1
      root/etc/e-smith/db/configuration/defaults/zabbix-proxy/access
  6. 1
      root/etc/e-smith/db/configuration/defaults/zabbix-proxy/status
  7. 1
      root/etc/e-smith/db/configuration/defaults/zabbix-proxy/type
  8. 33
      root/etc/e-smith/db/configuration/migrate/zabbix-proxy-database
  9. 1
      root/etc/e-smith/templates.metadata/etc/e-smith/sql/init/80zabbix-proxy
  10. 3
      root/etc/e-smith/templates.metadata/var/lib/zabbix/bin/sendxmpp
  11. 56
      root/etc/e-smith/templates/etc/e-smith/sql/init/80zabbix-proxy
  12. 1
      root/etc/e-smith/templates/etc/sudoers/00zabbixAlias
  13. 1
      root/etc/e-smith/templates/etc/sudoers/30zabbix
  14. 4
      root/etc/e-smith/templates/etc/zabbix/zabbix_proxy.conf/00header
  15. 10
      root/etc/e-smith/templates/etc/zabbix/zabbix_proxy.conf/10zabbixServers
  16. 7
      root/etc/e-smith/templates/etc/zabbix/zabbix_proxy.conf/15hostname
  17. 35
      root/etc/e-smith/templates/etc/zabbix/zabbix_proxy.conf/20instances
  18. 16
      root/etc/e-smith/templates/etc/zabbix/zabbix_proxy.conf/30listen
  19. 34
      root/etc/e-smith/templates/etc/zabbix/zabbix_proxy.conf/40freq
  20. 9
      root/etc/e-smith/templates/etc/zabbix/zabbix_proxy.conf/45proxybuffers
  21. 9
      root/etc/e-smith/templates/etc/zabbix/zabbix_proxy.conf/50debug
  22. 17
      root/etc/e-smith/templates/etc/zabbix/zabbix_proxy.conf/55timeout
  23. 13
      root/etc/e-smith/templates/etc/zabbix/zabbix_proxy.conf/60pidAndLog
  24. 14
      root/etc/e-smith/templates/etc/zabbix/zabbix_proxy.conf/70location
  25. 32
      root/etc/e-smith/templates/etc/zabbix/zabbix_proxy.conf/80database
  26. 2
      root/var/lib/zabbix/bin/fping
  27. 2
      root/var/lib/zabbix/bin/fping6
  28. 124
      smeserver-zabbix-proxy.spec

@ -0,0 +1,19 @@
#!/usr/bin/perl -w
use esmith::Build::CreateLinks qw(:all);
# Templates to expand
templates2events("/etc/zabbix/zabbix_proxy.conf", qw(zabbix-proxy-update bootstrap-console-save));
templates2events("/etc/sudoers", "zabbix-proxy-update");
templates2events("/etc/e-smith/sql/init/80zabbix-proxy", qw(zabbix-proxy-update bootstrap-console-save));
# Services to restart
safe_symlink("restart", "root/etc/e-smith/events/zabbix-proxy-update/services2adjust/mysql.init");
safe_symlink("restart", "root/etc/e-smith/events/zabbix-proxy-update/services2adjust/zabbix-proxy");
# Start and stop links
service_link_enhanced("zabbix-proxy", "S99", "7");
service_link_enhanced("zabbix-proxy", "K10", "6");
service_link_enhanced("zabbix-proxy", "K10", "0");

@ -0,0 +1,33 @@
{
my $rec = $DB->get('zabbix-proxy')
|| $DB->new_record('zabbix-proxy', {type => 'service'});
my $pw = $rec->prop('DbPassword');
if (not $pw or length($pw) < 57)
{
use MIME::Base64 qw(encode_base64);
$pw = "not set due to error";
if ( open( RANDOM, "/dev/urandom" ) )
{
my $buf;
# 57 bytes is a full line of Base64 coding, and contains
# 456 bits of randomness - given a perfectly random /dev/random
if ( read( RANDOM, $buf, 57 ) != 57 )
{
warn("Short read from /dev/random: $!");
}
else
{
$pw = encode_base64($buf);
chomp $pw;
}
close RANDOM;
}
else
{
warn "Could not open /dev/urandom: $!";
}
$rec->set_prop('DbPassword', $pw);
}
}

@ -0,0 +1,56 @@
{
my $db = ${'zabbix-proxy'}{'DbName'} || 'zabbix';
my $user = ${'zabbix-proxy'}{'DbUser'} || 'zabbix';
my $pass = ${'zabbix-proxy'}{'DbPassword'} || 'secret';
my $schema = `rpm -qd zabbix-server | grep schema | grep mysql`;
my $data = `rpm -qd zabbix-server | grep data.sql`;
my $images = `rpm -qd zabbix-server | grep images_mysql`;
$OUT .= <<"END";
#! /bin/sh
if [ -d /var/lib/mysql/$db ]; then
for P in \$(rpm -qd zabbix-server | grep dbpatch | grep mysql); do
/usr/bin/mysql $db < \$P
done
else
/usr/bin/mysqladmin create $db
/usr/bin/mysql $db < $schema
/usr/bin/mysql $db < $data
/usr/bin/mysql $db < $images
fi
/usr/bin/mysql <<EOF
USE mysql;
REPLACE INTO user (
host,
user,
password)
VALUES (
'localhost',
'${'zabbix-proxy'}{DbUser}',
PASSWORD ('${'zabbix-proxy'}{DbPassword}'));
REPLACE INTO db (
host,
db,
user,
select_priv, insert_priv, update_priv, delete_priv,
create_priv, alter_priv, index_priv, drop_priv, create_tmp_table_priv,
grant_priv, lock_tables_priv, references_priv)
VALUES (
'localhost',
'${'zabbix-proxy'}{DbName}',
'${'zabbix-proxy'}{DbUser}',
'Y', 'Y', 'Y', 'Y',
'Y', 'Y', 'Y', 'Y', 'Y',
'N', 'Y', 'Y');
FLUSH PRIVILEGES;
EOF
END
}

@ -0,0 +1 @@
Cmnd_Alias ZABBIX = /usr/sbin/fping,/usr/sbin/fping6

@ -0,0 +1 @@
zabbix ALL=(root) NOPASSWD: ZABBIX

@ -0,0 +1,4 @@
# This is config file for ZABBIX server process
# To get more information about ZABBIX,
# go http://www.zabbix.com

@ -0,0 +1,10 @@
############ GENERAL PARAMETERS #################
# IP address (or hostname) of ZABBIX servers.
Server={ (${'zabbix-proxy'}{'Servers'} || '127.0.0.1'); }
# Server port for sending active checks
ServerPort={ (${'zabbix-proxy'}{'ServerPort'} || '10051'); }

@ -0,0 +1,7 @@
{
my $host = (${'zabbix-proxy'}{'Hostname'} || $SystemName.".".$DomainName);
$OUT = "Hostname=$host\n";
}

@ -0,0 +1,35 @@
# Number of pre-forked instances of pollers
# Default value is 5
# This parameter must be between 0 and 255
StartPollers=5
# Number of pre-forked instances of IPMI pollers
# Default value is 0
# This parameter must be between 0 and 255
#StartIPMIPollers=0
# Number of pre-forked instances of pollers for unreachable hosts
# Default value is 1
# This parameter must be between 0 and 255
#StartPollersUnreachable=1
# Number of pre-forked instances of trappers
# Default value is 5
# This parameter must be between 0 and 255
StartTrappers=5
# Number of pre-forked instances of ICMP pingers
# Default value is 1
# This parameter must be between 0 and 255
StartPingers=1
# Number of pre-forked instances of discoverers
# Default value is 1
# This parameter must be between 0 and 255
StartDiscoverers=1
# Number of pre-forked instances of HTTP pollers
# Default value is 1
# This parameter must be between 0 and 255
#StartHTTPPollers=1

@ -0,0 +1,16 @@
# Listen port for trapper. Default port number is 10051. This parameter
# must be between 1024 and 32767
{
my $port = ${'zabbix-proxy'}{'TCPPort'} || '10051';
$OUT .= "ListenPort=$port\n";
}
# Source IP address for outgouing connections
#SourceIP=
# Listen interface for trapper. Trapper will listen all network interfaces
# if this parameter is missing.
#ListenIP=127.0.0.1

@ -0,0 +1,34 @@
# How often ZABBIX will perform sending hearbeat message
# (in seconds)
# Default value is 60 seconds
# Set to 0 to disable heartbeat messages
# This parameter must be between 0 and 3600
#HeartbeatFrequency=60
# How often ZABBIX will perform sync configuration data
# (in seconds)
# Default value is 3600 seconds (1h)
# This parameter must be between 1 and 604800 (1 week)
#ConfigFrequency=3600
# How often ZABBIX will perform housekeeping procedure
# (in hours)
# Default value is 1 hour
# Housekeeping is removing unnecessary information from
# tables history, alert, and alarms
# This parameter must be between 1 and 24
#HousekeepingFrequency=1
# How often ZABBIX will try to send unsent alerts
# (in seconds)
# Default value is 30 seconds
DataSenderFrequency=30
# Uncomment this line to disable housekeeping procedure
#DisableHousekeeping=1
# Frequency of ICMP pings (item keys 'icmpping' and 'icmppingsec'). Defauls is 60 seconds.
#PingerFrequency=60

@ -0,0 +1,9 @@
# Local bufer size in hours. Proxy will keep collected data N hours.
# Default value is 0 hours
#ProxyLocalBuffer=0
# Offline buffer size in hours. It is used when server is not available.
# Older data is removed.
# Default value is 1 hours
ProxyOfflineBuffer=24

@ -0,0 +1,9 @@
# Specifies debug level
# 0 - debug is not created
# 1 - critical information
# 2 - error information
# 3 - warnings (default)
# 4 - for debugging (produces lots of information)
DebugLevel=3

@ -0,0 +1,17 @@
# Specifies how long we wait for agent response (in sec)
# Must be between 1 and 30
Timeout=5
# Specifies how many seconds trapper may spend processing new data
# Must be between 1 and 30
#TrapperTimeout=5
# After how many seconds of unreachability treat a host as unavailable
#UnreachablePeriod=45
# How ofter check host for availability during the unreachability period
#UnavailableDelay=15
# How ofter check host for availability during the unavailability period
#UnavailableDelay=60

@ -0,0 +1,13 @@
# Name of PID file
PidFile=/var/run/zabbix/zabbix_proxy.pid
# Name of log file
# If not set, syslog is used
LogFile=/var/log/zabbix/zabbix_proxy.log
# Maximum size of log file in MB. Set to 0 to disable automatic log rotation.
LogFileSize=10

@ -0,0 +1,14 @@
# Location of external scripts
ExternalScripts=/var/lib/zabbix/bin
# Location of fping. Default is /usr/sbin/fping
# Make sure that fping binary has root permissions and SUID flag set
FpingLocation=/var/lib/zabbix/bin/fping
# Location of fping6. Default is /usr/sbin/fping6
# Make sure that fping binary has root permissions and SUID flag set
Fping6Location=/var/lib/zabbix/bin/fping6
# Temporary directory. Default is /tmp
TmpDir=/var/lib/zabbix/tmp

@ -0,0 +1,32 @@
# Database host name
# Default is localhost
DBHost=localhost
# Database name
# SQLite3 note: path to database file must be provided. DBUser and DBPassword are ignored.
{
my $dbname = ${'zabbix-proxy'}{'DbName'} || 'zabbix';
my $dbuser = ${'zabbix-proxy'}{'DbUser'} || 'zabbix';
my $dbpass = ${'zabbix-proxy'}{'DbPassword'} || 'secret';
$OUT .=<<"HERE";
DBName=$dbname
# Database user
DBUser=$dbuser
# Database password
# Comment this line if no password used
DBPassword=$dbpass
HERE
}
# Connect to MySQL using Unix socket?
DBSocket=/var/lib/mysql/mysql.sock

@ -0,0 +1,2 @@
#!/bin/sh
exec /usr/bin/sudo /usr/sbin/fping "$@"

@ -0,0 +1,2 @@
#!/bin/sh
exec /usr/bin/sudo /usr/sbin/fping6 "$@"

@ -0,0 +1,124 @@
# $Id: smeserver-zabbix-proxy.spec,v 1.8 2011/10/07 16:31:13 vip-ire Exp $
# Authority: vip-ire
# Name: Daniel Berteaud
%define name smeserver-zabbix-proxy
%define version 0.1
%define release 10
Summary: sme server integration of zabbix proxy
Name: %{name}
Version: %{version}
Release: %{release}%{?dist}
License: GNU GPL version 3
URL: http://www.zabbix.com/
Group: SMEserver/addon
Source: %{name}-%{version}.tar.gz
Patch0: smeserver-zabbix-server-0.1-sendxmpp_template.patch
Patch1: smeserver-zabbix-server-0.1-sendxmpp_shell_script_header.patch
Patch2: smeserver-zabbix-server-0.1-disable_web_access.patch
Patch3: smeserver-zabbix-server-0.1-mysql_db_pass.patch
Patch4: smeserver-zabbix-server-0.1-script_and_tmp_location.patch
Patch5: smeserver-zabbix-server-0.1-event_zabbix-server-update.patch
Patch6: smeserver-zabbix-proxy-0.1-server2proxy.patch
Patch7: smeserver-zabbix-proxy-0.1-createlinks_fixes.patch
Patch8: smeserver-zabbix-proxy-0.1-enable_db_cache.patch
Patch9: smeserver-zabbix-proxy-0.1-fixe_sudoers_expand_template.patch
Patch10: smeserver-zabbix-proxy-0.1-multiple_dbpatches.patch
Patch11: smeserver-zabbix-proxy-0.1-hostname_from_db.patch
Patch12: smeserver-zabbix-proxy-0.1-fix_proxy_directives.patch
BuildArchitectures: noarch
BuildRequires: e-smith-devtools
BuildRoot: /var/tmp/%{name}-%{version}
Requires: e-smith-release >= 7.0
Requires: fping
Requires: zabbix-server-mysql
Requires: zabbix-proxy-mysql
Requires: smeserver-remoteuseraccess
Conflicts: smeserver-zabbix-server
AutoReqProv: no
%description
smserver integration of zabbix proxy
Zabbix is an entreprise-class open source distributed monitoring
solution
%changelog
* Fri Oct 07 2011 Daniel B. <daniel@firewall-services.com> 0.1-11
- Fixe 2 directives (needed for Zabbix 1.8.8)
* Thu Nov 25 2010 Daniel B. <daniel@firewall-services.com> 0.1-9
- Requires the mysql variant of server and proxy
* Tue Oct 19 2010 Daniel B. <daniel@firewall-services.com> 0.1-8
- Possibility to set Hostname from the DB
* Thu Apr 15 2010 Daniel B. <daniel@firewall-services.com> 0.1-7
- Support multiple dbpatches
* Mon Sep 28 2009 Daniel B. <daniel@firewall-services.com> 0.1-6
- Fixe /etc/sudoers template expension during zabbix-proxy-update event
* Tue Mar 03 2009 Daniel B. <daniel@firewall-services.com> 0.1-5
- Add smeserver-remoteuseraccess as a dependencie (sudoers template problem)
* Mon Mar 02 2009 Daniel B. <daniel@firewall-services.com> 0.1-4
- Disable DB cache as it seems to cause IPC problems
* Mon Mar 02 2009 Daniel B. <daniel@firewall-services.com> 0.1-3
- enable DB cache with StartDBSyncers directive
* Sun Mar 01 2009 Daniel B. <daniel@firewall-services.com> 0.1-2
- Fix permissions on /var/lib/zabbix/tmp
* Fri Feb 24 2009 Daniel B. <daniel@firewall-services.com> 0.1-1
- Fix createlinks
* Fri Feb 24 2009 Daniel B. <daniel@firewall-services.com> 0.1-0
- initial release
%prep
%setup
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
#%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%build
perl ./createlinks
%{__mkdir_p} root/var/lib/zabbix/tmp
%install
rm -rf $RPM_BUILD_ROOT
(cd root ; find . -depth -print | cpio -dump $RPM_BUILD_ROOT)
rm -f %{name}-%{version}-filelist
/sbin/e-smith/genfilelist $RPM_BUILD_ROOT \
--file /var/lib/zabbix/bin/fping 'attr(0750,root,zabbix)' \
--file /var/lib/zabbix/bin/fping6 'attr(0750,root,zabbix)' \
--dir /var/lib/zabbix/tmp 'attr(0755,zabbix,zabbix)' \
> %{name}-%{version}-filelist
%files -f %{name}-%{version}-filelist
%defattr(-,root,root)
%clean
rm -rf $RPM_BUILD_ROOT
%postun
#uninstall
if [ $1 = 0 ] ; then
/sbin/e-smith/db configuration setprop zabbix-proxy status disabled
/etc/init.d/zabbix-proxy stop
fi
true
Loading…
Cancel
Save