zabbix:1.8 -> 4.0 | remove old packages

This commit is contained in:
PsyanticY 2019-06-18 17:45:02 +01:00
parent 1cafe467b1
commit 16f8a17416
5 changed files with 79 additions and 255 deletions

View file

@ -17,6 +17,8 @@ let
configFile = pkgs.writeText "zabbix_server.conf"
''
ListenPort = ${cfg.listenPort}
LogFile = ${logDir}/zabbix_server
PidFile = ${pidFile}
@ -25,18 +27,18 @@ let
DBHost = ${cfg.dbServer}
''}
DBName = zabbix
DBName = ${cfg.dbName}
DBUser = zabbix
DBUser = ${cfg.dbUser}
${optionalString (cfg.dbPassword != "") ''
DBPassword = ${cfg.dbPassword}
''}
DBPort = ${cfg.dbPort}
DBPassword = ${cfg.dbPassword}
${config.services.zabbixServer.extraConfig}
'';
useLocalPostgres = cfg.dbServer == "localhost" || cfg.dbServer == "";
useLocalMysql = cfg.dbServer == "localhost" || cfg.dbServer == "";
in
@ -64,11 +66,34 @@ in
};
services.zabbixServer.dbPassword = mkOption {
default = "";
type = types.str;
description = "Password used to connect to the database server.";
};
services.zabbixServer.dbUser = mkOption {
default = "zabbix";
type = types.str;
description = "User used to connect to the database server.";
};
services.zabbixServer.dbPort = mkOption {
default = "3306";
type = types.str;
description = "Port used to connect to the database server.";
};
services.zabbixServer.dbName = mkOption {
default = "zabbix";
type = types.str;
description = "Port used to connect to the database server.";
};
services.zabbixServer.listenPort = mkOption {
default = "10051";
type = types.str;
description = "Port used to listen to the agent.";
};
services.zabbixServer.extraConfig = mkOption {
default = "";
type = types.lines;
@ -76,14 +101,14 @@ in
Configuration that is injected verbatim into the configuration file.
'';
};
};
###### implementation
config = mkIf cfg.enable {
services.postgresql.enable = useLocalPostgres;
services.mysql.enable = useLocalMysql;
services.mysql.package = pkgs.mysql;
users.users = singleton
{ name = "zabbix";
@ -95,32 +120,28 @@ in
{ description = "Zabbix Server";
wantedBy = [ "multi-user.target" ];
after = optional useLocalPostgres "postgresql.service";
after = optional useLocalMysql "mysql.service";
preStart =
''
mkdir -m 0755 -p ${stateDir} ${logDir} ${libDir}
chown zabbix ${stateDir} ${logDir} ${libDir}
if ! test -e "${libDir}/db-created"; then
${pkgs.su}/bin/su -s "$SHELL" ${config.services.postgresql.superUser} -c '${pkgs.postgresql}/bin/createuser --no-superuser --no-createdb --no-createrole zabbix' || true
${pkgs.su}/bin/su -s "$SHELL" ${config.services.postgresql.superUser} -c '${pkgs.postgresql}/bin/createdb --owner zabbix zabbix' || true
cat ${pkgs.zabbix.server}/share/zabbix/db/schema/postgresql.sql | ${pkgs.su}/bin/su -s "$SHELL" zabbix -c '${pkgs.postgresql}/bin/psql zabbix'
cat ${pkgs.zabbix.server}/share/zabbix/db/data/images_pgsql.sql | ${pkgs.su}/bin/su -s "$SHELL" zabbix -c '${pkgs.postgresql}/bin/psql zabbix'
cat ${pkgs.zabbix.server}/share/zabbix/db/data/data.sql | ${pkgs.su}/bin/su -s "$SHELL" zabbix -c '${pkgs.postgresql}/bin/psql zabbix'
${lib.optionalString (useLocalMysql) ''
if ! test -e "${libDir}/db-created"; then
${pkgs.sudo}/bin/sudo -u ${config.services.mysql.user} ${pkgs.mysql}/bin/mysql -uroot -e 'CREATE DATABASE ${cfg.dbName}'
${pkgs.sudo}/bin/sudo -u ${config.services.mysql.user} ${pkgs.mysql}/bin/mysql -uroot -e "GRANT ALL ON ${cfg.dbName}.* TO ${cfg.dbUser}@localhost IDENTIFIED BY \"${cfg.dbPassword}\";"
cat ${pkgs.zabbix.server}/share/zabbix/db/schema/mysql.sql | ${pkgs.sudo}/bin/sudo -u zabbix ${pkgs.mysql}/bin/mysql -u${cfg.dbUser} -p${cfg.dbPassword} ${cfg.dbName}
cat ${pkgs.zabbix.server}/share/zabbix/db/data/images.sql | ${pkgs.sudo}/bin/sudo -u zabbix ${pkgs.mysql}/bin/mysql -u${cfg.dbUser} -p${cfg.dbPassword} ${cfg.dbName}
cat ${pkgs.zabbix.server}/share/zabbix/db/data/data.sql | ${pkgs.sudo}/bin/sudo -u zabbix ${pkgs.mysql}/bin/mysql -u${cfg.dbUser} -p${cfg.dbPassword} ${cfg.dbName}
touch "${libDir}/db-created"
fi
fi''}
'';
path = [ pkgs.nettools ];
serviceConfig.ExecStart = "@${pkgs.zabbix.server}/sbin/zabbix_server zabbix_server --config ${configFile}";
serviceConfig.ExecStart = "${pkgs.zabbix.server}/sbin/zabbix_server --config ${configFile}";
serviceConfig.Type = "forking";
serviceConfig.Restart = "always";
serviceConfig.RestartSec = 2;
serviceConfig.PIDFile = pidFile;
};
};
}

