net-mgmt/smartctl_exporter: New port.

smartctl_exporter is an exporter that exports smartctl json statistics
to Prometheus.
This commit is contained in:
Xin LI 2023-01-29 23:18:07 -08:00
parent 20b874de3a
commit 0263ada87b
5 changed files with 172 additions and 0 deletions

View File

@ -373,6 +373,7 @@
SUBDIR += sendip
SUBDIR += sipcalc
SUBDIR += sjitter
SUBDIR += smartctl_exporter
SUBDIR += smokeping
SUBDIR += snmp4nagios
SUBDIR += snmptt

View File

@ -0,0 +1,59 @@
PORTNAME= smartctl_exporter
PORTVERSION= 0.9.1
DISTVERSIONPREFIX= v
CATEGORIES= net-mgmt
MAINTAINER= delphij@FreeBSD.org
COMMENT= Prometheus metrics exporter for smartctl
WWW= https://github.com/prometheus-community/smartctl_exporter
LICENSE= LGPL3
USES= go:modules
USE_GITHUB= yes
GH_ACCOUNT= prometheus-community
USE_RC_SUBR= smartctl_exporter
RUN_DEPENDS+= smartctl:sysutils/smartmontools
GO_MODULES= github.com/prometheus-community/smartctl_exporter
GO_TARGET= ${PORTNAME}:${PREFIX}/libexec/${PORTNAME}
PLIST_FILES= libexec/${PORTNAME}
GH_TUPLE= \
alecthomas:kingpin:v2.2.6:alecthomas_kingpin/vendor/gopkg.in/alecthomas/kingpin.v2 \
alecthomas:template:fb15b899a751:alecthomas_template/vendor/github.com/alecthomas/template \
alecthomas:units:b94a6e3cc137:alecthomas_units/vendor/github.com/alecthomas/units \
beorn7:perks:v1.0.1:beorn7_perks/vendor/github.com/beorn7/perks \
cespare:xxhash:v2.1.2:cespare_xxhash_v2/vendor/github.com/cespare/xxhash/v2 \
coreos:go-systemd:v22.4.0:coreos_go_systemd_v22/vendor/github.com/coreos/go-systemd/v22 \
go-kit:log:v0.2.1:go_kit_log/vendor/github.com/go-kit/log \
go-logfmt:logfmt:v0.5.1:go_logfmt_logfmt/vendor/github.com/go-logfmt/logfmt \
go-yaml:yaml:v2.4.0:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \
go-yaml:yaml:v3.0.1:go_yaml_yaml_1/vendor/gopkg.in/yaml.v3 \
golang:appengine:v1.6.7:golang_appengine/vendor/google.golang.org/appengine \
golang:crypto:v0.1.0:golang_crypto/vendor/golang.org/x/crypto \
golang:net:v0.1.0:golang_net/vendor/golang.org/x/net \
golang:oauth2:v0.1.0:golang_oauth2/vendor/golang.org/x/oauth2 \
golang:protobuf:v1.5.2:golang_protobuf/vendor/github.com/golang/protobuf \
golang:sync:v0.1.0:golang_sync/vendor/golang.org/x/sync \
golang:sys:v0.1.0:golang_sys/vendor/golang.org/x/sys \
golang:text:v0.4.0:golang_text/vendor/golang.org/x/text \
jpillora:backoff:v1.0.0:jpillora_backoff/vendor/github.com/jpillora/backoff \
matttproud:golang_protobuf_extensions:v1.0.1:matttproud_golang_protobuf_extensions/vendor/github.com/matttproud/golang_protobuf_extensions \
mwitkow:go-conntrack:2f068394615f:mwitkow_go_conntrack/vendor/github.com/mwitkow/go-conntrack \
prometheus:client_golang:v1.13.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.37.0:prometheus_common/vendor/github.com/prometheus/common \
prometheus:exporter-toolkit:v0.8.1:prometheus_exporter_toolkit/vendor/github.com/prometheus/exporter-toolkit \
prometheus:procfs:v0.8.0:prometheus_procfs/vendor/github.com/prometheus/procfs \
protocolbuffers:protobuf-go:v1.28.1:protocolbuffers_protobuf_go/vendor/google.golang.org/protobuf \
tidwall:gjson:v1.14.3:tidwall_gjson/vendor/github.com/tidwall/gjson \
tidwall:match:v1.1.1:tidwall_match/vendor/github.com/tidwall/match \
tidwall:pretty:v1.2.0:tidwall_pretty/vendor/github.com/tidwall/pretty
pre-patch:
${REINPLACE_CMD} -i '' -e 's|/usr/sbin/smartctl|${LOCALBASE}/sbin/smartctl|g' \
${WRKSRC}/README.md ${WRKSRC}/main.go \
${WRKSRC}/gentoo/app-metrics/smartctl_exporter/files/smartctl_exporter.yaml
.include <bsd.port.mk>

View File

