diff --git a/packages/addons/service/prometheus-node-exporter/changelog.txt b/packages/addons/service/prometheus-node-exporter/changelog.txt new file mode 100644 index 0000000000..ffbebe8438 --- /dev/null +++ b/packages/addons/service/prometheus-node-exporter/changelog.txt @@ -0,0 +1,2 @@ +100 +- Initial addon diff --git a/packages/addons/service/prometheus-node-exporter/icon/icon.png b/packages/addons/service/prometheus-node-exporter/icon/icon.png new file mode 100644 index 0000000000..f3d23b52b5 Binary files /dev/null and b/packages/addons/service/prometheus-node-exporter/icon/icon.png differ diff --git a/packages/addons/service/prometheus-node-exporter/package.mk b/packages/addons/service/prometheus-node-exporter/package.mk new file mode 100644 index 0000000000..850d7dc4d5 --- /dev/null +++ b/packages/addons/service/prometheus-node-exporter/package.mk @@ -0,0 +1,40 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="prometheus-node-exporter" +PKG_VERSION="1.2.2" +PKG_SHA256="3b7b710dad97d9d2b4cb8c3f166ee1c86f629cce59062b09d4fb22459163ec86" +PKG_REV="100" +PKG_LICENSE="Apache License 2.0" +PKG_SITE="https://github.com/prometheus/node_exporter" +PKG_URL="https://github.com/prometheus/node_exporter/archive/refs/tags/v${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain go:host systemd" +PKG_SECTION="service" +PKG_SHORTDESC="Prometheus exporter for machine metrics." +PKG_LONGDESC="Prometheus exporter for hardware and OS metrics exposed by the kernel." +PKG_TOOLCHAIN="manual" + +PKG_IS_ADDON="yes" +PKG_ADDON_NAME="Prometheus Node Exporter" +PKG_ADDON_TYPE="xbmc.service" + +configure_target() { + go_configure + + export LDFLAGS="-w -linkmode external -extldflags -Wl,--unresolved-symbols=ignore-in-shared-libs -extld ${CC} \ + -X github.com/prometheus/common/version.Version=${PKG_VERSION} \ + -X github.com/prometheus/common/version.Revision=${PKG_REV} \ + -X github.com/prometheus/common/version.Branch=master \ + -X github.com/prometheus/common/version.BuildUser=root@libreelec \ + -X github.com/prometheus/common/version.BuildDate=$(date '+%Y%m%d-%H:%M:%S')" +} + +make_target() { + ${GOLANG} build -a -ldflags "${LDFLAGS}" -o bin/prometheus-node-exporter -v +} + +addon() { + mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/bin + cp -P ${PKG_BUILD}/bin/prometheus-node-exporter ${ADDON_BUILD}/${PKG_ADDON_ID}/bin +} + diff --git a/packages/addons/service/prometheus-node-exporter/source/bin/prometheus-node-exporter.start b/packages/addons/service/prometheus-node-exporter/source/bin/prometheus-node-exporter.start new file mode 100644 index 0000000000..f51355a72d --- /dev/null +++ b/packages/addons/service/prometheus-node-exporter/source/bin/prometheus-node-exporter.start @@ -0,0 +1,83 @@ +#!/bin/sh + +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +. /etc/profile + +oe_setup_addon service.prometheus-node-exporter + +DAEMON_ARGS="" + +while read var opt ; do + eval [ \"\$${var}\" = "true" ] && DAEMON_ARGS="${DAEMON_ARGS} ${opt}" +done << EOF +WebDisableExporterMetrics --web.disable-exporter-metrics +CollectorArp --collector.arp +CollectorBcache --collector.bcache +CollectorBonding --collector.bonding +CollectorBtrfs --collector.btrfs +CollectorBuddyinfo --collector.buddyinfo +CollectorConntrack --collector.conntrack +CollectorCpu --collector.cpu +CollectorCpufreq --collector.cpufreq +CollectorDiskstats --collector.diskstats +CollectorDrbd --collector.drbd +CollectorEdac --collector.edac +CollectorEntropy --collector.entropy +CollectorEthtool --collector.ethtool +CollectorFibrechannel --collector.fibrechannel +CollectorFilefd --collector.filefd +CollectorFilesystem --collector.filesystem +CollectorHwmon --collector.hwmon +CollectorInfiniband --collector.infiniband +CollectorInterrupts --collector.interrupts +CollectorIpvs --collector.ipvs +CollectorKsmd --collector.ksmd +CollectorLoadavg --collector.loadavg +CollectorLogind --collector.logind +CollectorMdadm --collector.mdadm +CollectorMeminfo --collector.meminfo +CollectorMeminfoNuma --collector.meminfo_numa +CollectorMountstats --collector.mountstats +CollectorNetclass --collector.netclass +CollectorNetdev --collector.netdev +CollectorNetstat --collector.netstat +CollectorNetworkRoute --collector.network_route +CollectorNfs --collector.nfs +CollectorNfsd --collector.nfsd +CollectorNtp --collector.ntp +CollectorNvme --collector.nvme +CollectorPerf --collector.perf +CollectorPowersupplyclass --collector.powersupplyclass +CollectorPressure --collector.pressure +CollectorProcesses --collector.processes +CollectorQdisc --collector.qdisc +CollectorRapl --collector.rapl +CollectorRunit --collector.runit +CollectorSchedstat --collector.schedstat +CollectorSockstat --collector.sockstat +CollectorSoftnet --collector.softnet +CollectorStat --collector.stat +CollectorSupervisord --collector.supervisord +CollectorSystemd --collector.systemd +CollectorTapestats --collector.tapestats +CollectorTcpstat --collector.tcpstat +CollectorTextfile --collector.textfile +CollectorThermalZone --collector.thermal_zone +CollectorTime --collector.time +CollectorTimex --collector.timex +CollectorUdpQueues --collector.udp_queues +CollectorUname --collector.uname +CollectorVmstat --collector.vmstat +CollectorWifi --collector.wifi +CollectorXfs --collector.xfs +CollectorZfs --collector.zfs +CollectorZoneinfo --collector.zoneinfo +EOF + +/storage/.kodi/addons/service.prometheus-node-exporter/bin/prometheus-node-exporter --collector.disable-defaults \ + --web.listen-address=":$WebListenPort" \ + --web.telemetry-path="$WebTelemetryPath" \ + --web.max-requests=$WebMaxRequest \ + $DAEMON_ARGS diff --git a/packages/addons/service/prometheus-node-exporter/source/default.py b/packages/addons/service/prometheus-node-exporter/source/default.py new file mode 100644 index 0000000000..ef7b848bc3 --- /dev/null +++ b/packages/addons/service/prometheus-node-exporter/source/default.py @@ -0,0 +1,20 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +import subprocess +import xbmc +import xbmcaddon + + +class Monitor(xbmc.Monitor): + + def __init__(self, *args, **kwargs): + xbmc.Monitor.__init__(self) + self.id = xbmcaddon.Addon().getAddonInfo('id') + + def onSettingsChanged(self): + subprocess.call(['systemctl', 'restart', self.id]) + + +if __name__ == "__main__": + Monitor().waitForAbort() diff --git a/packages/addons/service/prometheus-node-exporter/source/resources/language/English/strings.po b/packages/addons/service/prometheus-node-exporter/source/resources/language/English/strings.po new file mode 100644 index 0000000000..66d231ff67 --- /dev/null +++ b/packages/addons/service/prometheus-node-exporter/source/resources/language/English/strings.po @@ -0,0 +1,274 @@ +# Kodi Media Center language file +# Addon Name: node_exporter +# Addon id: service.node_exporter +# Addon Provider: Team LibreELEC +msgid "" +msgstr "" + +msgctxt "#30000" +msgid "General" +msgstr "" + +msgctxt "#30001" +msgid "Listen Port" +msgstr "" + +msgctxt "#30002" +msgid "Metrics web path" +msgstr "" + +msgctxt "#30003" +msgid "Disable exporter self metrics" +msgstr "" + +msgctxt "#30004" +msgid "Max simultaneous request" +msgstr "" + +msgctxt "#30100" +msgid "Collectors" +msgstr "" + +msgctxt "#30101" +msgid "Arp" +msgstr "" + +msgctxt "#30102" +msgid "Bcache" +msgstr "" + +msgctxt "#30103" +msgid "Bonding" +msgstr "" + +msgctxt "#30104" +msgid "Btrfs" +msgstr "" + +msgctxt "#30105" +msgid "Buddyinfo" +msgstr "" + +msgctxt "#30106" +msgid "Conntrack" +msgstr "" + +msgctxt "#30107" +msgid "Cpu" +msgstr "" + +msgctxt "#30108" +msgid "Cpufreq" +msgstr "" + +msgctxt "#30109" +msgid "Diskstats" +msgstr "" + +msgctxt "#30110" +msgid "Drbd" +msgstr "" + +msgctxt "#30111" +msgid "Edac" +msgstr "" + +msgctxt "#30112" +msgid "Entropy" +msgstr "" + +msgctxt "#30113" +msgid "Ethtool" +msgstr "" + +msgctxt "#30114" +msgid "Fibrechannel" +msgstr "" + +msgctxt "#30115" +msgid "Filefd" +msgstr "" + +msgctxt "#30116" +msgid "Filesystem" +msgstr "" + +msgctxt "#30117" +msgid "Hwmon" +msgstr "" + +msgctxt "#30118" +msgid "Infiniband" +msgstr "" + +msgctxt "#30119" +msgid "Interrupts" +msgstr "" + +msgctxt "#30120" +msgid "Ipvs" +msgstr "" + +msgctxt "#30121" +msgid "Ksmd" +msgstr "" + +msgctxt "#30122" +msgid "Loadavg" +msgstr "" + +msgctxt "#30123" +msgid "Logind" +msgstr "" + +msgctxt "#30124" +msgid "Mdadm" +msgstr "" + +msgctxt "#30125" +msgid "Meminfo" +msgstr "" + +msgctxt "#30126" +msgid "MeminfoNuma" +msgstr "" + +msgctxt "#30127" +msgid "Mountstats" +msgstr "" + +msgctxt "#30128" +msgid "Netclass" +msgstr "" + +msgctxt "#30129" +msgid "Netdev" +msgstr "" + +msgctxt "#30130" +msgid "Netstat" +msgstr "" + +msgctxt "#30131" +msgid "Network Route" +msgstr "" + +msgctxt "#30132" +msgid "Nfs" +msgstr "" + +msgctxt "#30133" +msgid "Nfsd" +msgstr "" + +msgctxt "#30134" +msgid "Ntp" +msgstr "" + +msgctxt "#30135" +msgid "Nvme" +msgstr "" + +msgctxt "#30136" +msgid "Perf" +msgstr "" + +msgctxt "#30137" +msgid "Powersupplyclass" +msgstr "" + +msgctxt "#30138" +msgid "Pressure" +msgstr "" + +msgctxt "#30139" +msgid "Processes" +msgstr "" + +msgctxt "#30140" +msgid "Qdisc" +msgstr "" + +msgctxt "#30141" +msgid "Rapl" +msgstr "" + +msgctxt "#30142" +msgid "Runit" +msgstr "" + +msgctxt "#30143" +msgid "Schedstat" +msgstr "" + +msgctxt "#30144" +msgid "Sockstat" +msgstr "" + +msgctxt "#30145" +msgid "Softnet" +msgstr "" + +msgctxt "#30146" +msgid "Stat" +msgstr "" + +msgctxt "#30147" +msgid "Supervisord" +msgstr "" + +msgctxt "#30148" +msgid "Systemd" +msgstr "" + +msgctxt "#30149" +msgid "Tapestats" +msgstr "" + +msgctxt "#30150" +msgid "Tcpstat" +msgstr "" + +msgctxt "#30151" +msgid "Textfile" +msgstr "" + +msgctxt "#30152" +msgid "Thermal Zone" +msgstr "" + +msgctxt "#30153" +msgid "Time" +msgstr "" + +msgctxt "#30154" +msgid "Timex" +msgstr "" + +msgctxt "#30155" +msgid "Udp Queues" +msgstr "" + +msgctxt "#30156" +msgid "Uname" +msgstr "" + +msgctxt "#30157" +msgid "Vmstat" +msgstr "" + +msgctxt "#30158" +msgid "Wifi" +msgstr "" + +msgctxt "#30159" +msgid "Xfs" +msgstr "" + +msgctxt "#30160" +msgid "Zfs" +msgstr "" + +msgctxt "#30161" +msgid "Zoneinfo" +msgstr "" diff --git a/packages/addons/service/prometheus-node-exporter/source/resources/settings.xml b/packages/addons/service/prometheus-node-exporter/source/resources/settings.xml new file mode 100644 index 0000000000..367a25ea84 --- /dev/null +++ b/packages/addons/service/prometheus-node-exporter/source/resources/settings.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/addons/service/prometheus-node-exporter/source/settings-default.xml b/packages/addons/service/prometheus-node-exporter/source/settings-default.xml new file mode 100644 index 0000000000..4d48bd4178 --- /dev/null +++ b/packages/addons/service/prometheus-node-exporter/source/settings-default.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/addons/service/prometheus-node-exporter/source/system.d/service.prometheus-node-exporter.service b/packages/addons/service/prometheus-node-exporter/source/system.d/service.prometheus-node-exporter.service new file mode 100644 index 0000000000..73546606a5 --- /dev/null +++ b/packages/addons/service/prometheus-node-exporter/source/system.d/service.prometheus-node-exporter.service @@ -0,0 +1,11 @@ +[Unit] +Description=Prometheus Node Exporter service +After=network-online.target +Requires=network-online.target + +[Service] +ExecStart=/storage/.kodi/addons/service.prometheus-node-exporter/bin/prometheus-node-exporter.start +Restart=always + +[Install] +WantedBy=kodi.target