summary refs log tree commit diff
path: root/pkgs/tools/networking/dd-agent/5.nix
blob: 98902e9809b98013bca82253d92b350fd1e199af (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
{ stdenv, fetchFromGitHub, python
, unzip, makeWrapper }:
let
  python' = python.override {
    packageOverrides = self: super: {
      docker = self.buildPythonPackage rec {
        name = "docker-${version}";
        version = "1.10.6";

        src = fetchFromGitHub {
          owner = "docker";
          repo = "docker-py";
          rev = version;
          sha256 = "1awzpbrkh4fympqzddz5i3ml81b7f0i0nwkvbpmyxjjfqx6l0m4m";
        };

        propagatedBuildInputs = with self; [
          six
          requests
          websocket_client
          ipaddress
          backports_ssl_match_hostname
          docker_pycreds
          uptime
        ];

        # due to flake8
        doCheck = false;
      };

      pymongo = super.pymongo.overridePythonAttrs (oldAttrs: rec {
        version = "2.9.5";
        src = oldAttrs.src.override {
          inherit version;
          sha256 = "912516ac6a355d7624374a38337b8587afe3eb535c0a5456b3bd12df637a6e70";
        };
      });
    };
  };

in stdenv.mkDerivation rec {
  version = "5.11.2";
  pname = "dd-agent";

  src = fetchFromGitHub {
    owner  = "datadog";
    repo   = "dd-agent";
    rev    = version;
    sha256 = "1iqxvgpsqibqw3vk79158l2pnb6y4pjhjp2d6724lm5rpz4825lx";
  };

  patches = [ ./40103-iostat-fix.patch ];

  buildInputs = [
    unzip
    makeWrapper
  ] ++ (with python'.pkgs; [
    requests
    psycopg2
    psutil
    ntplib
    simplejson
    pyyaml
    pymongo
    python-etcd
    consul
    docker
  ]);
  propagatedBuildInputs = with python'.pkgs; [ python tornado ];

  buildCommand = ''
    mkdir -p $out/bin
    cp -R $src $out/agent
    chmod u+w -R $out
    (cd $out/agent; patchPhase)
    PYTHONPATH=$out/agent:$PYTHONPATH
    ln -s $out/agent/agent.py $out/bin/dd-agent
    ln -s $out/agent/dogstatsd.py $out/bin/dogstatsd
    ln -s $out/agent/ddagent.py $out/bin/dd-forwarder

    # Move out default conf.d so that /etc/dd-agent/conf.d is used
    mv $out/agent/conf.d $out/agent/conf.d-system

    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
  '';

  meta = {
    description = ''
      Event collector for the DataDog analysis service
      -- v5 Python implementation
    '';
    homepage    = https://www.datadoghq.com;
    license     = stdenv.lib.licenses.bsd3;
    platforms   = stdenv.lib.platforms.all;
    maintainers = with stdenv.lib.maintainers; [ thoughtpolice domenkozar ];
  };
}