View file

@ -1,92 +0,0 @@
{ stdenv, fetchurl, pkgconfig, postgresql, curl, openssl, zlib
, enableJabber ? false, minmay ? null }:
assert enableJabber -> minmay != null;
let
version = "2.0.21";
branch = "2.0";
src = fetchurl {
url = "mirror://sourceforge/zabbix/zabbix-${version}.tar.gz";
sha256 = "14g22x2zy5xqnh2xg23xy5gjd49d1i8pks7pkidwdwa9acwgfx71";
};
preConfigure =
''
substituteInPlace ./configure \
--replace " -static" "" \
${stdenv.lib.optionalString (stdenv.cc.libc != null) ''
--replace /usr/include/iconv.h ${stdenv.lib.getDev stdenv.cc.libc}/include/iconv.h
''}
'';
in
{
recurseForDerivations = true;
server = stdenv.mkDerivation {
name = "zabbix-${version}";
inherit src preConfigure;
configureFlags = [
"--enable-agent"
"--enable-server"
"--with-postgresql"
"--with-libcurl"
"--with-gettext"
] ++ stdenv.lib.optional enableJabber "--with-jabber=${minmay}";
postPatch = ''
sed -i -e 's/iksemel/minmay/g' configure src/libs/zbxmedia/jabber.c
sed -i \
-e '/^static ikstransport/,/}/d' \
-e 's/iks_connect_with\(.*\), &zbx_iks_transport/mmay_connect_via\1/' \
-e 's/iks/mmay/g' -e 's/IKS/MMAY/g' src/libs/zbxmedia/jabber.c
'';
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ postgresql curl openssl zlib ];
postInstall =
''
mkdir -p $out/share/zabbix
cp -prvd frontends/php $out/share/zabbix/php
mkdir -p $out/share/zabbix/db/data
cp -prvd database/postgresql/data.sql $out/share/zabbix/db/data/data.sql
cp -prvd database/postgresql/images.sql $out/share/zabbix/db/data/images_pgsql.sql
mkdir -p $out/share/zabbix/db/schema
cp -prvd database/postgresql/schema.sql $out/share/zabbix/db/schema/postgresql.sql
'';
meta = {
inherit branch;
description = "An enterprise-class open source distributed monitoring solution";
homepage = https://www.zabbix.com/;
license = "GPL";
maintainers = [ stdenv.lib.maintainers.eelco ];
platforms = stdenv.lib.platforms.linux;
};
};
agent = stdenv.mkDerivation {
name = "zabbix-agent-${version}";
inherit src preConfigure;
configureFlags = [ "--enable-agent" ];
meta = with stdenv.lib; {
inherit branch;
description = "An enterprise-class open source distributed monitoring solution (client-side agent)";
homepage = https://www.zabbix.com/;
license = licenses.gpl2;
maintainers = [ maintainers.eelco ];
platforms = platforms.linux;
};
};
}

