From 5bd412f18a3c006e97ad73d0cd25b172cb565b78 Mon Sep 17 00:00:00 2001 From: ai-dev Date: Wed, 30 Oct 2024 10:35:38 +0100 Subject: [PATCH] Add prometheus addons --- addon-prometheus-main/.gitignore | 0 addon-prometheus-main/.mdlrc | 1 + addon-prometheus-main/.yamllint | 66 +++++++++ addon-prometheus-main/LICENSE.md | 21 +++ addon-prometheus-main/README.md | 117 ++++++++++++++++ addon-prometheus-main/images/screenshot.png | Bin 0 -> 106428 bytes addon-prometheus-main/prometheus/.README.j2 | 62 +++++++++ addon-prometheus-main/prometheus/DOCS.md | 131 ++++++++++++++++++ addon-prometheus-main/prometheus/Dockerfile | 76 ++++++++++ addon-prometheus-main/prometheus/build.yaml | 8 ++ addon-prometheus-main/prometheus/config.yaml | 26 ++++ addon-prometheus-main/prometheus/icon.png | Bin 0 -> 15451 bytes addon-prometheus-main/prometheus/logo.png | Bin 0 -> 15451 bytes .../rootfs/etc/cont-init.d/prometheus.sh | 10 ++ .../rootfs/etc/prometheus/prometheus.yml | 40 ++++++ .../services.d/prometheus-configgen/finish | 11 ++ .../etc/services.d/prometheus-configgen/run | 13 ++ .../rootfs/etc/services.d/prometheus/finish | 11 ++ .../rootfs/etc/services.d/prometheus/run | 45 ++++++ .../rootfs/opt/prometheus-configgen/combiner | 100 +++++++++++++ .../prometheus-configgen/prometheus.template | 38 +++++ .../opt/prometheus-configgen/requirements.txt | 4 + 22 files changed, 780 insertions(+) create mode 100644 addon-prometheus-main/.gitignore create mode 100644 addon-prometheus-main/.mdlrc create mode 100644 addon-prometheus-main/.yamllint create mode 100644 addon-prometheus-main/LICENSE.md create mode 100644 addon-prometheus-main/README.md create mode 100644 addon-prometheus-main/images/screenshot.png create mode 100644 addon-prometheus-main/prometheus/.README.j2 create mode 100644 addon-prometheus-main/prometheus/DOCS.md create mode 100644 addon-prometheus-main/prometheus/Dockerfile create mode 100644 addon-prometheus-main/prometheus/build.yaml create mode 100644 addon-prometheus-main/prometheus/config.yaml create mode 100644 addon-prometheus-main/prometheus/icon.png create mode 100644 addon-prometheus-main/prometheus/logo.png create mode 100644 addon-prometheus-main/prometheus/rootfs/etc/cont-init.d/prometheus.sh create mode 100644 addon-prometheus-main/prometheus/rootfs/etc/prometheus/prometheus.yml create mode 100644 addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus-configgen/finish create mode 100644 addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus-configgen/run create mode 100644 addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus/finish create mode 100644 addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus/run create mode 100644 addon-prometheus-main/prometheus/rootfs/opt/prometheus-configgen/combiner create mode 100644 addon-prometheus-main/prometheus/rootfs/opt/prometheus-configgen/prometheus.template create mode 100644 addon-prometheus-main/prometheus/rootfs/opt/prometheus-configgen/requirements.txt diff --git a/addon-prometheus-main/.gitignore b/addon-prometheus-main/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/addon-prometheus-main/.mdlrc b/addon-prometheus-main/.mdlrc new file mode 100644 index 0000000..2b0128d --- /dev/null +++ b/addon-prometheus-main/.mdlrc @@ -0,0 +1 @@ +rules "~MD024" \ No newline at end of file diff --git a/addon-prometheus-main/.yamllint b/addon-prometheus-main/.yamllint new file mode 100644 index 0000000..f4bc5a4 --- /dev/null +++ b/addon-prometheus-main/.yamllint @@ -0,0 +1,66 @@ +--- +rules: + braces: + level: error + min-spaces-inside: 0 + max-spaces-inside: 1 + min-spaces-inside-empty: -1 + max-spaces-inside-empty: -1 + brackets: + level: error + min-spaces-inside: 0 + max-spaces-inside: 0 + min-spaces-inside-empty: -1 + max-spaces-inside-empty: -1 + colons: + level: error + max-spaces-before: 0 + max-spaces-after: 1 + commas: + level: error + max-spaces-before: 0 + min-spaces-after: 1 + max-spaces-after: 1 + comments: + level: error + require-starting-space: true + min-spaces-from-content: 2 + comments-indentation: + level: error + document-end: + level: error + present: false + document-start: + level: error + present: true + empty-lines: + level: error + max: 1 + max-start: 0 + max-end: 1 + hyphens: + level: error + max-spaces-after: 1 + indentation: + level: error + spaces: 2 + indent-sequences: true + check-multi-line-strings: false + key-duplicates: + level: error + line-length: + ignore: | + .github/support.yml + level: warning + max: 120 + allow-non-breakable-words: true + allow-non-breakable-inline-mappings: true + new-line-at-end-of-file: + level: error + new-lines: + level: error + type: unix + trailing-spaces: + level: error + truthy: + level: error diff --git a/addon-prometheus-main/LICENSE.md b/addon-prometheus-main/LICENSE.md new file mode 100644 index 0000000..58c66ee --- /dev/null +++ b/addon-prometheus-main/LICENSE.md @@ -0,0 +1,21 @@ +# MIT License + +Copyright (c) 2020-2022 Robbert Müller + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/addon-prometheus-main/README.md b/addon-prometheus-main/README.md new file mode 100644 index 0000000..f097648 --- /dev/null +++ b/addon-prometheus-main/README.md @@ -0,0 +1,117 @@ +# Home Assistant Community Add-on: Prometheus + +[![GitHub Release][releases-shield]][releases] +![Project Stage][project-stage-shield] +[![License][license-shield]](LICENSE.md) + +![Supports aarch64 Architecture][aarch64-shield] +![Supports amd64 Architecture][amd64-shield] +![Supports armhf Architecture][armhf-shield] +![Supports armv7 Architecture][armv7-shield] +![Supports i386 Architecture][i386-shield] + +[![GitLab CI][gitlabci-shield]][gitlabci] +![Project Maintenance][maintenance-shield] +[![GitHub Activity][commits-shield]][commits] + +[![Discord][discord-shield]][discord] +[![Community Forum][forum-shield]][forum] + +The open platform for beautiful analytics and monitoring. + +![Prometheus in the Home Assistant Frontend](images/screenshot.png) + +## About + +.... + +[:books: Read the full add-on documentation][docs] + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Contributing + +This is an active open-source project. We are always open to people who want to +use the code or contribute to it. + +We have set up a separate document containing our +[contribution guidelines](.github/CONTRIBUTING.md). + +Thank you for being involved! :heart_eyes: + +## Authors & contributors + +The original setup of this repository is by [Robbert Müller][mjrider] + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## We have got some Home Assistant add-ons for you + +Want some more functionality to your Home Assistant instance? + +We have created multiple add-ons for Home Assistant. For a full list, check out +our [GitHub Repository][repository]. + +## License + +MIT License + +Copyright (c) 2020-2022 Robbert Müller + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[commits-shield]: https://img.shields.io/github/commit-activity/y/hassio-addons/addon-prometheus.svg +[commits]: https://github.com/hassio-addons/addon-prometheus/commits/main +[contributors]: https://github.com/hassio-addons/addon-prometheus/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[docs]: https://github.com/hassio-addons/addon-prometheus/blob/main/prometheus/DOCS.md +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://example.net +[mjrider]: https://github.com/mjrider +[gitlabci-shield]: https://gitlab.com/hassio-addons/addon-prometheus/badges/master/pipeline.svg +[gitlabci]: https://gitlab.com/hassio-addons/addon-prometheus/pipelines +[i386-shield]: https://img.shields.io/badge/i386-no-red.svg +[issue]: https://github.com/hassio-addons/addon-prometheus/issues +[license-shield]: https://img.shields.io/github/license/hassio-addons/addon-prometheus.svg +[maintenance-shield]: https://img.shields.io/maintenance/yes/2022.svg +[project-stage-shield]: https://img.shields.io/badge/project%20stage-Development-yellowgreen.svg +[reddit]: https://reddit.com/r/homeassistant +[releases-shield]: https://img.shields.io/github/release/hassio-addons/addon-prometheus.svg +[releases]: https://github.com/hassio-addons/addon-prometheus/releases +[repository]: https://github.com/hassio-addons/repository diff --git a/addon-prometheus-main/images/screenshot.png b/addon-prometheus-main/images/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..50b754562faec3122d2383bee5f84b0fc4aa695b GIT binary patch literal 106428 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 P@cCz?m83Ey&)@tXI~Cve literal 0 HcmV?d00001 diff --git a/addon-prometheus-main/prometheus/.README.j2 b/addon-prometheus-main/prometheus/.README.j2 new file mode 100644 index 0000000..02437fe --- /dev/null +++ b/addon-prometheus-main/prometheus/.README.j2 @@ -0,0 +1,62 @@ +# Home Assistant Community Add-on: Prometheus + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +The open platform for beautiful analytics and monitoring. + +## About + +... + +![Prometheus in the Home Assistant Frontend][screenshot] + +{% if channel == "edge" %} +## WARNING! THIS IS AN EDGE VERSION! + +This Home Assistant Add-ons repository contains edge builds of add-ons. +Edge builds add-ons are based upon the latest development version. + +- They may not work at all. +- They might stop working at any time. +- They could have a negative impact on your system. + +This repository was created for: + +- Anybody willing to test. +- Anybody interested in trying out upcoming add-ons or add-on features. +- Developers. + +If you are more interested in stable releases of our add-ons: + + + +{% endif %} +{% if channel == "beta" %} +## WARNING! THIS IS A BETA VERSION! + +This Home Assistant Add-ons repository contains beta releases of add-ons. + +- They might stop working at any time. +- They could have a negative impact on your system. + +This repository was created for: + +- Anybody willing to test. +- Anybody interested in trying out upcoming add-ons or add-on features. + +If you are more interested in stable releases of our add-ons: + + + +{% endif %} +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://example.org +[maintenance-shield]: https://img.shields.io/maintenance/yes/2022.svg +[project-stage-shield]: https://img.shields.io/badge/project%20stage-Development-yellowgreen.svg +[release-shield]: https://img.shields.io/badge/version-{{ version }}-blue.svg +[release]: {{ repo }}/tree/{{ version }} +[screenshot]: https://github.com/hassio-addons/addon-prometheus/raw/master/images/screenshot.png diff --git a/addon-prometheus-main/prometheus/DOCS.md b/addon-prometheus-main/prometheus/DOCS.md new file mode 100644 index 0000000..07974a7 --- /dev/null +++ b/addon-prometheus-main/prometheus/DOCS.md @@ -0,0 +1,131 @@ +# Home Assistant Community Add-on: Prometheus + +.... + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the "Prometheus" add-on in the Supervisor add-on store. +1. Install the "Prometheus" add-on. +1. Start the "Prometheus" add-on. +1. Check the logs of the "Prometheus" to see if everything went well. +1. Open the Web UI. + +**Note**: The addon supports both Ingress and direct access, this is the default + +## Configuration + +There are no configuration options for the addon. + +To add additional scrape targets you need to create a file per target in /share/prometheus/targets. + +Example: + +```yaml +--- +job_name: "octoprint" +scrape_interval: 5s +metrics_path: "/plugin/prometheus_exporter/metrics" +params: + apikey: ["VERYSECRETAPIKEY"] +static_configs: + - targets: ["octoprint.example.org:5000"] +``` + +**Note**: _This is just an example, don't copy and paste it! Create your own!_ + +The job names `home-assistant` and `prometheus` are already defined by default. +For the `homeassistant` target you must add add the following to +the Home Assistant configuration: + +```yaml +prometheus: +``` + +Rules can be created under `/share/prometheus/rules/` + +The addon will reload the configuration if a valid configuration is available. +If not it will log errors in the addon log + +## Grafana + +Grafana can use prometheus as a datasource, to configure this go to grafana +and add a datasource. +The hostname to connect to is depending on the release you installed. +For stable this is `http://a0d7b954-prometheus:9090` + +## Known issues and limitations + +- Job name must be unique, but this has to be enforced by the user. +- no alert manager yet + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Robbert Müller][mjrider]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2020-2022 Robbert Müller + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +[contributors]: https://github.com/hassio-addons/addon-Prometheus/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://example.net +[mjrider]: https://github.com/mjrider +[issue]: https://github.com/hassio-addons/addon-prometheus/issues +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-prometheus/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/addon-prometheus-main/prometheus/Dockerfile b/addon-prometheus-main/prometheus/Dockerfile new file mode 100644 index 0000000..3e705bf --- /dev/null +++ b/addon-prometheus-main/prometheus/Dockerfile @@ -0,0 +1,76 @@ +ARG BUILD_FROM=ghcr.io/hassio-addons/base:16.3.4 +# hadolint ignore=DL3006 +FROM ${BUILD_FROM} + +# Set shell +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Setup base system +ARG BUILD_ARCH=amd64 +ENV PROMETHEUS_VERSION=2.55.0 + +# Copy root filesystem +COPY rootfs / + +# hadolint ignore=DL3003 +RUN \ + ARCH="${BUILD_ARCH}" \ + && if [ "${BUILD_ARCH}" = "aarch64" ]; then ARCH="arm64"; fi \ + \ + && apk --no-cache add \ + python3=3.10.5-r0 \ + py3-idna=3.3-r2 \ + py3-certifi=2021.10.8-r0 \ + py3-chardet=4.0.0-r3 \ + py3-yaml=6.0-r0 \ + py3-urllib3=1.26.9-r0 \ + py3-requests=2.27.1-r0 \ + && apk --no-cache add --virtual .builddeps \ + py-pip=22.1.1-r0 \ + \ + && curl -J -L -o /tmp/prometheus.tar.gz \ + "https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-${ARCH}.tar.gz" \ + && adduser -s /bin/false -D -H prometheus \ + && cd /tmp \ + && tar -xvf /tmp/prometheus.tar.gz \ + && mkdir -p /etc/prometheus \ + && cp prometheus-${PROMETHEUS_VERSION}.linux-${ARCH}/promtool /usr/local/bin/ \ + && cp prometheus-${PROMETHEUS_VERSION}.linux-${ARCH}/prometheus /usr/local/bin/ \ + && cp -R prometheus-${PROMETHEUS_VERSION}.linux-${ARCH}/console_libraries/ /etc/prometheus/ \ + && cp -R prometheus-${PROMETHEUS_VERSION}.linux-${ARCH}/consoles/ /etc/prometheus/ \ + && rm -r prometheus-${PROMETHEUS_VERSION}.linux-${ARCH} \ + && chown -R prometheus:prometheus /etc/prometheus \ + && pip3 install \ + --no-cache-dir \ + --prefer-binary \ + --find-links "https://wheels.home-assistant.io/alpine-3.15/${BUILD_ARCH}/" \ + -r /opt/prometheus-configgen/requirements.txt \ + \ + && apk --no-cache del .builddeps \ + && rm -f -r \ + /tmp/* + +# Build arguments +ARG BUILD_DATE +ARG BUILD_REF +ARG BUILD_VERSION + +# Labels +LABEL \ + io.hass.name="Prometheus" \ + io.hass.description="Cloud native metrics" \ + io.hass.arch="${BUILD_ARCH}" \ + io.hass.type="addon" \ + io.hass.version=${BUILD_VERSION} \ + maintainer="feres" \ + org.opencontainers.image.title="Prometheus" \ + org.opencontainers.image.description="Cloud native metrics" \ + org.opencontainers.image.vendor="Home Assistant local Add-ons" \ + org.opencontainers.image.authors="Feres" \ + org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.url="https://addons.community" \ + org.opencontainers.image.source="https://github.com/hassio-addons/addon-prometheus" \ + org.opencontainers.image.documentation="https://github.com/hassio-addons/addon-prometheus/blob/master/README.md" \ + org.opencontainers.image.created=${BUILD_DATE} \ + org.opencontainers.image.revision=${BUILD_REF} \ + org.opencontainers.image.version=${BUILD_VERSION} diff --git a/addon-prometheus-main/prometheus/build.yaml b/addon-prometheus-main/prometheus/build.yaml new file mode 100644 index 0000000..b88c410 --- /dev/null +++ b/addon-prometheus-main/prometheus/build.yaml @@ -0,0 +1,8 @@ +--- +build_from: + aarch64: ghcr.io/hassio-addons/base:16.3.4 + amd64: ghcr.io/hassio-addons/base:16.3.4 + armv7: ghcr.io/hassio-addons/base:16.3.4 +codenotary: + base_image: codenotary@frenck.dev + signer: codenotary@frenck.dev diff --git a/addon-prometheus-main/prometheus/config.yaml b/addon-prometheus-main/prometheus/config.yaml new file mode 100644 index 0000000..eeecb47 --- /dev/null +++ b/addon-prometheus-main/prometheus/config.yaml @@ -0,0 +1,26 @@ +--- +name: Prometheus +version: dev +slug: prometheus +description: Cloud native metrics +url: https://github.com/hassio-addons/addon-prometheus +codenotary: codenotary@frenck.dev +startup: services +ingress: true +ingress_port: 9090 +ingress_entry: graph +init: false +panel_icon: mdi:chart-timeline +panel_title: Prometheus +arch: + - aarch64 + - amd64 + - armv7 +hassio_api: true +homeassistant_api: true +map: + - share:rw +ports: + 9090/tcp: null +ports_description: + 9090/tcp: Not required for Ingress diff --git a/addon-prometheus-main/prometheus/icon.png b/addon-prometheus-main/prometheus/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c03fe508819d89be006d8662d6071b3f1e4c4619 GIT binary patch literal 15451 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ⅈK21-}b)Nkw`wM+?T{?O8Np+{4r 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ⅈK21-}b)Nkw`wM+?T{?O8Np+{4r zvuP0+?z6fDhPS7Z{of)AYyBoNUH|&HbhU7Zpd8iXnd{pM4Q!ghpdF410eSE*ofBoM z#^WOMTbX~d!{XflCbUW9ByLL0(Q=ZY&z(tths}L);U}g!WsSo+WsrHdcV^ZLYO@NQ zLn_~*EN|NBX5xzC=nQh@f)hT5%sYq>ol)&5id9Apg_mGi+z;U_h0iG}+xg z^i^=$bt67sp(!(6EQs!w1BWzL7W|$Uz>VzT+=fABvN<2Mb_bVpq;Y*B<|>=0_umd{ zml0)*q!ecwb0Aq8kQ3vejLK}}jP4l~w{qg#^Qhta2 zyiK?VvF@Hq%R{Pnlw|eBzpNYNJYE0nHxZ=p7T?M0*6d~k_dg!*w?Zn%$q zS;Bkyr(nInCVsi_}^40ksB^eD4r=pu;MDbX1z&KAo6_O0#<_JPpQ;M)QfC5aknd7 z4HR)Q9PiV%ied{sk>&W7_e$Uld}Z@yKF|DQMF_u{Bt+bi|m zx(5M5O$B%nY#hL?CTk!kIJ$7UWb6n+>ew}ms>z%96PJWvRuVMeQ{4>3z2zQh0+Fg9n zUjk_nm`o;)MbU{XGoHdSz8Jj1cE2IQ!CAC47}7N8B0JW%9dq#C`af5KKR^gi>96`k zCoQIcf1vH4YSc}|fN{6&-K+N{hfJ=EUHIRfVMl(P|MQF_LvSgM6P>x=-m;IDWCl;a zx&e9CV1)9qo%gUH#)$-@!P57ZJ=j1g{$ zm>j`D51-+dkP{bwoVM^?HMW1M%VQ;-8v-)^aClmht_{N#nE%6U+7qU`QKnR~wcpOI zA0w77+*d~R{h2UQ{#Ay=$0NDX`x*y>ysDY#%v>;h?LSEp7-xd98nM5^a&~lDF6(VH zHPpO-hVwNvjGG^1Ph`**`+dUjj!9uLpl=3faGGBeX$^SVKAT{DmZ)Y(#XcVGr5;}u zNYrgv##%m%KyiS0HD#t{o7QLP@7+{9{wYcvA(>yj-}4u~4%GSLTQp=&(ok%8Y$}Ms z0CF$}FT`kH-_fv47`7X^Fp!t_!O@WxMe>~?rJ=0@X&0@nc(1P1YpisUNw}PhxXc*C zq#Ka<$=CC2qG*9^o<2LTPj&}Xm0*b>se;d10|1{g8;q-gtqYh;54p>@-hQXM7 zcX@0SO9UTV?Fd3hH4phMYdQEEob5dPG2U%FCrV)c-;}yRXpy`^pEGW>g+{fxfH;W- zWjvOhbqYe9F*W}>K!6)0Yaq6?x?Eg3*y;N+#G}>eR(vLKyY9gRLWs03?}@4Qh_V`_ zLEHW-o2I%p+d=ta_xjA z0r1r=A)KOac%$)Cf*yD{XnwDW0Ym!4J(41R^0Crkff*R!rT<^GJC8;8a1{z-mX4T` zqeH>Qw&?ZMlXO_%0;;z?x+*q*rvVJ*a-eW5J;dMz%%jE_fBA3#Ju8p6Y(J3$VZ}Abu9(a6oW?syHIh*p0`s{ayv2yVIlx*U z%9Lu|KyLiGEaO22g=57_|1I>W1EY>#x(?F+Tgd(-K{jN&tM&W4t_oiApVcEV+B^Xj3+;!F=dqLI= zx`|4!l0cvAltql~pdRpoLx4{wu2@01)^zreT@o}l^4paVCaFnrPJEz}y?Bh$qj@6T zwxh}_xL;iQQZ|DfX14c5+bPF?VXI%(ip~YL?4MC2g|L}P7d)_#4yd@_V=)=5Wde>q z&p>QViQUn92rA%~j?hPAjcbyE{w${MVef~tKA*WAJVNf3RIAmZ0x%p@JHC?Ll5sUP^LuP6*hwqe#*A&A9 z1jJWR4l-~A^HF7kZq_Vqhac!3)qtDkV7+$c*!Psl2n^T|<}^Qi$E+rAP2dBD4zw|H zenUo3paOx?S#K3AB!xaCljsXGyHluLqB!FJZ~$r8(%$XP zWU|daeii(e`$r}NNd*_P4JiSy+reZ)iyq_q6jlL3!t0Al2m z+7Sgf#n>Tqs3?s~P|d$q=V2`Y-GpSp|{n?Wi47c~Jd;$@HSw|C7{mjC^0W zox6r}VHloPSitEq>rXVWBA~0kZb)~X_=KNz-)j)I{o!UJyjzwy)o?CmFNA1JT zU!m78;aIvGzUjq*ahQ6-(Fniv;6dmDh9D5)@+t9VDZqQpNwF7o$u2GUUuT(rdoH2nU^=sOT=AFvIrz2aWDkmr-j0ZlB1I->g zFDkE+*Izz?7uK34r`Q865TBEk-DX3wE-es>KUzYvJ{$6$;`i~D0rc&Z{}=L86TX`%qN250b11Zk`6>eD5)k+N;8sG)Oe?n$D4cb&_ zGa$h}RD*lBbBDT-$q?-}5euPJQ!+RyZd?<_PtZlbLjE1X#! z1x3bPQ*WNo<|l$G^HN{Aoak%zzGWbWkL9DZB794ZKnb_G_(xF zCp8alUMO+@AR0CCWAALJ#xK3enC+c5NAa>?rk9A^-KGe!jNKt> zPxdl0Q$`oKM-Irs^!qHIrn9|iWOLn%bhKaPxMt>{1#Y`d=>FKopThiGeJ#OJ@cY!` zzPLrNl%zr4(5>!lszTI(<4}CQ-Syh6mJ~PUQ^o7|=~%Ge5cj=$8a%!1yasa#!i&KE>ls~#SKfqn+7Lt|98sS(>qaUsYqbAh3BVG+)q2@-W?_|AP)FogW`K}CJyN7u@4mio}`qkB!4sRY~ zhyNL>H%bNf{W^&DQnM%^JQl@W0!eAypg^*RX`@f4_a4<`I4EKcD5 z-cpRI%&+nflhG?-&Q*5(Pvca#JZ{&bj8CNjbR)@dbhO`n@5J(263$p>ufE%w{#7{j8u-ttDu-|VD@Z`V zB$2#iU%VoMYRoV5MT-ZRv(S**MBt)8`bfhM^;Srak8~qwzNY(wmaJXU;G^?H zpWunh?Nz}^u4I6`zTKk=+O5H#HPm%+IIVHltCBqcuPfS7sw5nT4NZ6wvQ)lli?ECh zn{Fi+8x3~j%L=|xlb#H&fsTxBB#(`AV7kmu?O!BW>Ovc(7}DK$3DE*#g7#)j5JqwG z%YTP^ykF+NCR4Xt`!zQ;?HqM5JG9R{b?? zr5Ty(!g;OJOp#K6cEXkjJS?J*sQay;%U&A;PS4D}vBEDHah}6u?nc6IK-!2t$B}1? zzg5v_@jv)I(vFA-jEw$G+%)+j(v}+;eO&lR0NE9ATR*;PC@889Iw+SaDYVRNx_AQc zttoIzFaEQ5eF)~7!xmST*aHGOLS%mux!8PYOaVveC9C9(c>$Z4k)5~yRYv^i>r_8# zSDphH+DnGZ4k^Y@gj~JDF(;Ha|GF6uJvB*u41$+ynMF#fqCr`BbZ@bPC=Th1q7}*Q zWuJvEZ>zD!8*xY=I+E4_0?G!*1l+rUUpm?#l$b;_jrLyT|F90W90Y2-~(SosFQyu1JnPrfot9iP^30sDz8^d3;-Y z9wwP(*(oqGbzoW$SrW90*W@4Y?*flGCO`AHP|*9-K__FeWz>M=V6T$aR5dyO0a%<@ ztUS_&qSzhU)IDQ%Ec{ko_`aiwFzsehLU2(+aTlj@-;VsR_^0TYKWb*HlfSb)Sh?h! ziJig{#^6`*>?YH?gJvtsPq{BJ&7>&g7|3vk!+4rT?a7zda7NQ~&@9Q|0_n&zh7#M2&8UE_uKed<&+ObgM z=RE}pz9LQ@mQ@E)VwTUn0h4`;*xVA<>v7a~xcxF_%U>gzh+1l=tGZFT|OH_<+A)um^qIznhR&1suLreraR$tY<-g^efm}FSO z*EJ}IjW9~9b!P0+-QI71RL@qd&<(%6hoOkK+^-@~5^pNdc_^nS7!#zAa7tC5K)lQ$ za8H0VkuiMsJak1WEgLXq)5od=AH4F%#&B5cNvd#5Q&c?jCNL_XlPzU%3Ez|;uLd$NpY2l@`7K%`O8Vi)w3fJywoF~|p zA~HkZiXXs*e#OsX>jQ(naLwludVWX6(8JITvM3%)T_Ao-X_`BE{2RqAcauRRxSJ@G z5AhqdtVBAdIZQA-@~8J-h&PVk-&^W}O '/run/home-assistant.token' + +mkdir -p /data/prometheus +find /data/prometheus -not -perm 0644 -type f -exec chmod 0660 {} \; +find /data/prometheus -not -perm 0755 -type d -exec chmod 0770 {} \; diff --git a/addon-prometheus-main/prometheus/rootfs/etc/prometheus/prometheus.yml b/addon-prometheus-main/prometheus/rootfs/etc/prometheus/prometheus.yml new file mode 100644 index 0000000..9a9c3b6 --- /dev/null +++ b/addon-prometheus-main/prometheus/rootfs/etc/prometheus/prometheus.yml @@ -0,0 +1,40 @@ +--- +# my global config +global: + scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. + evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + # scrape_timeout is set to the global default (10s). + +# Alertmanager configuration +alerting: + alertmanagers: + - static_configs: + - targets: + # - alertmanager:9093 + +# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. +rule_files: + - "/share/prometheus/rules/*.yml" + - "/share/prometheus/rules/*.yaml" + +# A scrape configuration containing exactly one endpoint to scrape: +# Here it's Prometheus itself. +scrape_configs: + # The job name is added as a label `job=` to any timeseries scraped from this config. + - job_name: "prometheus" + + # metrics_path defaults to '/metrics' + # scheme defaults to 'http'. + + static_configs: + - targets: ["localhost:9090"] + - job_name: "home-assistant" + scrape_interval: 60s + metrics_path: /core/api/prometheus + + # Long-Lived Access Token + bearer_token_file: "/run/home-assistant.token" + + scheme: http + static_configs: + - targets: ["supervisor:80"] diff --git a/addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus-configgen/finish b/addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus-configgen/finish new file mode 100644 index 0000000..b560db5 --- /dev/null +++ b/addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus-configgen/finish @@ -0,0 +1,11 @@ +#!/command/with-contenv bashio +# ============================================================================== +# Home Assistant Community Add-on: Prometheus +# Take down the S6 supervision tree when Prometheus fails +# ============================================================================== +if [[ "${1}" -ne 0 ]] && [[ "${1}" -ne 256 ]]; then + bashio::log.warning "Prometheus config crashed, halting add-on" + exec /run/s6/basedir/bin/halt +fi + +bashio::log.info "Prometheus config stopped, restarting..." diff --git a/addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus-configgen/run b/addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus-configgen/run new file mode 100644 index 0000000..d1efb9d --- /dev/null +++ b/addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus-configgen/run @@ -0,0 +1,13 @@ +#!/command/with-contenv bashio +bashio::log.info 'Starting prometheus config generator...' + +if ! bashio::fs.directory_exists /share/prometheus/targets; then + mkdir -p /share/prometheus/targets + chown -R prometheus:prometheus /share/prometheus/targets +fi + +cd /opt/prometheus-configgen || bashio::exit.nok \ + "Could not change working directory for prometheus-configgen." + +# Run Prometheus +exec s6-setuidgid prometheus python3 combiner diff --git a/addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus/finish b/addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus/finish new file mode 100644 index 0000000..9733507 --- /dev/null +++ b/addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus/finish @@ -0,0 +1,11 @@ +#!/command/with-contenv bashio +# ============================================================================== +# Home Assistant Community Add-on: Prometheus +# Take down the S6 supervision tree when Prometheus fails +# ============================================================================== +if [[ "${1}" -ne 0 ]] && [[ "${1}" -ne 256 ]]; then + bashio::log.warning "Prometheus crashed, halting add-on" + exec /run/s6/basedir/bin/halt +fi + +bashio::log.info "Prometheus stopped, restarting..." diff --git a/addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus/run b/addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus/run new file mode 100644 index 0000000..19c8174 --- /dev/null +++ b/addon-prometheus-main/prometheus/rootfs/etc/services.d/prometheus/run @@ -0,0 +1,45 @@ +#!/command/with-contenv bashio +# shellcheck disable=SC2191 +# ============================================================================== +# Home Assistant Community Add-on: Prometheus +# Runs the Prometheus Server +# ============================================================================== +declare -a options +declare name +declare value + +bashio::log.info 'Starting prometheus...' + +options+=(--config.file="/etc/prometheus/prometheus.yml" ) +options+=(--storage.tsdb.path="/data/prometheus" ) +options+=(--web.console.libraries="/usr/share/prometheus/console_libraries" ) +options+=(--web.console.templates="/usr/share/prometheus/consoles" ) +options+=(--web.route-prefix="/" ) +options+=(--web.external-url="http://localhost:9090$(bashio::addon.ingress_entry)/" ) +options+=(--web.enable-lifecycle ) + +# Load custom environment variables +for var in $(bashio::config 'env_vars|keys'); do + name=$(bashio::config "env_vars[${var}].name") + value=$(bashio::config "env_vars[${var}].value") + bashio::log.info "Setting ${name} to ${value}" + export "${name}=${value}" +done + +if ! bashio::fs.directory_exists /data/prometheus; then + mkdir -p /data/prometheus + chown prometheus:prometheus /data/prometheus +fi + +if ! bashio::fs.directory_exists /share/prometheus/rules; then + mkdir -p /share/prometheus/rules + chown -R prometheus:prometheus /share/prometheus/rules +fi + +if ! bashio::fs.directory_exists /share/prometheus/targets; then + mkdir -p /share/prometheus/targets + chown -R prometheus:prometheus /share/prometheus/targets +fi + +# Run Prometheus +exec s6-setuidgid prometheus /usr/local/bin/prometheus "${options[@]}" diff --git a/addon-prometheus-main/prometheus/rootfs/opt/prometheus-configgen/combiner b/addon-prometheus-main/prometheus/rootfs/opt/prometheus-configgen/combiner new file mode 100644 index 0000000..2553527 --- /dev/null +++ b/addon-prometheus-main/prometheus/rootfs/opt/prometheus-configgen/combiner @@ -0,0 +1,100 @@ +import sys +import asyncio +import aionotify +import yaml +import os +import tempfile +import requests + +from yamlinclude import YamlIncludeConstructor + + +def generateConfig(): + YamlIncludeConstructor.add_to_loader_class( + loader_class=yaml.FullLoader, base_dir="/share/prometheus/" + ) + + with open("prometheus.template") as f: + data = yaml.load(f, Loader=yaml.FullLoader) + + data["scrape_configs"] = ( + data[".scrape_configs_static"] + data[".scrape_configs_included"] + ) + del data[".scrape_configs_static"] + del data[".scrape_configs_included"] + return yaml.dump(data, default_flow_style=False, default_style="") + + +def testConfig(config): + tmp = None + result = False + try: + tmp = tempfile.NamedTemporaryFile() + with open(tmp.name, "w") as f: + f.write(config) + r = os.system("promtool check config " + tmp.name + "> /dev/null") + result = r == 0 + except: + print("Failed to validate") + raise + if not result: + raise Exception("validation error") + return result + + +def writeConfig(config, file): + try: + with open(file, "w") as f: + f.write(config) + r = requests.post(url="http://localhost:9090/-/reload", data={}) + except: + print("Exception") + + +loop = asyncio.get_event_loop() +paths_to_watch = ["/share/prometheus/targets/"] + +lock = asyncio.Lock() + + +async def compile(): + if lock.locked() == False: + await lock.acquire() + try: + config = generateConfig() + testConfig(config) + writeConfig(config, "/etc/prometheus/prometheus.yml") + print("Compiled") + except: + pass + finally: + lock.release() + + +async def watcher(): + asyncio.create_task(compile()) + filewatch = aionotify.Watcher() + for path in paths_to_watch: + filewatch.watch( + path, + aionotify.Flags.MODIFY | aionotify.Flags.CREATE | aionotify.Flags.DELETE, + ) + print(path) + await filewatch.setup(loop) + while True: + event = await filewatch.get_event() + sys.stdout.write("Got event: %s\n" % repr(event)) + asyncio.create_task(compile()) + filewatch.close() + + +def main(): + try: + loop.run_until_complete(watcher()) + finally: + # loop.close() + pass + + +if __name__ == "__main__": + main() diff --git a/addon-prometheus-main/prometheus/rootfs/opt/prometheus-configgen/prometheus.template b/addon-prometheus-main/prometheus/rootfs/opt/prometheus-configgen/prometheus.template new file mode 100644 index 0000000..7589935 --- /dev/null +++ b/addon-prometheus-main/prometheus/rootfs/opt/prometheus-configgen/prometheus.template @@ -0,0 +1,38 @@ +--- +# my global config +global: + scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. + evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + # scrape_timeout is set to the global default (10s). + +# Alertmanager configuration +alerting: + alertmanagers: + - static_configs: + - targets: + # - alertmanager:9093 + +# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. +rule_files: + - "/share/prometheus/rules/*.yaml" + + +.scrape_configs_included: !include targets/*.yaml +.scrape_configs_static: + - job_name: 'home-assistant' + scrape_interval: 60s + metrics_path: /core/api/prometheus + + # Long-Lived Access Token + bearer_token_file: '/run/home-assistant.token' + + scheme: http + static_configs: + - targets: ['supervisor:80'] + - job_name: 'prometheus' + + # metrics_path defaults to '/metrics' + # scheme defaults to 'http'. + + static_configs: + - targets: ['localhost:9090'] diff --git a/addon-prometheus-main/prometheus/rootfs/opt/prometheus-configgen/requirements.txt b/addon-prometheus-main/prometheus/rootfs/opt/prometheus-configgen/requirements.txt new file mode 100644 index 0000000..ea01d9e --- /dev/null +++ b/addon-prometheus-main/prometheus/rootfs/opt/prometheus-configgen/requirements.txt @@ -0,0 +1,4 @@ +aionotify +pyyaml-include>=1.2 +PyYAML>=5.3.1 +requests>=2.23.0