longview: Linode metrics collector

Longview is a perl script used for sending server metrics to Linode
virtual private server hosting.

+102
+62
pkgs/servers/monitoring/longview/default.nix
··· 1 + {stdenv, fetchFromGitHub, perl, perlPackages, makeWrapper, glibc }: 2 + 3 + stdenv.mkDerivation rec { 4 + version = "1.1.5pre"; 5 + name = "longview-${version}"; 6 + 7 + src = fetchFromGitHub { 8 + owner = "linode"; 9 + repo = "longview"; 10 + rev = "5bcc9b60896b72de2d14f046f911477c26eb70ba"; 11 + sha256 = "1i6va44bx2zfgbld7znf1slph0iqidlahq2xh3kd8q4lhvbrjn02"; 12 + }; 13 + 14 + patches = 15 + [ # log to systemd journal 16 + ./log-stdout.patch 17 + ]; 18 + 19 + postPatch = 20 + '' 21 + substituteInPlace Linode/Longview/Util.pm --replace /var/run/longview.pid /run/longview.pid 22 + ''; 23 + 24 + buildInputs = [ perl makeWrapper glibc ] 25 + ++ (with perlPackages; [ 26 + LWPUserAgent 27 + LWPProtocolHttps 28 + MozillaCA 29 + CryptSSLeay 30 + IOSocketInet6 31 + LinuxDistribution 32 + JSONPP 33 + JSON 34 + LogLogLite 35 + TryTiny 36 + DBI 37 + DBDmysql 38 + ]); 39 + 40 + buildPhase = "true"; 41 + installPhase = '' 42 + mkdir -p $out/bin $out/usr 43 + mv Linode $out 44 + ln -s ../Linode/Longview.pl $out/bin/longview 45 + for h in syscall.h sys/syscall.h asm/unistd.h asm/unistd_32.h asm/unistd_64.h bits/wordsize.h bits/syscall.h; do 46 + ${perl}/bin/h2ph -d $out ${glibc}/include/$h 47 + mkdir -p $out/usr/include/$(dirname $h) 48 + mv $out${glibc}/include/''${h%.h}.ph $out/usr/include/$(dirname $h) 49 + done 50 + wrapProgram $out/Linode/Longview.pl --prefix PATH : ${perl}/bin:$out/bin \ 51 + --suffix PERL5LIB : $out/Linode --suffix PERL5LIB : $PERL5LIB \ 52 + --suffix PERL5LIB : $out --suffix INC : $out 53 + ''; 54 + 55 + meta = with stdenv.lib; { 56 + homepage = https://www.linode.com/longview; 57 + description = "Longview collects all of your system-level metrics and sends them to Linode."; 58 + license = licenses.gpl2Plus; 59 + maintainers = [ maintainers.rvl ]; 60 + inherit version; 61 + }; 62 + }
+38
pkgs/servers/monitoring/longview/log-stdout.patch
··· 1 + diff -ru longview-5bcc9b60896b72de2d14f046f911477c26eb70ba-src.orig/Linode/Longview/Logger.pm longview-5bcc9b60896b72de2d14f046f911477c26eb70ba-src/Linode/Longview/Logger.pm 2 + --- longview-5bcc9b60896b72de2d14f046f911477c26eb70ba-src.orig/Linode/Longview/Logger.pm 2015-10-28 17:15:32.816515318 +0000 3 + +++ longview-5bcc9b60896b72de2d14f046f911477c26eb70ba-src/Linode/Longview/Logger.pm 2015-10-28 18:00:50.760332026 +0000 4 + @@ -26,9 +26,7 @@ 5 + my ( $self, $message ) = @_; 6 + 7 + my $ts = strftime( '%m/%d %T', localtime ); 8 + - $self->{logger}->write( 9 + - sprintf( '%s %s Longview[%i] - %s', $ts, uc($level), $$, $message ), 10 + - $levels->{$level} ); 11 + + printf( "%s %s Longview[%i] - %s\n", $ts, uc($level), $$, $message ); 12 + die "$message" if $level eq 'logdie'; 13 + }; 14 + } 15 + @@ -37,12 +35,6 @@ 16 + my ( $class, $level ) = @_; 17 + my $self = {}; 18 + 19 + - mkpath($LOGDIR) unless (-d $LOGDIR); 20 + - $self->{logger} 21 + - = Log::LogLite->new( $LOGDIR . 'longview.log', $level ) 22 + - or die "Couldn't create logger object: $!"; 23 + - $self->{logger}->template("<message>\n"); 24 + - 25 + return bless $self, $class; 26 + } 27 + 28 + diff -ru longview-5bcc9b60896b72de2d14f046f911477c26eb70ba-src.orig/Linode/Longview/Util.pm longview-5bcc9b60896b72de2d14f046f911477c26eb70ba-src/Linode/Longview/Util.pm 29 + --- longview-5bcc9b60896b72de2d14f046f911477c26eb70ba-src.orig/Linode/Longview/Util.pm 2015-10-28 17:15:32.816515318 +0000 30 + +++ longview-5bcc9b60896b72de2d14f046f911477c26eb70ba-src/Linode/Longview/Util.pm 2015-10-28 19:20:30.894314658 +0000 31 + @@ -225,7 +225,6 @@ 32 + #<<< perltidy ignore 33 + chdir '/' or $logger->logdie("Can't chdir to /: $!"); 34 + open STDIN, '<', '/dev/null' or $logger->logdie("Can't read /dev/null: $!"); 35 + - open STDOUT, '>>', '/dev/null' or $logger->logdie("Can't write to /dev/null: $!"); 36 + open STDERR, '>>', '/dev/null' or $logger->logdie("Can't write to /dev/null: $!"); 37 + tie *STDERR, "Linode::Longview::STDERRLogger"; 38 + defined( my $pid = fork ) or $logger->logdie("Can't fork: $!");
+2
pkgs/top-level/all-packages.nix
··· 2150 2150 2151 2151 logstalgia = callPackage ../tools/graphics/logstalgia {}; 2152 2152 2153 + longview = callPackage ../servers/monitoring/longview { }; 2154 + 2153 2155 lout = callPackage ../tools/typesetting/lout { }; 2154 2156 2155 2157 lrzip = callPackage ../tools/compression/lrzip { };