@ -0,0 +1,63 @@
TIMESTAMP = 1674106190
SHA256 (prometheus-community-smartctl_exporter-v0.9.1_GH0.tar.gz) = 1a65c6f5fd17f3e905d314ac48e387888c7eb656a19a7fafae88fbcdd5cf399a
SIZE (prometheus-community-smartctl_exporter-v0.9.1_GH0.tar.gz) = 41276
SHA256 (alecthomas-kingpin-v2.2.6_GH0.tar.gz) = 4624eae43489de8a71ea60efaf6744c581b6bd62909f7514c484c1ea0efaba5a
SIZE (alecthomas-kingpin-v2.2.6_GH0.tar.gz) = 44383
SHA256 (alecthomas-template-fb15b899a751_GH0.tar.gz) = 2e2a44375eca48ce941182504b5d13aa98182b9a3f64ace33bfda52208bd0f5e
SIZE (alecthomas-template-fb15b899a751_GH0.tar.gz) = 55339
SHA256 (alecthomas-units-b94a6e3cc137_GH0.tar.gz) = 85363142a53436bea696d297e5b5fcda6bc6a8104b1d7ba0db88ffee455b72e2
SIZE (alecthomas-units-b94a6e3cc137_GH0.tar.gz) = 6012
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.2_GH0.tar.gz) = 471399cfcf0b1bd188add8d34435b91e7011cedbfe76e29687803a9d74320352
SIZE (cespare-xxhash-v2.1.2_GH0.tar.gz) = 11244
SHA256 (coreos-go-systemd-v22.4.0_GH0.tar.gz) = a3ca62e2344ba0f6cb0df4cb0c6ffb62c3e24f894844fe87cfacdea6460129c3
SIZE (coreos-go-systemd-v22.4.0_GH0.tar.gz) = 73248
SHA256 (go-kit-log-v0.2.1_GH0.tar.gz) = b37718967f9cbdb3eea4aa2fa9420b7d329b6bab7f9b85f970db197257226152
SIZE (go-kit-log-v0.2.1_GH0.tar.gz) = 30579
SHA256 (go-logfmt-logfmt-v0.5.1_GH0.tar.gz) = a9a93f7cbb92a53a587fda196bc040264a625e76064495e95cb3e907f9a93499
SIZE (go-logfmt-logfmt-v0.5.1_GH0.tar.gz) = 12115
SHA256 (go-yaml-yaml-v2.4.0_GH0.tar.gz) = d8e94679e5fff6bd1a35e10241543929a5f3da44f701755babf99b3daf0faac0
SIZE (go-yaml-yaml-v2.4.0_GH0.tar.gz) = 73209
SHA256 (go-yaml-yaml-v3.0.1_GH0.tar.gz) = cf05411540d3e6ef8f1fd88434b34f94cedaceb540329031d80e23b74540c4e5
SIZE (go-yaml-yaml-v3.0.1_GH0.tar.gz) = 91173
SHA256 (golang-appengine-v1.6.7_GH0.tar.gz) = c623d81235f7c9699e299b328191d813337dd57dcc800d7afdb5130e8c321a8f
SIZE (golang-appengine-v1.6.7_GH0.tar.gz) = 333007
SHA256 (golang-crypto-v0.1.0_GH0.tar.gz) = 46d11e87a4df7825186ac5e4d6ac70959411906e899bcf261b2775e52a57c5b7
SIZE (golang-crypto-v0.1.0_GH0.tar.gz) = 1633075
SHA256 (golang-net-v0.1.0_GH0.tar.gz) = 084d67e34b660f3ea4f156d37b8baa04a8af30cfb4358eea9b7920af2e7808b1
SIZE (golang-net-v0.1.0_GH0.tar.gz) = 1239627
SHA256 (golang-oauth2-v0.1.0_GH0.tar.gz) = 03ed08fa2aafb581514af40375f5c2485859735f3f18220530fa70114469ae68
SIZE (golang-oauth2-v0.1.0_GH0.tar.gz) = 104824
SHA256 (golang-protobuf-v1.5.2_GH0.tar.gz) = 088cc0f3ba18fb8f9d00319568ff0af5a06d8925a6e6cb983bb837b4efb703b3
SIZE (golang-protobuf-v1.5.2_GH0.tar.gz) = 171702
SHA256 (golang-sync-v0.1.0_GH0.tar.gz) = 81056c07b5dc1077f2d6ac0f7ce3d4ef199a3ff85c319ab03dcff22fa9ba2183
SIZE (golang-sync-v0.1.0_GH0.tar.gz) = 19356
SHA256 (golang-sys-v0.1.0_GH0.tar.gz) = f36f3ce1a3adf2d9acc9dfff112a98c695ab320ae696ee6ffafe1608b0caff73
SIZE (golang-sys-v0.1.0_GH0.tar.gz) = 1409774
SHA256 (golang-text-v0.4.0_GH0.tar.gz) = 71988b75b6da29772aa1feb65727aa7de3698d2f718f9ea073cd3613e280f5f5
SIZE (golang-text-v0.4.0_GH0.tar.gz) = 8361656
SHA256 (jpillora-backoff-v1.0.0_GH0.tar.gz) = 611b29ce95acfa2997e3449762a3df68fcaa773db045535f26eb5c686106351f
SIZE (jpillora-backoff-v1.0.0_GH0.tar.gz) = 3507
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 (mwitkow-go-conntrack-2f068394615f_GH0.tar.gz) = 5bb72eaf9a4ffd7d0353fa6944951d244df89d879ac36d4b9860fd159162dd81
SIZE (mwitkow-go-conntrack-2f068394615f_GH0.tar.gz) = 17140
SHA256 (prometheus-client_golang-v1.13.1_GH0.tar.gz) = 4c19032fb90f4c866f80ef72a452e6a5a7b2c8b848bb7632118bc0dc51cd0629
SIZE (prometheus-client_golang-v1.13.1_GH0.tar.gz) = 219545
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.37.0_GH0.tar.gz) = 0ad5a62cb421952d92c97645d2aba8987d2a0de44c9c1fff607c016dca87b768
SIZE (prometheus-common-v0.37.0_GH0.tar.gz) = 148934
SHA256 (prometheus-exporter-toolkit-v0.8.1_GH0.tar.gz) = 2a939c6e1b6374da21def4eb8ab04021c8d524da5683515b4afb778dd677ec97
SIZE (prometheus-exporter-toolkit-v0.8.1_GH0.tar.gz) = 62005
SHA256 (prometheus-procfs-v0.8.0_GH0.tar.gz) = bb99fc8ee03c40374bd2f78b7907f1353bd57bd34fd080a9664d99983f24aeed
SIZE (prometheus-procfs-v0.8.0_GH0.tar.gz) = 194809
SHA256 (protocolbuffers-protobuf-go-v1.28.1_GH0.tar.gz) = df0b3dceeff0e1b6d029e60f076edd0d852cb8f3c2fe4fe3fe40164f16ec9b6b
SIZE (protocolbuffers-protobuf-go-v1.28.1_GH0.tar.gz) = 1280756
SHA256 (tidwall-gjson-v1.14.3_GH0.tar.gz) = 652d6427185c488d3612e4c0dabb186c7b2f9014f1b58f09fd5b5205db89e818
SIZE (tidwall-gjson-v1.14.3_GH0.tar.gz) = 58414
SHA256 (tidwall-match-v1.1.1_GH0.tar.gz) = 1fc2ff17ecdd82c7ba739b4f373b9df731a8e42517c70285c8bbf24dd9b3f2f0
SIZE (tidwall-match-v1.1.1_GH0.tar.gz) = 5931
SHA256 (tidwall-pretty-v1.2.0_GH0.tar.gz) = fda514a386aff71cf7a4639a8fb8e1133bf8f583eba902b3c844a176401fad7d
SIZE (tidwall-pretty-v1.2.0_GH0.tar.gz) = 11224

