zabbix: zabbix.agent, zabbix.proxy-mysql, zabbix.proxy-pgsql, zabbix.proxy-sqlite, zabbix.server-mysql, zabbix.server-pgsql, zabbix.web: init at 3.0, 4.0, and 4.2

This commit is contained in:
Aaron Andersen 2019-07-11 18:37:02 -04:00
parent d22a133336
commit 9a4456fcc0
8 changed files with 268 additions and 119 deletions

View file

@ -1,41 +0,0 @@
{ stdenv, fetchurl, pcre, libiconv, openssl }:
let
version = "3.4.8";
branch = "3.4";
src = fetchurl {
url = "https://netix.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/${version}/zabbix-${version}.tar.gz";
sha256 = "cec14993d1ec2c9d8c51f6608c9408620f27174db92edc2347bafa7b841ccc07";
};
in
{
agent = stdenv.mkDerivation {
name = "zabbix-agent-${version}";
inherit src;
configureFlags = [
"--enable-agent"
"--with-libpcre=${pcre.dev}"
"--with-iconv=${libiconv}"
"--with-openssl=${openssl.dev}"
];
buildInputs = [ pcre libiconv openssl ];
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

@ -0,0 +1,38 @@
{ stdenv, fetchurl, pkgconfig, libiconv, openssl, pcre }:
import ./versions.nix ({ version, sha256 }:
stdenv.mkDerivation {
pname = "zabbix-agent";
inherit version;
src = fetchurl {
url = "mirror://sourceforge/zabbix/ZABBIX%20Latest%20Stable/${version}/zabbix-${version}.tar.gz";
inherit sha256;
};
nativeBuildInputs = [ pkgconfig ];
buildInputs = [
libiconv
openssl
pcre
];
configureFlags = [
"--enable-agent"
"--with-iconv"
"--with-libpcre"
"--with-openssl=${openssl.dev}"
];
postInstall = ''
cp conf/zabbix_agentd/*.conf $out/etc/zabbix_agentd.conf.d/
'';
meta = with stdenv.lib; {
description = "An enterprise-class open source distributed monitoring solution (client-side agent)";
homepage = "https://www.zabbix.com/";
license = licenses.gpl2;
maintainers = with maintainers; [ mmahut psyanticy ];
platforms = platforms.linux;
};
})

View file

@ -1,76 +0,0 @@
{ stdenv, fetchurl, pkgconfig, curl, openssl, zlib, pcre, libevent, mysql, libiconv, libxml2 }:
let
version = "4.0.9";
src = fetchurl {
url = "https://netix.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/${version}/zabbix-${version}.tar.gz";
sha256 = "aa0bc9b5e5ca8e1b49b7551e2c5d86e0342c8630cba3a0b0e0e5d9c846e784d1";
};
in
{
server = stdenv.mkDerivation {
name = "zabbix-${version}";
inherit src;
NIX_CFLAGS_COMPILE = "-L${mysql.connector-c}/lib/mysql -I${mysql.connector-c}/include/mysql";
configureFlags = [
"--enable-server"
"--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 = [ 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 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 database/mysql/schema.sql $out/share/zabbix/db/schema/mysql.sql
'';
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;
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 = http://www.zabbix.com/;
license = licenses.gpl2;
maintainers = [ maintainers.psyanticy ];
platforms = platforms.linux;
};
};
}

View file

@ -0,0 +1,79 @@
{ stdenv, fetchurl, pkgconfig, libevent, libiconv, openssl, pcre, zlib
, odbcSupport ? true, unixODBC
, snmpSupport ? true, net_snmp
, sshSupport ? true, libssh2
, sqliteSupport ? false, sqlite
, mysqlSupport ? false, mysql
, postgresqlSupport ? false, postgresql
}:
# ensure exactly one database type is selected
assert mysqlSupport -> !postgresqlSupport && !sqliteSupport;
assert postgresqlSupport -> !mysqlSupport && !sqliteSupport;
assert sqliteSupport -> !mysqlSupport && !postgresqlSupport;
let
inherit (stdenv.lib) optional optionalString;
in
import ./versions.nix ({ version, sha256 }:
stdenv.mkDerivation {
pname = "zabbix-proxy";
inherit version;
src = fetchurl {
url = "mirror://sourceforge/zabbix/ZABBIX%20Latest%20Stable/${version}/zabbix-${version}.tar.gz";
inherit sha256;
};
nativeBuildInputs = [ pkgconfig ];
buildInputs = [
libevent
libiconv
openssl
pcre
zlib
]
++ optional odbcSupport unixODBC
++ optional snmpSupport net_snmp
++ optional sqliteSupport sqlite
++ optional sshSupport libssh2
++ optional mysqlSupport mysql.connector-c
++ optional postgresqlSupport postgresql;
configureFlags = [
"--enable-proxy"
"--with-iconv"
"--with-libevent"
"--with-libpcre"
"--with-openssl=${openssl.dev}"
"--with-zlib=${zlib}"
]
++ optional odbcSupport "--with-unixodbc"
++ optional snmpSupport "--with-net-snmp"
++ optional sqliteSupport "--with-sqlite3=${sqlite.dev}"
++ optional sshSupport "--with-ssh2=${libssh2.dev}"
++ optional mysqlSupport "--with-mysql"
++ optional postgresqlSupport "--with-postgresql";
prePatch = ''
find database -name data.sql -exec sed -i 's|/usr/bin/||g' {} +
'';
postInstall = ''
mkdir -p $out/share/zabbix/database/
'' + optionalString sqliteSupport ''
mkdir -p $out/share/zabbix/database/sqlite3
cp -prvd database/sqlite3/*.sql $out/share/zabbix/database/sqlite3/
'' + optionalString postgresqlSupport ''
mkdir -p $out/share/zabbix/database/postgresql
cp -prvd database/postgresql/schema.sql $out/share/zabbix/database/postgresql/
'';
meta = with stdenv.lib; {
description = "An enterprise-class open source distributed monitoring solution (client-server proxy)";
homepage = "https://www.zabbix.com/";
license = licenses.gpl2;
maintainers = [ maintainers.mmahut ];
platforms = platforms.linux;
};
})

View file

@ -0,0 +1,86 @@
{ stdenv, fetchurl, pkgconfig, curl, libevent, libiconv, libxml2, openssl, pcre, zlib
, jabberSupport ? true, iksemel
, ldapSupport ? true, openldap
, odbcSupport ? true, unixODBC
, snmpSupport ? true, net_snmp
, sshSupport ? true, libssh2
, mysqlSupport ? false, mysql
, postgresqlSupport ? false, postgresql
}:
# ensure exactly one primary database type is selected
assert mysqlSupport -> !postgresqlSupport;
assert postgresqlSupport -> !mysqlSupport;
let
inherit (stdenv.lib) optional optionalString;
in
import ./versions.nix ({ version, sha256 }:
stdenv.mkDerivation {
pname = "zabbix-server";
inherit version;
src = fetchurl {
url = "mirror://sourceforge/zabbix/ZABBIX%20Latest%20Stable/${version}/zabbix-${version}.tar.gz";
inherit sha256;
};
nativeBuildInputs = [ pkgconfig ];
buildInputs = [
curl
libevent
libiconv
libxml2
openssl
pcre
zlib
]
++ optional odbcSupport unixODBC
++ optional jabberSupport iksemel
++ optional ldapSupport openldap
++ optional snmpSupport net_snmp
++ optional sshSupport libssh2
++ optional mysqlSupport mysql.connector-c
++ optional postgresqlSupport postgresql;
configureFlags = [
"--enable-server"
"--with-iconv"
"--with-libcurl"
"--with-libevent"
"--with-libpcre"
"--with-libxml2"
"--with-openssl=${openssl.dev}"
"--with-zlib=${zlib}"
]
++ optional odbcSupport "--with-unixodbc"
++ optional jabberSupport "--with-jabber"
++ optional ldapSupport "--with-ldap=${openldap.dev}"
++ optional snmpSupport "--with-net-snmp"
++ optional sshSupport "--with-ssh2=${libssh2.dev}"
++ optional mysqlSupport "--with-mysql"
++ optional postgresqlSupport "--with-postgresql";
prePatch = ''
find database -name data.sql -exec sed -i 's|/usr/bin/||g' {} +
'';
postInstall = ''
mkdir -p $out/share/zabbix/database/
cp -r include $out/
'' + optionalString mysqlSupport ''
mkdir -p $out/share/zabbix/database/mysql
cp -prvd database/mysql/*.sql $out/share/zabbix/database/mysql/
'' + optionalString postgresqlSupport ''
mkdir -p $out/share/zabbix/database/postgresql
cp -prvd database/postgresql/*.sql $out/share/zabbix/database/postgresql/
'';
meta = with stdenv.lib; {
description = "An enterprise-class open source distributed monitoring solution";
homepage = "https://www.zabbix.com/";
license = licenses.gpl2;
maintainers = with maintainers; [ mmahut psyanticy ];
platforms = platforms.linux;
};
})

View file

@ -0,0 +1,16 @@
generic: {
v42 = generic {
version = "4.2.3";
sha256 = "0865c1a9vcgg4syhp5133rw9v1h65lp0g1y2f758jb9x9ybrr01s";
};
v40 = generic {
version = "4.0.9";
sha256 = "1lc4wx3cing5w2qa18yb6232qd70hrfjq7jmnx4ip3nawnswj2xa";
};
v30 = generic {
version = "3.0.28";
sha256 = "16966danf5ww4lhjg5gx5bnpid8abxh2ymdg6k5mymrman5bcdjj";
};
}

View file

@ -0,0 +1,32 @@
{ stdenv, fetchurl, writeText }:
import ./versions.nix ({ version, sha256 }:
stdenv.mkDerivation rec {
pname = "zabbix-web";
inherit version;
src = fetchurl {
url = "mirror://sourceforge/zabbix/ZABBIX%20Latest%20Stable/${version}/zabbix-${version}.tar.gz";
inherit sha256;
};
phpConfig = writeText "zabbix.conf.php" ''
<?php
return require(getenv('ZABBIX_CONFIG'));
?>
'';
installPhase = ''
mkdir -p $out/share/zabbix/
cp -a frontends/php/. $out/share/zabbix/
cp ${phpConfig} $out/share/zabbix/conf/zabbix.conf.php
'';
meta = with stdenv.lib; {
description = "An enterprise-class open source distributed monitoring solution (web frontend)";
homepage = "https://www.zabbix.com/";
license = licenses.gpl2;
maintainers = [ maintainers.mmahut ];
platforms = platforms.linux;
};
})

View file

@ -14953,9 +14953,24 @@ in
youtrack = callPackage ../servers/jetbrains/youtrack.nix { };
zabbix = recurseIntoAttrs (callPackages ../servers/monitoring/zabbix {});
zabbixFor = version: rec {
agent = (callPackages ../servers/monitoring/zabbix/agent.nix {}).${version};
proxy-mysql = (callPackages ../servers/monitoring/zabbix/proxy.nix { mysqlSupport = true; }).${version};
proxy-pgsql = (callPackages ../servers/monitoring/zabbix/proxy.nix { postgresqlSupport = true; }).${version};
proxy-sqlite = (callPackages ../servers/monitoring/zabbix/proxy.nix { sqliteSupport = true; }).${version};
server-mysql = (callPackages ../servers/monitoring/zabbix/server.nix { mysqlSupport = true; }).${version};
server-pgsql = (callPackages ../servers/monitoring/zabbix/server.nix { postgresqlSupport = true; }).${version};
web = (callPackages ../servers/monitoring/zabbix/web.nix {}).${version};
zabbix34 = callPackage ../servers/monitoring/zabbix/3.4.nix { };
# backwards compatibility
server = server-pgsql;
};
zabbix42 = zabbixFor "v42";
zabbix40 = zabbixFor "v40";
zabbix30 = zabbixFor "v30";
zabbix = zabbix42;
zipkin = callPackage ../servers/monitoring/zipkin { };