From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47883) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fVcjX-00083p-VS for guix-patches@gnu.org; Wed, 20 Jun 2018 09:01:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fVcjO-0002UV-Bi for guix-patches@gnu.org; Wed, 20 Jun 2018 09:01:12 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:49273) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fVcjO-0002UG-7K for guix-patches@gnu.org; Wed, 20 Jun 2018 09:01:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1fVcjO-0006Rh-0E for guix-patches@gnu.org; Wed, 20 Jun 2018 09:01:02 -0400 Subject: [bug#31911] [PATCH] services: Add prometheus-node-exporter-service-type. Resent-Message-ID: Received: from eggs.gnu.org ([2001:4830:134:3::10]:47178) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fVciR-00079X-Jz for guix-patches@gnu.org; Wed, 20 Jun 2018 09:00:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fVciM-0001Yp-V6 for guix-patches@gnu.org; Wed, 20 Jun 2018 09:00:03 -0400 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:54917) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fVciM-0001YU-NN for guix-patches@gnu.org; Wed, 20 Jun 2018 08:59:58 -0400 Received: by mail-wm0-x244.google.com with SMTP id o13-v6so5820030wmf.4 for ; Wed, 20 Jun 2018 05:59:58 -0700 (PDT) From: =?UTF-8?Q?G=C3=A1bor?= Boskovits Date: Wed, 20 Jun 2018 14:59:46 +0200 Message-Id: <20180620125946.7264-1-boskovits@gmail.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 31911@debbugs.gnu.org Cc: =?UTF-8?Q?G=C3=A1bor?= Boskovits * gnu/services/monitoring.scm (prometheus-node-exporter-service-type): New variable. (): New record type. (prometheus-node-exporter-shepherd-service): New procedure. * gnu/doc/guix.texi (Monitoring Services): Document it. --- doc/guix.texi | 32 ++++++++++++++++++++++++++++++++ gnu/services/monitoring.scm | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 1ecb11002..6a649c549 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -15570,6 +15570,38 @@ Specify the path of the base URL. This can be useful if @end table @end deftp +@subsubheading Prometheus Node Exporter Service +@cindex prometheus-node-exporter +Prometheus node exporter is a Prometheus exporter. It makes hardware and +operating system statistics provided by *NIX kernels available for the +Prometheus monitoring system. This service should be deployed on all +physical nodes and virtual machines, where monitoring these statistics is +desirable. + +@defvar {Scheme variable} prometheus-node-exporter-service-type +This is the service type for the +@uref{https://github.com/prometheus/node_exporter/, prometheus-node-exporter} +service, its value must be a @code{prometheus-node-exporter-configuration} +record as in this example: + +@example +(service prometheus-node-exporter-service-type + (prometheus-node-exporter-configuration + (web-listen-address ":9100"))) +@end example +@end defvar + +@deftp {Data Type} prometheus-node-exporter-configuration +Data type representing the configuration of @command{node_exporter}. + +@table @asis +@item @code{package} (default: @code{go-github-com-prometheus-node-exporter}) +The prometheus-node-exporter package to use. +@item @code{web-listen-address} (default: @code{":9100"}) +Bind the web interface to the specified address. + +@end table +@end deftp @node Kerberos Services @subsubsection Kerberos Services diff --git a/gnu/services/monitoring.scm b/gnu/services/monitoring.scm index 49a65db4b..2fc90c867 100644 --- a/gnu/services/monitoring.scm +++ b/gnu/services/monitoring.scm @@ -26,7 +26,9 @@ #:use-module (guix records) #:use-module (ice-9 match) #:export (darkstat-configuration - darkstat-service-type)) + prometheus-node-exporter-configuration + darkstat-service-type + prometheus-node-exporter-service-type)) ;;; @@ -89,3 +91,36 @@ HTTP.") (const %darkstat-accounts)) (service-extension shepherd-root-service-type (compose list darkstat-shepherd-service)))))) + +(define-record-type* + prometheus-node-exporter-configuration + make-prometheus-node-exporter-configuration + prometheus-node-exporter-configuration? + (package prometheus-node-exporter-configuration-package + (default go-github-com-prometheus-node-exporter)) + (web-listen-address prometheus-node-exporter-web-listen-address + (default ":9100"))) + +(define prometheus-node-exporter-shepherd-service + (match-lambda + (( $ + package web-listen-address) + (shepherd-service + (documentation "Prometheus node exporter.") + (provision '(prometheus-node-exporter)) + (requirement '(networking)) + (start #~(make-forkexec-constructor + (list #$(file-append package "/bin/node_exporter") + "--web.listen-address" #$web-listen-address))) + (stop #~(make-kill-destructor)))))) + +(define prometheus-node-exporter-service-type + (service-type + (name 'prometheus-node-exporter) + (description + "Run @command{node_exporter} to serve hardware and OS metrics to +prometheus.") + (extensions + (list (service-extension + shepherd-root-service-type + (compose list prometheus-node-exporter-shepherd-service)))))) -- 2.17.1