* Upstart jobs for the Zabbix agent and server daemons.
svn path=/nixos/trunk/; revision=11998
This commit is contained in:
parent
ebb43a3f67
commit
96a8dbfd58
@ -14,6 +14,7 @@
|
|||||||
avahi = 10;
|
avahi = 10;
|
||||||
portmap = 11;
|
portmap = 11;
|
||||||
atd = 12;
|
atd = 12;
|
||||||
|
zabbix = 13;
|
||||||
|
|
||||||
nixbld = 30000; # start of range of uids
|
nixbld = 30000; # start of range of uids
|
||||||
nobody = 65534;
|
nobody = 65534;
|
||||||
|
@ -1918,6 +1918,7 @@
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
mysql = {
|
mysql = {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
@ -1952,6 +1953,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
postgresql = {
|
postgresql = {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
@ -2009,6 +2011,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
openfire = {
|
openfire = {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
@ -2024,6 +2027,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
gpm = {
|
gpm = {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
@ -2039,6 +2043,28 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
zabbixAgent = {
|
||||||
|
enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "
|
||||||
|
Whether to run the Zabbix monitoring agent on this machine.
|
||||||
|
It will send monitoring data to a Zabbix server.
|
||||||
|
";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
zabbixServer = {
|
||||||
|
enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "
|
||||||
|
Whether to run the Zabbix server on this machine.
|
||||||
|
";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
installer = {
|
installer = {
|
||||||
|
@ -245,7 +245,7 @@ let
|
|||||||
# X server.
|
# X server.
|
||||||
++ optional config.services.xserver.enable
|
++ optional config.services.xserver.enable
|
||||||
(import ../upstart-jobs/xserver.nix {
|
(import ../upstart-jobs/xserver.nix {
|
||||||
inherit config pkgs;
|
inherit config pkgs kernelPackages;
|
||||||
fontDirectories = import ../system/fonts.nix {inherit pkgs config;};
|
fontDirectories = import ../system/fonts.nix {inherit pkgs config;};
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -377,6 +377,18 @@ let
|
|||||||
inherit config pkgs;
|
inherit config pkgs;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# Zabbix agent daemon.
|
||||||
|
++ optional config.services.zabbixAgent.enable
|
||||||
|
(import ../upstart-jobs/zabbix-agent.nix {
|
||||||
|
inherit config pkgs;
|
||||||
|
})
|
||||||
|
|
||||||
|
# Zabbix server daemon.
|
||||||
|
++ optional config.services.zabbixServer.enable
|
||||||
|
(import ../upstart-jobs/zabbix-server.nix {
|
||||||
|
inherit config pkgs;
|
||||||
|
})
|
||||||
|
|
||||||
# Handles the reboot/halt events.
|
# Handles the reboot/halt events.
|
||||||
++ (map
|
++ (map
|
||||||
(event: makeJob (import ../upstart-jobs/halt.nix {
|
(event: makeJob (import ../upstart-jobs/halt.nix {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ config, pkgs
|
{ config, pkgs, kernelPackages
|
||||||
|
|
||||||
, # List of font directories.
|
, # List of font directories.
|
||||||
fontDirectories
|
fontDirectories
|
||||||
@ -36,7 +36,7 @@ let
|
|||||||
|
|
||||||
|
|
||||||
modules =
|
modules =
|
||||||
optional (videoDriver == "nvidia") nvidiaDrivers #make sure it first loads the nvidia libs
|
optional (videoDriver == "nvidia") kernelPackages.nvidiaDrivers #make sure it first loads the nvidia libs
|
||||||
++ [
|
++ [
|
||||||
xorg.xorgserver
|
xorg.xorgserver
|
||||||
xorg.xf86inputkeyboard
|
xorg.xf86inputkeyboard
|
||||||
@ -352,7 +352,7 @@ rec {
|
|||||||
xorg.xset # used by startkde, non-essential
|
xorg.xset # used by startkde, non-essential
|
||||||
]
|
]
|
||||||
++ optional (videoDriver == "nvidia") [
|
++ optional (videoDriver == "nvidia") [
|
||||||
nvidiaDrivers
|
kernelPackages.nvidiaDrivers
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
@ -376,7 +376,7 @@ rec {
|
|||||||
rm -f /var/run/opengl-driver
|
rm -f /var/run/opengl-driver
|
||||||
${if videoDriver == "nvidia"
|
${if videoDriver == "nvidia"
|
||||||
then ''
|
then ''
|
||||||
ln -sf ${nvidiaDrivers} /var/run/opengl-driver
|
ln -sf ${kernelPackages.nvidiaDrivers} /var/run/opengl-driver
|
||||||
''
|
''
|
||||||
else if cfg.driSupport
|
else if cfg.driSupport
|
||||||
then "ln -sf ${pkgs.mesa} /var/run/opengl-driver"
|
then "ln -sf ${pkgs.mesa} /var/run/opengl-driver"
|
||||||
@ -393,7 +393,7 @@ rec {
|
|||||||
env XKB_BINDIR=${xorg.xkbcomp}/bin # Needed for the Xkb extension.
|
env XKB_BINDIR=${xorg.xkbcomp}/bin # Needed for the Xkb extension.
|
||||||
|
|
||||||
${if videoDriver == "nvidia"
|
${if videoDriver == "nvidia"
|
||||||
then "env LD_LIBRARY_PATH=${xorg.libX11}/lib:${xorg.libXext}/lib:${nvidiaDrivers}/lib"
|
then "env LD_LIBRARY_PATH=${xorg.libX11}/lib:${xorg.libXext}/lib:${kernelPackages.nvidiaDrivers}/lib"
|
||||||
else ""
|
else ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
60
upstart-jobs/zabbix-agent.nix
Normal file
60
upstart-jobs/zabbix-agent.nix
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
{config, pkgs}:
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
stateDir = "/var/run/zabbix";
|
||||||
|
|
||||||
|
logDir = "/var/log/zabbix";
|
||||||
|
|
||||||
|
pidFile = "${stateDir}/zabbix_agentd.pid";
|
||||||
|
|
||||||
|
configFile = pkgs.writeText "zabbix_agentd.conf" ''
|
||||||
|
Server = 127.0.0.1
|
||||||
|
|
||||||
|
LogFile = ${logDir}/zabbix_agentd
|
||||||
|
|
||||||
|
DebugLevel = 4
|
||||||
|
|
||||||
|
PidFile = ${pidFile}
|
||||||
|
|
||||||
|
StartAgents = 1
|
||||||
|
'';
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "zabbix-agent";
|
||||||
|
|
||||||
|
users = [
|
||||||
|
{ name = "zabbix";
|
||||||
|
uid = (import ../system/ids.nix).uids.zabbix;
|
||||||
|
description = "Zabbix daemon user";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
job = ''
|
||||||
|
description "Zabbix agent daemon"
|
||||||
|
|
||||||
|
start script
|
||||||
|
mkdir -m 0755 -p ${stateDir} ${logDir}
|
||||||
|
chown zabbix ${stateDir} ${logDir}
|
||||||
|
|
||||||
|
export PATH=${pkgs.nettools}/bin:$PATH
|
||||||
|
${pkgs.zabbixAgent}/sbin/zabbix_agentd --config ${configFile}
|
||||||
|
end script
|
||||||
|
|
||||||
|
respawn sleep 100000
|
||||||
|
|
||||||
|
stop script
|
||||||
|
# !!! this seems to leave processes behind.
|
||||||
|
#pid=$(cat ${pidFile})
|
||||||
|
#if test -n "$pid"; then
|
||||||
|
# kill $pid
|
||||||
|
#fi
|
||||||
|
|
||||||
|
# So instead kill the agent in a brutal fashion.
|
||||||
|
while ${pkgs.procps}/bin/pkill -u zabbix zabbix_agentd; do true; done
|
||||||
|
end script
|
||||||
|
'';
|
||||||
|
|
||||||
|
}
|
66
upstart-jobs/zabbix-server.nix
Normal file
66
upstart-jobs/zabbix-server.nix
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
{config, pkgs}:
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
stateDir = "/var/run/zabbix";
|
||||||
|
|
||||||
|
logDir = "/var/log/zabbix";
|
||||||
|
|
||||||
|
libDir = "/var/lib/zabbix";
|
||||||
|
|
||||||
|
pidFile = "${stateDir}/zabbix_server.pid";
|
||||||
|
|
||||||
|
configFile = pkgs.writeText "zabbix_server.conf" ''
|
||||||
|
LogFile = ${logDir}/zabbix_server
|
||||||
|
|
||||||
|
DebugLevel = 4
|
||||||
|
|
||||||
|
PidFile = ${pidFile}
|
||||||
|
|
||||||
|
DBName = zabbix
|
||||||
|
|
||||||
|
DBUser = zabbix
|
||||||
|
'';
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "zabbix-server";
|
||||||
|
|
||||||
|
users = [
|
||||||
|
{ name = "zabbix";
|
||||||
|
uid = (import ../system/ids.nix).uids.zabbix;
|
||||||
|
description = "Zabbix daemon user";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
job = ''
|
||||||
|
description "Zabbix server daemon"
|
||||||
|
|
||||||
|
start on postgresql/started
|
||||||
|
stop on shutdown
|
||||||
|
|
||||||
|
start script
|
||||||
|
mkdir -m 0755 -p ${stateDir} ${logDir} ${libDir}
|
||||||
|
chown zabbix ${stateDir} ${logDir} ${libDir}
|
||||||
|
|
||||||
|
if ! test -e "${libDir}/db-created"; then
|
||||||
|
${pkgs.postgresql}/bin/createuser --no-superuser --no-createdb --no-createrole zabbix || true
|
||||||
|
${pkgs.postgresql}/bin/createdb --owner zabbix zabbix || true
|
||||||
|
cat ${pkgs.zabbixServer}/share/zabbix/db/schema/postgresql.sql | ${pkgs.su}/bin/su -s "$SHELL" zabbix -c 'psql zabbix'
|
||||||
|
cat ${pkgs.zabbixServer}/share/zabbix/db/data/data.sql | ${pkgs.su}/bin/su -s "$SHELL" zabbix -c 'psql zabbix'
|
||||||
|
cat ${pkgs.zabbixServer}/share/zabbix/db/data/images_pgsql.sql | ${pkgs.su}/bin/su -s "$SHELL" zabbix -c 'psql zabbix'
|
||||||
|
fi
|
||||||
|
|
||||||
|
export PATH=${pkgs.nettools}/bin:$PATH
|
||||||
|
${pkgs.zabbixServer}/sbin/zabbix_server --config ${configFile}
|
||||||
|
end script
|
||||||
|
|
||||||
|
respawn sleep 100000
|
||||||
|
|
||||||
|
stop script
|
||||||
|
while ${pkgs.procps}/bin/pkill -u zabbix zabbix_server; do true; done
|
||||||
|
end script
|
||||||
|
'';
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user