View file

@ -1,104 +0,0 @@
{ stdenv, fetchurl, pkgconfig, postgresql, curl, openssl, zlib
, net_snmp , libssh2, openldap
, enableJabber ? false, minmay ? null
, enableSnmp ? false
, enableSsh ? false
, enableLdap ? false
}:
assert enableJabber -> minmay != null;
let
version = "2.2.20";
branch = "2.2";
src = fetchurl {
url = "mirror://sourceforge/zabbix/zabbix-${version}.tar.gz";
sha256 = "00pfpyj3vydwx9dn0bklh1p5j0bp2awi4hvv4kgliyav8l0416hk";
};
preConfigure =
''
substituteInPlace ./configure \
--replace " -static" "" \
${stdenv.lib.optionalString (stdenv.cc.libc != null) ''
--replace /usr/include/iconv.h ${stdenv.lib.getDev stdenv.cc.libc}/include/iconv.h
''}
'';
in
{
recurseForDerivations = true;
server = stdenv.mkDerivation {
name = "zabbix-${version}";
inherit src preConfigure;
configureFlags = [
"--enable-agent"
"--enable-server"
"--with-postgresql"
"--with-libcurl"
"--with-gettext"
]
++ stdenv.lib.optional enableJabber "--with-jabber=${minmay}"
++ stdenv.lib.optional enableSnmp "--with-net-snmp"
++ stdenv.lib.optional enableSsh "--with-ssh2=${libssh2.dev}"
++ stdenv.lib.optional enableLdap "--with-ldap=${openldap.dev}";
postPatch = ''
sed -i -e 's/iksemel/minmay/g' configure src/libs/zbxmedia/jabber.c
sed -i \
-e '/^static ikstransport/,/}/d' \
-e 's/iks_connect_with\(.*\), &zbx_iks_transport/mmay_connect_via\1/' \
-e 's/iks/mmay/g' -e 's/IKS/MMAY/g' src/libs/zbxmedia/jabber.c
'';
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ postgresql curl openssl zlib ]
++ stdenv.lib.optional enableSnmp net_snmp
++ stdenv.lib.optional enableSsh libssh2
++ stdenv.lib.optional enableLdap openldap;
postInstall =
''
mkdir -p $out/share/zabbix
cp -prvd frontends/php $out/share/zabbix/php
mkdir -p $out/share/zabbix/db/data
cp -prvd database/postgresql/data.sql $out/share/zabbix/db/data/data.sql
cp -prvd database/postgresql/images.sql $out/share/zabbix/db/data/images_pgsql.sql
mkdir -p $out/share/zabbix/db/schema
cp -prvd database/postgresql/schema.sql $out/share/zabbix/db/schema/postgresql.sql
'';
meta = {
inherit branch;
description = "An enterprise-class open source distributed monitoring solution";
homepage = https://www.zabbix.com/;
license = "GPL";
maintainers = [ stdenv.lib.maintainers.eelco ];
platforms = stdenv.lib.platforms.linux;
};
};
agent = stdenv.mkDerivation {
name = "zabbix-agent-${version}";
inherit src preConfigure;
configureFlags = [ "--enable-agent" ];
meta = with stdenv.lib; {
inherit branch;
description = "An enterprise-class open source distributed monitoring solution (client-side agent)";
homepage = https://www.zabbix.com/;
license = licenses.gpl2;
maintainers = [ maintainers.eelco ];
platforms = platforms.linux;
};
};
}

View file