View File

@ -0,0 +1,48 @@
#!/bin/sh
# PROVIDE: smartctl_exporter
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# smartctl_exporter_enable (bool): Set to YES to enable smartctl_exporter, default is NO
# smartctl_exporter_user (string): Set user to run as, default is root
# smartctl_exporter_syslog (bool): Set to YES to use syslog, default is NO
#
# Use the following variables to override smartctl_exporter's defaults:
#
# smartctl_exporter_listen_address (string): Set address to listen on, default is localhost:9633
# smartctl_exporter_devices (string): Shell glob (like /dev/ada[0-9]) for all devices
# smartctl_exporter_log_level (string): Only log messages with the given severity or above. One of: [debug, info, warn, error]
# smartctl_exporter_log_format (string): Output format of log messages. One of: [logfmt, json]
. /etc/rc.subr
name=smartctl_exporter
rcvar=smartctl_exporter_enable
load_rc_config $name
: ${smartctl_exporter_enable:="NO"}
: ${smartctl_exporter_user:="root"}
: ${smartctl_exporter_listen_address:="localhost:9633"}
: ${smartctl_exporter_devices:="$(geom disk status -s | cut -f1 -d\ | sed -e s,^,/dev/,g)"}
: ${smartctl_exporter_log_level:=""}
: ${smartctl_exporter_log_format:=""}
pidfile=/var/run/smartctl_exporter.pid
command=/usr/sbin/daemon
command_args="-c -f -P ${pidfile} \
${smartctl_exporter_user:+-u "${smartctl_exporter_user}"} \
${smartctl_exporter_syslog:+-S} \
${smartctl_exporter_daemon} \
%%PREFIX%%/libexec/smartctl_exporter \
${smartctl_exporter_listen_address:+--web.listen-address="${smartctl_exporter_listen_address}"} \
${smartctl_exporter_devices:+$(for diskdev in $(echo "${smartctl_exporter_devices}"); do echo --smartctl.device="${diskdev}"; done | xargs )} \
${smartctl_exporter_log_level:+--log.level="${smartctl_exporter_log_level}"} \
${smartctl_exporter_log_format:+--log.format="${smartctl_exporter_log_format}"} \
${smartctl_exporter_args}"
run_rc_command "$1"

View File

@ -0,0 +1 @@
smartctl_exporter exports smartctl json metrics to Prometheus.