diff --git a/nixos/modules/services/monitoring/graphite.nix b/nixos/modules/services/monitoring/graphite.nix index bbbbcbccb9be..2a572a6a065c 100644 --- a/nixos/modules/services/monitoring/graphite.nix +++ b/nixos/modules/services/monitoring/graphite.nix @@ -354,6 +354,16 @@ in { type = types.lines; }; }; + + beacon = { + enable = mkEnableOption "Whether to enable graphite beacon."; + + config = mkOption { + description = "Graphite beacon configuration."; + default = {}; + type = types.attrs; + }; + }; }; ###### implementation @@ -535,10 +545,25 @@ in { environment.systemPackages = [ pkgs.pythonPackages.graphite_pager ]; }) + (mkIf cfg.beacon.enable { + systemd.services.graphite-beacon = { + description = "Grpahite Beacon Alerting Daemon"; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = '' + ${pkgs.pythonPackages.graphite_beacon}/bin/graphite-beacon \ + --config ${pkgs.writeText "graphite-beacon.json" (builtins.toJSON cfg.beacon.config)} + ''; + User = "graphite"; + Group = "graphite"; + }; + }; + }) + (mkIf ( cfg.carbon.enableCache || cfg.carbon.enableAggregator || cfg.carbon.enableRelay || cfg.web.enable || cfg.api.enable || - cfg.seyren.enable || cfg.pager.enable + cfg.seyren.enable || cfg.pager.enable || cfg.beacon.enable ) { users.extraUsers = singleton { name = "graphite"; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 5d3ba25347be..9594b171e4bd 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4307,7 +4307,7 @@ let }; propagatedBuildInputs = with self; [ django_1_7 ]; - + # tests appear to be broken on 0.6.1 at least doCheck = ( version != "0.6.1" ); @@ -6956,12 +6956,12 @@ let nameparser = buildPythonPackage rec { name = "nameparser-${version}"; version = "0.3.4"; - + src = pkgs.fetchurl { url = "https://pypi.python.org/packages/source/n/nameparser/${name}.tar.gz"; sha256 = "1zi94m99ziwwd6kkip3w2xpnl05r2cfv9iq68inz7np81c3g8vag"; }; - + meta = { description = "A simple Python module for parsing human names into their individual components"; homepage = https://github.com/derek73/python-nameparser; @@ -13867,6 +13867,26 @@ let }; }; + graphite_beacon = buildPythonPackage rec { + name = "graphite_beacon-0.22.1"; + + src = pkgs.fetchurl { + url = "https://pypi.python.org/packages/source/g/graphite_beacon/${name}.tar.gz"; + md5 = "3d7b2bf8a41b6c3ec5ba2c14db321096"; + }; + + propagatedBuildInputs = [ self.tornado ]; + + preBuild = "> requirements.txt"; + + meta = { + description = "A simple alerting application for Graphite metrics"; + homepage = https://github.com/klen/graphite-beacon; + maintainers = [ maintainers.offline ]; + license = licenses.mit; + }; + }; + graphite_influxdb = buildPythonPackage rec { name = "graphite-influxdb-0.3"; @@ -14715,7 +14735,7 @@ let licences = [ licenses.mit licenses.gpl2 ]; }; }; - + dicttoxml = buildPythonPackage rec { name = "dicttoxml-1.6.4";