@ -1,23 +1,13 @@
{ stdenv, fetchurl, pkgconfig, postgresql, curl, openssl, zlib }:
{ stdenv, fetchurl, pkgconfig, curl, openssl, zlib, pcre, libevent, mysql, libiconv, libxml2 }:
let
version = "1.8.22";
version = "4.0.9";
src = fetchurl {
url = "mirror://sourceforge/zabbix/zabbix-${version}.tar.gz";
sha256 = "0cjj3c4j4b9sl3hgh1fck330z9q0gz2k68g227y0paal6k6f54g7";
url = "https://netix.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/${version}/zabbix-${version}.tar.gz";
sha256 = "aa0bc9b5e5ca8e1b49b7551e2c5d86e0342c8630cba3a0b0e0e5d9c846e784d1";
};
preConfigure =
''
substituteInPlace ./configure \
--replace " -static" "" \
${stdenv.lib.optionalString (stdenv.cc.libc != null) ''
--replace /usr/include/iconv.h ${stdenv.lib.getDev stdenv.cc.libc}/include/iconv.h
''}
'';
in
{
@ -25,51 +15,62 @@ in
server = stdenv.mkDerivation {
name = "zabbix-${version}";
inherit src preConfigure;
inherit src;
NIX_CFLAGS_COMPILE = "-L${mysql.connector-c}/lib/mysql -I${mysql.connector-c}/include/mysql";
configureFlags = [
"--enable-agent"
"--enable-server"
"--with-pgsql"
"--with-mysql"
"--with-libcurl"
"--with-libxml2"
"--with-zlib"
"--with-libpcre=${pcre.dev}"
"--with-libevent=${libevent.dev}"
"--with-iconv=${libiconv}"
"--with-openssl=${openssl.dev}"
];
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ postgresql curl openssl zlib ];
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ mysql curl openssl zlib pcre libxml2 libevent ] ;
postInstall =
''
mkdir -p $out/share/zabbix
cp -prvd frontends/php $out/share/zabbix/php
mkdir -p $out/share/zabbix/db/data
cp -prvd create/data/*.sql $out/share/zabbix/db/data
cp -prvd database/mysql/data.sql $out/share/zabbix/db/data/data.sql
cp -prvd database/mysql/images.sql $out/share/zabbix/db/data/images.sql
mkdir -p $out/share/zabbix/db/schema
cp -prvd create/schema/*.sql $out/share/zabbix/db/schema
cp -prvd database/mysql/schema.sql $out/share/zabbix/db/schema/mysql.sql
'';
meta = {
description = "An enterprise-class open source distributed monitoring solution";
homepage = https://www.zabbix.com/;
license = "GPL";
maintainers = [ stdenv.lib.maintainers.eelco ];
platforms = stdenv.lib.platforms.linux;
meta = with stdenv.lib; {
description = "An enterprise-class open source distributed monitoring solution (server)";
homepage = http://www.zabbix.com/;
license = licenses.gpl2;
maintainers = [ maintainers.psyanticy ];
platforms = platforms.linux;
};
};
agent = stdenv.mkDerivation {
name = "zabbix-agent-${version}";
inherit src preConfigure;
inherit src;
configureFlags = [ "--enable-agent" ];
configureFlags = [
"--enable-agent"
"--with-libpcre=${pcre.dev}"
"--with-iconv=${libiconv}"
"--with-openssl=${openssl.dev}"
];
buildInputs = [ pcre libiconv openssl ];
meta = with stdenv.lib; {
description = "An enterprise-class open source distributed monitoring solution (client-side agent)";
homepage = https://www.zabbix.com/;
homepage = http://www.zabbix.com/;
license = licenses.gpl2;
maintainers = [ maintainers.eelco ];
maintainers = [ maintainers.psyanticy ];
platforms = platforms.linux;
};
};
}
}

View file

@ -14901,8 +14901,6 @@ in
zabbix = recurseIntoAttrs (callPackages ../servers/monitoring/zabbix {});
zabbix20 = callPackage ../servers/monitoring/zabbix/2.0.nix { };
zabbix22 = callPackage ../servers/monitoring/zabbix/2.2.nix { };
zabbix34 = callPackage ../servers/monitoring/zabbix/3.4.nix { };
zipkin = callPackage ../servers/monitoring/zipkin { };