From 30dd00bbf97354ee81c417032008298e3ec09582 Mon Sep 17 00:00:00 2001 From: Jordan Bracco Date: Wed, 16 Mar 2022 19:26:32 +0000 Subject: new port: sysutils/prometheus-smartctl-exporter --- sysutils/prometheus-smartctl-exporter/Makefile | 39 ++++++++++++++++ sysutils/prometheus-smartctl-exporter/distinfo | 31 +++++++++++++ .../files/patch-options.go | 20 +++++++++ .../files/patch-smartctl__exporter.yaml | 22 +++++++++ .../files/prometheus-smartctl-exporter.in | 52 ++++++++++++++++++++++ sysutils/prometheus-smartctl-exporter/pkg-descr | 4 ++ sysutils/prometheus-smartctl-exporter/pkg-plist | 2 + 7 files changed, 170 insertions(+) create mode 100644 sysutils/prometheus-smartctl-exporter/Makefile create mode 100644 sysutils/prometheus-smartctl-exporter/distinfo create mode 100644 sysutils/prometheus-smartctl-exporter/files/patch-options.go create mode 100644 sysutils/prometheus-smartctl-exporter/files/patch-smartctl__exporter.yaml create mode 100755 sysutils/prometheus-smartctl-exporter/files/prometheus-smartctl-exporter.in create mode 100644 sysutils/prometheus-smartctl-exporter/pkg-descr create mode 100644 sysutils/prometheus-smartctl-exporter/pkg-plist diff --git a/sysutils/prometheus-smartctl-exporter/Makefile b/sysutils/prometheus-smartctl-exporter/Makefile new file mode 100644 index 000000000000..7fbd3598d495 --- /dev/null +++ b/sysutils/prometheus-smartctl-exporter/Makefile @@ -0,0 +1,39 @@ +PORTNAME= prometheus-smartctl-exporter +DISTVERSION= 0.6.a.20201014 +CATEGORIES= sysutils + +MAINTAINER= href@random.sh +COMMENT= Prometheus metrics exporter for smartmontools + +LICENSE= LGPL3 +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= go:modules +USE_GITHUB= yes +USE_RC_SUBR= ${PORTNAME} + +GH_ACCOUNT= prometheus-community +GH_PROJECT= smartctl_exporter +GH_TAGNAME= e27581d56ad80340fb076d3ce22cef337ed76679 +GH_TUPLE= \ + beorn7:perks:v1.0.1:beorn7_perks/vendor/github.com/beorn7/perks \ + cespare:xxhash:v2.1.1:cespare_xxhash_v2/vendor/github.com/cespare/xxhash/v2 \ + go-yaml:yaml:v2.3.0:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \ + golang:protobuf:v1.4.2:golang_protobuf/vendor/github.com/golang/protobuf \ + golang:sys:f1bc736245b1:golang_sys/vendor/golang.org/x/sys \ + matttproud:golang_protobuf_extensions:v1.0.1:matttproud_golang_protobuf_extensions/vendor/github.com/matttproud/golang_protobuf_extensions \ + prometheus:client_golang:v1.7.1:prometheus_client_golang/vendor/github.com/prometheus/client_golang \ + prometheus:client_model:v0.2.0:prometheus_client_model/vendor/github.com/prometheus/client_model \ + prometheus:common:v0.10.0:prometheus_common/vendor/github.com/prometheus/common \ + prometheus:procfs:v0.1.3:prometheus_procfs/vendor/github.com/prometheus/procfs \ + protocolbuffers:protobuf-go:v1.23.0:protocolbuffers_protobuf_go/vendor/google.golang.org/protobuf \ + tidwall:gjson:v1.6.0:tidwall_gjson/vendor/github.com/tidwall/gjson \ + tidwall:match:v1.0.1:tidwall_match/vendor/github.com/tidwall/match \ + tidwall:pretty:v1.0.0:tidwall_pretty/vendor/github.com/tidwall/pretty + +GO_TARGET= .:${PREFIX}/libexec/${PORTNAME} + +post-install: + ${INSTALL_DATA} ${WRKSRC}/smartctl_exporter.yaml ${STAGEDIR}${LOCALBASE}/etc/prometheus-smartctl-exporter.yml.sample + +.include diff --git a/sysutils/prometheus-smartctl-exporter/distinfo b/sysutils/prometheus-smartctl-exporter/distinfo new file mode 100644 index 000000000000..65c49f8a6271 --- /dev/null +++ b/sysutils/prometheus-smartctl-exporter/distinfo @@ -0,0 +1,31 @@ +TIMESTAMP = 1647454630 +SHA256 (prometheus-community-smartctl_exporter-0.6.a.20201014-e27581d56ad80340fb076d3ce22cef337ed76679_GH0.tar.gz) = d6adda1384fddd9f003d5282b09190ae3140f3fc91c5dfdc1700744218852644 +SIZE (prometheus-community-smartctl_exporter-0.6.a.20201014-e27581d56ad80340fb076d3ce22cef337ed76679_GH0.tar.gz) = 24891 +SHA256 (beorn7-perks-v1.0.1_GH0.tar.gz) = 98db84bb0224a26094e6adba91b7ee7a1a7ace28cb648d818f8e779e6a19f825 +SIZE (beorn7-perks-v1.0.1_GH0.tar.gz) = 10867 +SHA256 (cespare-xxhash-v2.1.1_GH0.tar.gz) = 0ee31178d2c5a1249be4e26294a2f428008dc4e1ecbbfbe47f74e41026df1148 +SIZE (cespare-xxhash-v2.1.1_GH0.tar.gz) = 9292 +SHA256 (go-yaml-yaml-v2.3.0_GH0.tar.gz) = 42027002bf258009d498600b04b8c9cbb29d2193185ea7bfa8fefe194fe72a07 +SIZE (go-yaml-yaml-v2.3.0_GH0.tar.gz) = 72816 +SHA256 (golang-protobuf-v1.4.2_GH0.tar.gz) = a1e486b3ed6f502c43e10cb28bde4e8f020a420ef9958d3fbe61801492c07c87 +SIZE (golang-protobuf-v1.4.2_GH0.tar.gz) = 171778 +SHA256 (golang-sys-f1bc736245b1_GH0.tar.gz) = 3d505599b75124b006f437147b838efc9c3c59cb95f9b545e3352160abb073aa +SIZE (golang-sys-f1bc736245b1_GH0.tar.gz) = 1054443 +SHA256 (matttproud-golang_protobuf_extensions-v1.0.1_GH0.tar.gz) = 2def0ee6f6b12b1efc0e3007d89f598608a072610e805c3655ea9d13c3ead49b +SIZE (matttproud-golang_protobuf_extensions-v1.0.1_GH0.tar.gz) = 37184 +SHA256 (prometheus-client_golang-v1.7.1_GH0.tar.gz) = e61fefe06b7ac561c77435c98336f4ccc8cee60420de3a39db6d09fb7b83e9ed +SIZE (prometheus-client_golang-v1.7.1_GH0.tar.gz) = 160050 +SHA256 (prometheus-client_model-v0.2.0_GH0.tar.gz) = 4ab1be9cdfa702d7f49beeb09a256bcc6a2aad55e8a0a37e7732a46934264e12 +SIZE (prometheus-client_model-v0.2.0_GH0.tar.gz) = 10986 +SHA256 (prometheus-common-v0.10.0_GH0.tar.gz) = 349381082ea8e66637c2d2475f1ae0e74ca04a7b91eb3b96817c261b87668fd3 +SIZE (prometheus-common-v0.10.0_GH0.tar.gz) = 107763 +SHA256 (prometheus-procfs-v0.1.3_GH0.tar.gz) = 0b0872058bfdef11d9942535c992420150724c3b5a912a48a8d2ea26ac39efa6 +SIZE (prometheus-procfs-v0.1.3_GH0.tar.gz) = 156868 +SHA256 (protocolbuffers-protobuf-go-v1.23.0_GH0.tar.gz) = e7266bedaa4f110216fce52ae533dc5eba475d3829bb0592e8876684e202ae1f +SIZE (protocolbuffers-protobuf-go-v1.23.0_GH0.tar.gz) = 1214648 +SHA256 (tidwall-gjson-v1.6.0_GH0.tar.gz) = 182c85373d19f27e09e17b987027718b3f1c753918a2f6c71b4019f02fcecc53 +SIZE (tidwall-gjson-v1.6.0_GH0.tar.gz) = 50674 +SHA256 (tidwall-match-v1.0.1_GH0.tar.gz) = e20457b7f9fbcdc60c239b4651e70b9a8caded8e5e09cd285078ba7f9c4e639f +SIZE (tidwall-match-v1.0.1_GH0.tar.gz) = 4367 +SHA256 (tidwall-pretty-v1.0.0_GH0.tar.gz) = 6c0288d56a8cd066977cfc98caa8a331c148a4cd98aae47a37819d4709bdf420 +SIZE (tidwall-pretty-v1.0.0_GH0.tar.gz) = 8824 diff --git a/sysutils/prometheus-smartctl-exporter/files/patch-options.go b/sysutils/prometheus-smartctl-exporter/files/patch-options.go new file mode 100644 index 000000000000..0bf25b9742b8 --- /dev/null +++ b/sysutils/prometheus-smartctl-exporter/files/patch-options.go @@ -0,0 +1,20 @@ +--- options.go.orig 2020-11-14 15:36:34 UTC ++++ options.go +@@ -32,7 +32,7 @@ type Options struct { + + // Parse options from yaml config file + func loadOptions() Options { +- configFile := flag.String("config", "/etc/smartctl_exporter.yaml", "Path to smartctl_exporter config file") ++ configFile := flag.String("config", "/usr/local/etc/prometheus-smartctl-exporter.yml", "Path to smartctl_exporter config file") + verbose := flag.Bool("verbose", false, "Verbose log output") + debug := flag.Bool("debug", false, "Debug log output") + version := flag.Bool("version", false, "Show application version and exit") +@@ -56,7 +56,7 @@ func loadOptions() Options { + BindTo: "9633", + URLPath: "/metrics", + FakeJSON: false, +- SMARTctlLocation: "/usr/sbin/smartctl", ++ SMARTctlLocation: "/usr/local/sbin/smartctl", + CollectPeriod: "60s", + Devices: []string{}, + }, diff --git a/sysutils/prometheus-smartctl-exporter/files/patch-smartctl__exporter.yaml b/sysutils/prometheus-smartctl-exporter/files/patch-smartctl__exporter.yaml new file mode 100644 index 000000000000..66682bc9fd2c --- /dev/null +++ b/sysutils/prometheus-smartctl-exporter/files/patch-smartctl__exporter.yaml @@ -0,0 +1,22 @@ +--- smartctl_exporter.yaml.orig 2020-11-14 15:36:34 UTC ++++ smartctl_exporter.yaml +@@ -2,18 +2,6 @@ smartctl_exporter: + bind_to: "0.0.0.0:9633" + url_path: "/metrics" + fake_json: no +- smartctl_location: /usr/sbin/smartctl + collect_not_more_than_period: 20s + devices: +- - /dev/sda +- - /dev/sdb +- - /dev/sdc +- - /dev/sdd +- - /dev/sde +- - /dev/sdf +- - /dev/sdg +- - /dev/sdh +- - /dev/sdi +- - /dev/sdj +- - /dev/sdk +- - /dev/sdl ++ - /dev/ada0 diff --git a/sysutils/prometheus-smartctl-exporter/files/prometheus-smartctl-exporter.in b/sysutils/prometheus-smartctl-exporter/files/prometheus-smartctl-exporter.in new file mode 100755 index 000000000000..5c1b08287051 --- /dev/null +++ b/sysutils/prometheus-smartctl-exporter/files/prometheus-smartctl-exporter.in @@ -0,0 +1,52 @@ +#!/bin/sh + +# PROVIDE: prometheus_smartctl_exporter +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf +# to enable this service: +# +# prometheus_smartctl_exporter_enable (bool): Set to NO by default. +# Set it to YES to enable prometheus_smartctl_exporter. +# prometheus_smartctl_exporter_user (string): Set user that prometheus_smartctl_exporter will run under +# Default is "nobody". +# prometheus_smartctl_exporter_group (string): Set group that prometheus_smartctl_exporter will run under +# Default is "nobody". +# prometheus_smartctl_exporter_args (string): Set extra arguments to pass to prometheus_smartctl_exporter +# Default is "". + +. /etc/rc.subr + +name=prometheus_smartctl_exporter +rcvar=prometheus_smartctl_exporter_enable + +load_rc_config $name + +: ${prometheus_smartctl_exporter_enable:="NO"} +: ${prometheus_smartctl_exporter_user:="root"} +: ${prometheus_smartctl_exporter_group:="operator"} +: ${prometheus_smartctl_exporter_args:=""} + + +pidfile=/var/run/prometheus-smartctl-exporter.pid +command="/usr/sbin/daemon" +procname="%%PREFIX%%/libexec/prometheus-smartctl-exporter" +command_args="-f -p ${pidfile} -T ${name} \ + /usr/bin/env ${procname} \ + ${prometheus_smartctl_exporter_args}" + +start_precmd=prometheus_smartctl_exporter_startprecmd + +prometheus_smartctl_exporter_startprecmd() +{ + if [ ! -e ${pidfile} ]; then + install \ + -o ${prometheus_smartctl_exporter_user} \ + -g ${prometheus_smartctl_exporter_group} \ + /dev/null ${pidfile}; + fi +} + +load_rc_config $name +run_rc_command "$1" diff --git a/sysutils/prometheus-smartctl-exporter/pkg-descr b/sysutils/prometheus-smartctl-exporter/pkg-descr new file mode 100644 index 000000000000..640317f89226 --- /dev/null +++ b/sysutils/prometheus-smartctl-exporter/pkg-descr @@ -0,0 +1,4 @@ +This is a exporter for the Prometheus metrics for SMARTMONTOOLS using +the `smartctl` command and JSON output. + +WWW: https://github.com/prometheus-community/smartctl_exporter diff --git a/sysutils/prometheus-smartctl-exporter/pkg-plist b/sysutils/prometheus-smartctl-exporter/pkg-plist new file mode 100644 index 000000000000..7f507bc6229f --- /dev/null +++ b/sysutils/prometheus-smartctl-exporter/pkg-plist @@ -0,0 +1,2 @@ +libexec/prometheus-smartctl-exporter +@sample etc/prometheus-smartctl-exporter.yml.sample -- cgit v1.2.3