Skip to content

Commit

Permalink
dd-agent: support jmx, needs a separate daemon nowadays.
Browse files Browse the repository at this point in the history
  • Loading branch information
rbvermaa committed Jul 29, 2016
1 parent b062b52 commit 1425a1f
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 2 deletions.
30 changes: 28 additions & 2 deletions nixos/modules/services/monitoring/dd-agent.nix
Expand Up @@ -72,6 +72,7 @@ let
postgresqlConfig = pkgs.writeText "postgres.yaml" cfg.postgresqlConfig;
nginxConfig = pkgs.writeText "nginx.yaml" cfg.nginxConfig;
mongoConfig = pkgs.writeText "mongo.yaml" cfg.mongoConfig;
jmxConfig = pkgs.writeText "jmx.yaml" cfg.jmxConfig;

etcfiles =
[ { source = ddConf;
Expand All @@ -94,6 +95,10 @@ let
(optional (cfg.mongoConfig != null)
{ source = mongoConfig;
target = "dd-agent/conf.d/mongo.yaml";
}) ++
(optional (cfg.jmxConfig != null)
{ source = jmxConfig;
target = "dd-agent/conf.d/jmx.yaml";
});

in {
Expand Down Expand Up @@ -141,6 +146,13 @@ in {
default = null;
type = types.uniq (types.nullOr types.string);
};

jmxConfig = mkOption {
description = "JMX integration configuration";
default = null;
type = types.uniq (types.nullOr types.string);
};

};

config = mkIf cfg.enable {
Expand All @@ -167,7 +179,7 @@ in {
Restart = "always";
RestartSec = 2;
};
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig ];
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig jmxConfig ];
};

systemd.services.dogstatsd = {
Expand All @@ -183,7 +195,21 @@ in {
Restart = "always";
RestartSec = 2;
};
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig ];
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig jmxConfig ];
};

systemd.services.dd-jmxfetch = lib.mkIf (cfg.jmxConfig != null) {
description = "Datadog JMX Fetcher";
path = [ pkgs."dd-agent" pkgs.python pkgs.sysstat pkgs.procps pkgs.jdk ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.dd-agent}/bin/dd-jmxfetch";
User = "datadog";
Group = "datadog";
Restart = "always";
RestartSec = 2;
};
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig jmxConfig ];
};

environment.etc = etcfiles;
Expand Down
8 changes: 8 additions & 0 deletions pkgs/tools/networking/dd-agent/default.nix
Expand Up @@ -36,12 +36,20 @@ stdenv.mkDerivation rec {
ln -s $out/agent/dogstatsd.py $out/bin/dogstatsd
ln -s $out/agent/ddagent.py $out/bin/dd-forwarder
cat > $out/bin/dd-jmxfetch <<EOF
#!/usr/bin/env bash
exec ${python}/bin/python $out/agent/jmxfetch.py $@
EOF
chmod a+x $out/bin/dd-jmxfetch
wrapProgram $out/bin/dd-forwarder \
--prefix PYTHONPATH : $PYTHONPATH
wrapProgram $out/bin/dd-agent \
--prefix PYTHONPATH : $PYTHONPATH
wrapProgram $out/bin/dogstatsd \
--prefix PYTHONPATH : $PYTHONPATH
wrapProgram $out/bin/dd-jmxfetch \
--prefix PYTHONPATH : $PYTHONPATH
patchShebangs $out
'';
Expand Down

0 comments on commit 1425a1f

Please sign in to comment.