diff --git a/telegraf/Dockerfile b/telegraf/Dockerfile index d0c6663..d0371b4 100755 --- a/telegraf/Dockerfile +++ b/telegraf/Dockerfile @@ -44,11 +44,6 @@ RUN set -ex && \ EXPOSE 8125/udp 8092/udp 8094 -COPY entrypoint.sh /entrypoint.sh -COPY settings.sh /settings.sh -ENTRYPOINT ["/entrypoint.sh"] -CMD ["telegraf"] - # Labels LABEL \ io.hass.name="${BUILD_NAME}" \ diff --git a/telegraf/config.yaml b/telegraf/config.yaml index ba3b698..628ed18 100644 --- a/telegraf/config.yaml +++ b/telegraf/config.yaml @@ -32,8 +32,10 @@ docker_api: true host_pid: true full_access: true options: - custom_conf: + configuration: location: "/config/telegraf.conf" + log_level: info schema: - custom_conf: + configuration: location: str + log_level: list(trace|debug|info|notice|warning|error|fatal)? \ No newline at end of file diff --git a/telegraf/entrypoint.sh b/telegraf/entrypoint.sh deleted file mode 100755 index f2f0b0c..0000000 --- a/telegraf/entrypoint.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -set -e - -bashio /settings.sh - -if [ "${1:0:1}" = '-' ]; then - set -- telegraf "$@" -fi - -if [ $EUID -ne 0 ]; then - exec "$@" -else - # Allow telegraf to send ICMP packets and bind to privliged ports - setcap cap_net_raw,cap_net_bind_service+ep /usr/bin/telegraf || echo "Failed to set additional capabilities on /usr/bin/telegraf" - - exec setpriv --reuid root --init-groups "$@" -fi \ No newline at end of file diff --git a/telegraf/rootfs/etc/conf-init.d/00-banner.sh b/telegraf/rootfs/etc/conf-init.d/00-banner.sh deleted file mode 100755 index c031ad8..0000000 --- a/telegraf/rootfs/etc/conf-init.d/00-banner.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/command/with-contenv bashio -# ============================================================================== -# Home Assistant Community Add-on: Base Images -# Displays a simple add-on banner on startup -# ============================================================================== -if bashio::supervisor.ping; then - bashio::log.blue \ - '-----------------------------------------------------------' - bashio::log.blue " Add-on: $(bashio::addon.name)" - bashio::log.blue " $(bashio::addon.description)" - bashio::log.blue \ - '-----------------------------------------------------------' - - bashio::log.blue " Add-on version: $(bashio::addon.version)" - if bashio::var.true "$(bashio::addon.update_available)"; then - bashio::log.magenta ' There is an update available for this add-on!' - bashio::log.magenta \ - " Latest add-on version: $(bashio::addon.version_latest)" - bashio::log.magenta ' Please consider upgrading as soon as possible.' - else - bashio::log.green ' You are running the latest version of this add-on.' - fi - - bashio::log.blue " System: $(bashio::info.operating_system)" \ - " ($(bashio::info.arch) / $(bashio::info.machine))" - bashio::log.blue " Home Assistant Core: $(bashio::info.homeassistant)" - bashio::log.blue " Home Assistant Supervisor: $(bashio::info.supervisor)" - - bashio::log.blue \ - '-----------------------------------------------------------' - bashio::log.blue \ - ' Please, share the above information when looking for help' - bashio::log.blue \ - ' or support in, e.g., GitHub, forums or the Discord chat.' - bashio::log.blue \ - '-----------------------------------------------------------' -fi \ No newline at end of file diff --git a/telegraf/rootfs/etc/conf-init.d/01-log-level.sh b/telegraf/rootfs/etc/conf-init.d/01-log-level.sh deleted file mode 100755 index 47b46eb..0000000 --- a/telegraf/rootfs/etc/conf-init.d/01-log-level.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/command/with-contenv bashio -# ============================================================================== -# Home Assistant Community Add-on: Base Images -# Sets the log level correctly -# ============================================================================== -declare log_level - -# Check if the log level configuration option exists -if bashio::config.exists log_level; then - - # Find the matching LOG_LEVEL - log_level=$(bashio::string.lower "$(bashio::config log_level)") - case "${log_level}" in - all) - log_level="${__BASHIO_LOG_LEVEL_ALL}" - ;; - trace) - log_level="${__BASHIO_LOG_LEVEL_TRACE}" - ;; - debug) - log_level="${__BASHIO_LOG_LEVEL_DEBUG}" - ;; - info) - log_level="${__BASHIO_LOG_LEVEL_INFO}" - ;; - notice) - log_level="${__BASHIO_LOG_LEVEL_NOTICE}" - ;; - warning) - log_level="${__BASHIO_LOG_LEVEL_WARNING}" - ;; - error) - log_level="${__BASHIO_LOG_LEVEL_ERROR}" - ;; - fatal) - log_level="${__BASHIO_LOG_LEVEL_FATAL}" - ;; - off) - log_level="${__BASHIO_LOG_LEVEL_OFF}" - ;; - *) - bashio::exit.nok "Unknown log_level: ${log_level}" - esac - - bashio::log.blue "Log level is set to ${__BASHIO_LOG_LEVELS[$log_level]}" -fi \ No newline at end of file diff --git a/telegraf/rootfs/etc/conf-init.d/02-set-timezone.sh b/telegraf/rootfs/etc/conf-init.d/02-set-timezone.sh deleted file mode 100755 index 35b0336..0000000 --- a/telegraf/rootfs/etc/conf-init.d/02-set-timezone.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/command/with-contenv bashio -# ============================================================================== -# Home Assistant Community Add-on: Base Images -# Configures the timezone -# ============================================================================== -if ! bashio::var.is_empty "${TZ}"; then - bashio::log.info "Configuring timezone" - - ln --symbolic --no-dereference --force "/usr/share/zoneinfo/${TZ}" /etc/localtime - echo "${TZ}" > /etc/timezone -fi \ No newline at end of file diff --git a/telegraf/rootfs/etc/services.d/telegraf/finish b/telegraf/rootfs/etc/services.d/telegraf/finish new file mode 100755 index 0000000..42da589 --- /dev/null +++ b/telegraf/rootfs/etc/services.d/telegraf/finish @@ -0,0 +1,15 @@ +#!/usr/bin/env bashio +# ============================================================================== +# Take down the S6 supervision tree when telegraf fails +# s6-overlay docs: https://github.com/just-containers/s6-overlay +# ============================================================================== + +declare APP_EXIT_CODE=${1} + +if [[ "${APP_EXIT_CODE}" -ne 0 ]] && [[ "${APP_EXIT_CODE}" -ne 256 ]]; then + bashio::log.warning "Halt add-on with exit code ${APP_EXIT_CODE}" + echo "${APP_EXIT_CODE}" > /run/s6-linux-init-container-results/exitcode + exec /run/s6/basedir/bin/halt +fi + +bashio::log.info "Service restart after closing" diff --git a/telegraf/rootfs/etc/services.d/telegraf/run b/telegraf/rootfs/etc/services.d/telegraf/run new file mode 100755 index 0000000..3fd8c30 --- /dev/null +++ b/telegraf/rootfs/etc/services.d/telegraf/run @@ -0,0 +1,27 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +# ============================================================================== +# Home Assistant Add-on: telegraf +# Runs telegraf +# ============================================================================== +declare log_level +bashio::log.info 'Starting telegraf...' +bashio::require.unprotected + +CONFIGURATION=$(bashio::config 'configuration.location') +bashio::log.info "Using configuration file ${CONFIGURATION}" +rm /etc/telegraf/telegraf.conf +cp "${CONFIGURATION}" /etc/telegraf/telegraf.conf + +if [ "${1:0:1}" = '-' ]; then + set -- telegraf "$@" +fi + +if [ $EUID -ne 0 ]; then + exec "$@" +else + # Allow telegraf to send ICMP packets and bind to privliged ports + setcap cap_net_raw,cap_net_bind_service+ep /usr/bin/telegraf || echo "Failed to set additional capabilities on /usr/bin/telegraf" + + exec setpriv --reuid root --init-groups "$@" +fi \ No newline at end of file diff --git a/telegraf/settings.sh b/telegraf/settings.sh deleted file mode 100755 index c1c28a9..0000000 --- a/telegraf/settings.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bashio -declare hostname -bashio::require.unprotected - -readonly CONFIG="/etc/telegraf/telegraf.conf" - -CUSTOM_CONF=$(bashio::config 'custom_conf.location') - -bashio::log.info "Using custom conf file" -rm /etc/telegraf/telegraf.conf -cp "${CUSTOM_CONF}" /etc/telegraf/telegraf.conf - -bashio::log.info "Finished updating config, Starting Telegraf" \ No newline at end of file