From b840c6579566e80544b7d3e2665df5f9d9426d09 Mon Sep 17 00:00:00 2001 From: ai-dev Date: Wed, 30 Oct 2024 20:26:28 +0100 Subject: [PATCH] adding node exporter, loki, and promtail --- addon-prometheus/{prometheus => }/.README.j2 | 0 addon-prometheus/.github/CODEOWNERS | 1 - addon-prometheus/.github/CODE_OF_CONDUCT.md | 133 -- addon-prometheus/.github/CONTRIBUTING.md | 29 - addon-prometheus/.github/FUNDING.yml | 2 - addon-prometheus/.github/ISSUE_TEMPLATE.md | 20 - .../.github/PULL_REQUEST_TEMPLATE.md | 9 - addon-prometheus/.github/SECURITY.md | 1839 ----------------- addon-prometheus/.github/dependabot.yaml | 8 - addon-prometheus/.github/workflows/ci.yaml | 16 - .../.github/workflows/deploy.yaml | 19 - .../.github/workflows/labels.yaml | 12 - addon-prometheus/.github/workflows/lock.yaml | 12 - .../.github/workflows/pr-labels.yaml | 15 - .../.github/workflows/release-drafter.yaml | 12 - addon-prometheus/.github/workflows/stale.yaml | 12 - addon-prometheus/.gitignore | 0 addon-prometheus/.mdlrc | 1 - addon-prometheus/.yamllint | 66 - addon-prometheus/{prometheus => }/DOCS.md | 0 addon-prometheus/{prometheus => }/Dockerfile | 0 addon-prometheus/LICENSE.md | 21 - addon-prometheus/README.md | 136 -- addon-prometheus/{prometheus => }/build.yaml | 0 addon-prometheus/{prometheus => }/config.yaml | 0 addon-prometheus/{prometheus => }/icon.png | Bin addon-prometheus/images/screenshot.png | Bin 106428 -> 0 bytes addon-prometheus/{prometheus => }/logo.png | Bin addon-prometheus/repository.yaml | 3 - .../rootfs/etc/cont-init.d/prometheus.sh | 0 .../rootfs/etc/prometheus/prometheus.yml | 0 .../services.d/prometheus-configgen/finish | 0 .../etc/services.d/prometheus-configgen/run | 0 .../rootfs/etc/services.d/prometheus/finish | 0 .../rootfs/etc/services.d/prometheus/run | 0 .../rootfs/opt/prometheus-configgen/combiner | 0 .../prometheus-configgen/prometheus.template | 0 .../opt/prometheus-configgen/requirements.txt | 0 addon-promtail-main/.README.j2 | 131 ++ addon-promtail-main/DOCS.md | 252 +++ addon-promtail-main/Dockerfile | 76 + addon-promtail-main/apparmor.txt | 116 ++ addon-promtail-main/build.yaml | 9 + addon-promtail-main/config.yaml | 40 + addon-promtail-main/icon.png | Bin 0 -> 19951 bytes addon-promtail-main/logo.png | Bin 0 -> 15536 bytes .../rootfs/etc/cont-init.d/promtail_setup.sh | 129 ++ .../rootfs/etc/promtail/base_config.yaml | 11 + .../etc/promtail/default-scrape-config.yaml | 27 + .../rootfs/etc/services.d/promtail/finish | 15 + .../rootfs/etc/services.d/promtail/run | 40 + loki/.README.j2 | 126 ++ loki/DOCS.md | 213 ++ loki/Dockerfile | 99 + loki/apparmor.txt | 139 ++ loki/build.yaml | 9 + loki/config.yaml | 34 + loki/icon.png | Bin 0 -> 19951 bytes loki/logo.png | Bin 0 -> 15536 bytes loki/rootfs/etc/cont-init.d/nginx.sh | 52 + loki/rootfs/etc/loki/default-config.yaml | 52 + loki/rootfs/etc/nginx/includes/mime.types | 96 + .../etc/nginx/includes/proxy_params.conf | 15 + .../etc/nginx/includes/server_params.conf | 6 + .../rootfs/etc/nginx/includes/ssl_params.conf | 8 + loki/rootfs/etc/nginx/includes/upstream.conf | 3 + loki/rootfs/etc/nginx/nginx.conf | 52 + .../etc/nginx/servers/direct-mtls.disabled | 17 + .../etc/nginx/servers/direct-ssl.disabled | 14 + loki/rootfs/etc/nginx/servers/direct.disabled | 10 + loki/rootfs/etc/nginx/servers/ready.conf | 14 + loki/rootfs/etc/services.d/loki/finish | 14 + loki/rootfs/etc/services.d/loki/run | 51 + loki/rootfs/etc/services.d/nginx/finish | 13 + loki/rootfs/etc/services.d/nginx/run | 10 + prometheus_node_exporter/CHANGELOG.md | 112 + prometheus_node_exporter/CONTRIBUTING.md | 57 + prometheus_node_exporter/Dockerfile | 33 + prometheus_node_exporter/README.md | 93 + prometheus_node_exporter/build.json | 7 + prometheus_node_exporter/config.json | 47 + prometheus_node_exporter/icon.png | Bin 0 -> 15451 bytes prometheus_node_exporter/logo.png | Bin 0 -> 15451 bytes .../rootfs/etc/cont-init.d/node_exporter.sh | 82 + .../rootfs/etc/services.d/node_exporter/run | 9 + prometheus_node_exporter/rootfs/run.sh | 16 + prometheus_node_exporter/translations/en.yaml | 23 + 87 files changed, 2372 insertions(+), 2366 deletions(-) rename addon-prometheus/{prometheus => }/.README.j2 (100%) delete mode 100644 addon-prometheus/.github/CODEOWNERS delete mode 100644 addon-prometheus/.github/CODE_OF_CONDUCT.md delete mode 100644 addon-prometheus/.github/CONTRIBUTING.md delete mode 100644 addon-prometheus/.github/FUNDING.yml delete mode 100644 addon-prometheus/.github/ISSUE_TEMPLATE.md delete mode 100644 addon-prometheus/.github/PULL_REQUEST_TEMPLATE.md delete mode 100644 addon-prometheus/.github/SECURITY.md delete mode 100644 addon-prometheus/.github/dependabot.yaml delete mode 100644 addon-prometheus/.github/workflows/ci.yaml delete mode 100644 addon-prometheus/.github/workflows/deploy.yaml delete mode 100644 addon-prometheus/.github/workflows/labels.yaml delete mode 100644 addon-prometheus/.github/workflows/lock.yaml delete mode 100644 addon-prometheus/.github/workflows/pr-labels.yaml delete mode 100644 addon-prometheus/.github/workflows/release-drafter.yaml delete mode 100644 addon-prometheus/.github/workflows/stale.yaml delete mode 100644 addon-prometheus/.gitignore delete mode 100644 addon-prometheus/.mdlrc delete mode 100644 addon-prometheus/.yamllint rename addon-prometheus/{prometheus => }/DOCS.md (100%) rename addon-prometheus/{prometheus => }/Dockerfile (100%) delete mode 100644 addon-prometheus/LICENSE.md delete mode 100644 addon-prometheus/README.md rename addon-prometheus/{prometheus => }/build.yaml (100%) rename addon-prometheus/{prometheus => }/config.yaml (100%) rename addon-prometheus/{prometheus => }/icon.png (100%) delete mode 100644 addon-prometheus/images/screenshot.png rename addon-prometheus/{prometheus => }/logo.png (100%) delete mode 100644 addon-prometheus/repository.yaml rename addon-prometheus/{prometheus => }/rootfs/etc/cont-init.d/prometheus.sh (100%) rename addon-prometheus/{prometheus => }/rootfs/etc/prometheus/prometheus.yml (100%) rename addon-prometheus/{prometheus => }/rootfs/etc/services.d/prometheus-configgen/finish (100%) rename addon-prometheus/{prometheus => }/rootfs/etc/services.d/prometheus-configgen/run (100%) rename addon-prometheus/{prometheus => }/rootfs/etc/services.d/prometheus/finish (100%) rename addon-prometheus/{prometheus => }/rootfs/etc/services.d/prometheus/run (100%) rename addon-prometheus/{prometheus => }/rootfs/opt/prometheus-configgen/combiner (100%) rename addon-prometheus/{prometheus => }/rootfs/opt/prometheus-configgen/prometheus.template (100%) rename addon-prometheus/{prometheus => }/rootfs/opt/prometheus-configgen/requirements.txt (100%) create mode 100644 addon-promtail-main/.README.j2 create mode 100644 addon-promtail-main/DOCS.md create mode 100644 addon-promtail-main/Dockerfile create mode 100644 addon-promtail-main/apparmor.txt create mode 100644 addon-promtail-main/build.yaml create mode 100644 addon-promtail-main/config.yaml create mode 100644 addon-promtail-main/icon.png create mode 100644 addon-promtail-main/logo.png create mode 100644 addon-promtail-main/rootfs/etc/cont-init.d/promtail_setup.sh create mode 100644 addon-promtail-main/rootfs/etc/promtail/base_config.yaml create mode 100644 addon-promtail-main/rootfs/etc/promtail/default-scrape-config.yaml create mode 100644 addon-promtail-main/rootfs/etc/services.d/promtail/finish create mode 100644 addon-promtail-main/rootfs/etc/services.d/promtail/run create mode 100644 loki/.README.j2 create mode 100644 loki/DOCS.md create mode 100644 loki/Dockerfile create mode 100644 loki/apparmor.txt create mode 100644 loki/build.yaml create mode 100644 loki/config.yaml create mode 100644 loki/icon.png create mode 100644 loki/logo.png create mode 100644 loki/rootfs/etc/cont-init.d/nginx.sh create mode 100644 loki/rootfs/etc/loki/default-config.yaml create mode 100644 loki/rootfs/etc/nginx/includes/mime.types create mode 100644 loki/rootfs/etc/nginx/includes/proxy_params.conf create mode 100644 loki/rootfs/etc/nginx/includes/server_params.conf create mode 100644 loki/rootfs/etc/nginx/includes/ssl_params.conf create mode 100644 loki/rootfs/etc/nginx/includes/upstream.conf create mode 100644 loki/rootfs/etc/nginx/nginx.conf create mode 100644 loki/rootfs/etc/nginx/servers/direct-mtls.disabled create mode 100644 loki/rootfs/etc/nginx/servers/direct-ssl.disabled create mode 100644 loki/rootfs/etc/nginx/servers/direct.disabled create mode 100644 loki/rootfs/etc/nginx/servers/ready.conf create mode 100644 loki/rootfs/etc/services.d/loki/finish create mode 100644 loki/rootfs/etc/services.d/loki/run create mode 100644 loki/rootfs/etc/services.d/nginx/finish create mode 100644 loki/rootfs/etc/services.d/nginx/run create mode 100644 prometheus_node_exporter/CHANGELOG.md create mode 100644 prometheus_node_exporter/CONTRIBUTING.md create mode 100644 prometheus_node_exporter/Dockerfile create mode 100644 prometheus_node_exporter/README.md create mode 100644 prometheus_node_exporter/build.json create mode 100644 prometheus_node_exporter/config.json create mode 100644 prometheus_node_exporter/icon.png create mode 100644 prometheus_node_exporter/logo.png create mode 100644 prometheus_node_exporter/rootfs/etc/cont-init.d/node_exporter.sh create mode 100644 prometheus_node_exporter/rootfs/etc/services.d/node_exporter/run create mode 100644 prometheus_node_exporter/rootfs/run.sh create mode 100644 prometheus_node_exporter/translations/en.yaml diff --git a/addon-prometheus/prometheus/.README.j2 b/addon-prometheus/.README.j2 similarity index 100% rename from addon-prometheus/prometheus/.README.j2 rename to addon-prometheus/.README.j2 diff --git a/addon-prometheus/.github/CODEOWNERS b/addon-prometheus/.github/CODEOWNERS deleted file mode 100644 index 771559a..0000000 --- a/addon-prometheus/.github/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -.github/* @frenck diff --git a/addon-prometheus/.github/CODE_OF_CONDUCT.md b/addon-prometheus/.github/CODE_OF_CONDUCT.md deleted file mode 100644 index 8b146f4..0000000 --- a/addon-prometheus/.github/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,133 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -- Demonstrating empathy and kindness toward other people -- Being respectful of differing opinions, viewpoints, and experiences -- Giving and gracefully accepting constructive feedback -- Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -- Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -- The use of sexualized language or imagery, and sexual attention or - advances of any kind -- Trolling, insulting or derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or email - address, without their explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -frenck@frenck.dev. - -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][mozilla coc]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][faq]. Translations are available -at [https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html -[mozilla coc]: https://github.com/mozilla/diversity -[faq]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations diff --git a/addon-prometheus/.github/CONTRIBUTING.md b/addon-prometheus/.github/CONTRIBUTING.md deleted file mode 100644 index 64ff635..0000000 --- a/addon-prometheus/.github/CONTRIBUTING.md +++ /dev/null @@ -1,29 +0,0 @@ -# Contributing - -When contributing to this repository, please first discuss the change you wish -to make via issue, email, or any other method with the owners of this repository -before making a change. - -Please note we have a code of conduct, please follow it in all your interactions -with the project. - -## Issues and feature requests - -You've found a bug in the source code, a mistake in the documentation or maybe -you'd like a new feature? You can help us by submitting an issue to our -[GitHub Repository][github]. Before you create an issue, make sure you search -the archive, maybe your question was already answered. - -Even better: You could submit a pull request with a fix / new feature! - -## Pull request process - -1. Search our repository for open or closed [pull requests][prs] that relates - to your submission. You don't want to duplicate effort. - -1. You may merge the pull request in once you have the sign-off of two other - developers, or if you do not have permission to do that, you may request - the second reviewer to merge it for you. - -[github]: https://github.com/hassio-addons/addon-prometheus/issues -[prs]: https://github.com/hassio-addons/addon-prometheus/pulls diff --git a/addon-prometheus/.github/FUNDING.yml b/addon-prometheus/.github/FUNDING.yml deleted file mode 100644 index 292a6c9..0000000 --- a/addon-prometheus/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -ko_fi: mjrider diff --git a/addon-prometheus/.github/ISSUE_TEMPLATE.md b/addon-prometheus/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 544da8f..0000000 --- a/addon-prometheus/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,20 +0,0 @@ -# Problem/Motivation - -> (Why the issue was filed) - -## Expected behavior - -> (What you expected to happen) - -## Actual behavior - -> (What actually happened) - -## Steps to reproduce - -> (How can someone else make/see it happen) - -## Proposed changes - -> (If you have a proposed change, workaround or fix, -> describe the rationale behind it) diff --git a/addon-prometheus/.github/PULL_REQUEST_TEMPLATE.md b/addon-prometheus/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 14f7b5b..0000000 --- a/addon-prometheus/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,9 +0,0 @@ -# Proposed Changes - -> (Describe the changes and rationale behind them) - -## Related Issues - -> ([Github link][autolink-references] to related issues or pull requests) - -[autolink-references]: https://help.github.com/articles/autolinked-references-and-urls/ diff --git a/addon-prometheus/.github/SECURITY.md b/addon-prometheus/.github/SECURITY.md deleted file mode 100644 index 021b03d..0000000 --- a/addon-prometheus/.github/SECURITY.md +++ /dev/null @@ -1,1839 +0,0 @@ -# Security Policy - -I take the security of my software and services seriously. This includes -all open source software I create, maintain or help to maintain. - -If you believe you have found a security vulnerability in any repository -I maintain, including this one, please report it responsible to me as -described below. - -**Please DO NOT report security vulnerabilities publicly!** - -So... DO NOT create a GitHub issue for it ;) - -## Reporting a vulnerability - -Privately and confidently, send me a detailed description of the vulnerability -you have discovered using an encrypted and authenticated channel. Personally, -I prefer this to be done using PGP encrypted email. Contact information -needed for this is listed down below. - -In the report, please include as much information as possible, including: - -- A extensive description of the vulnerability. -- How it could be exploited. -- The potential impact you think it would have (e.g., DOS attackable, privacy - concerns, leaking of credentials). -- Steps for reproducing the vulnerability. -- Code (if any), that is needed for reproducing the issue. -- If you have an idea for a fix, patch or any other adjustment for mitigating - the vulnerability reported. - -Sorry for the long list, but providing as much information as possible allows -me to act more quickly. Make sure to write your report in the English language. - -Please take care not to violate the privacy of other people in your report. -For example, stack traces or exploit scripts sent to me should never contain -private or personally identifiable information. - -## After you have reported the vulnerability - -Give me at least a week to investigate and respond to the reported vulnerability -you have found; and up to 60 days to fix and distribute it. This includes a -window for existing users to upgrade, patch or mitigate the issue as well. - -If you intent, at any point, to disclose the vulnerability to someone else -or maybe even publicly, please give me a reasonable advanced notice. - -If any dependent projects are involved, I will take care of informing the -maintainers of those projects as well. - -## Bug bounty - -Unfortunately, I cannot offer a paid bug bounty program. I will, however, give -my best efforts to show appreciation towards people that took the time and -effort to disclose vulnerabilities responsibly. - -Me, and the open source community, will be forever grateful. - -Oh, and if we ever meet, I'm happy to buy you a beer :) - -## Contact information - -Please contact me, Franck Nijhof, directly on: - -security@frenck.dev (not for support!) - -GPG Fingerprint: `731C 60D6 80E6 E850 F31C 2E88 AB33 ADAC E710 1952` - -https://keys.openpgp.org/search?q=731C60D680E6E850F31C2E88AB33ADACE7101952 - -```txt ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -FHJUUkMAAAIMAAAAIGdUUkMAAAIsAAAAIGJUUkMAAAJMAAAAIGNocm0AAAJsAAAA -JG1sdWMAAAAAAAAAAQAAAAxlblVTAAAAHAAAABwAcwBSAEcAQgAgAGIAdQBpAGwA -dAAtAGkAbgAAbWx1YwAAAAAAAAABAAAADGVuVVMAAAAyAAAAHABOAG8AIABjAG8A -cAB5AHIAaQBnAGgAdAAsACAAdQBzAGUAIABmAHIAZQBlAGwAeQAAAABYWVogAAAA -AAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMSgAABeP///MqAAAHmwAA/Yf///ui///9 -owAAA9gAAMCUWFlaIAAAAAAAAG+UAAA47gAAA5BYWVogAAAAAAAAJJ0AAA+DAAC2 -vlhZWiAAAAAAAABipQAAt5AAABjecGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT -0AAACltwYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW3BhcmEAAAAAAAMA -AAACZmYAAPKnAAANWQAAE9AAAApbY2hybQAAAAAAAwAAAACj1wAAVHsAAEzNAACZ -mgAAJmYAAA9c/8AAEQgAgACAAwESAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAA -AAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNR -YQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZH -SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Sl -pqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX2 -9/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQE -AwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoW -JDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 -d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJ -ytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMACAYGBwYFCAcHBwkJCAoM -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 -73QnlXw4/oDrjt/ZPD2SY9spk8ApQzQbKKSRuGxzZU8irDS5tLtYR9z4j1ulJGWm -j3GvuZjjXSxHy1dwOo8ph2N7b5nmzruXH1wjgppZ48hOcLn/z1dghvh4M8eBvoho -HElMD+bgudYsKEAwQMjPcIbjM+USR9BGSLQ3RnJhbmNrIE5pamhvZiAoRGVhbGVy -RGlyZWN0KSA8Zi5uaWpob2ZAZGVhbGVyZGlyZWN0Lm5sPokCVAQTAQoAPgIbAwIe -AQIXgAULCQgHAwUVCgkICwUWAgMBABYhBHMcYNaA5uhQ8xwuiKszraznEBlSBQJg -eyeWBQkMLyuoAAoJEKszraznEBlSKNkQAKk9a6khEhDigwZWByPcNuv29uNB0m4C -TMKP5kmUXCf1rJcMFc7rxC1JrDiSKUJpeNRJLly4ltp3D3hIt0dWU928CAeHzD9k -veNJZMqA+KLRkjOQt3mQlsWhPN3gCN/oatrVzvchTGInuD5DQj1suPNCCoohgAIR -z248TyTr34cLN16ehAI4PHq9ZL6+V0CbM5a36Dp5nVHtDQQOqUTQzRUGcbQdYtFg -txs9mnODJRt91ykkKi2CBkZP4yzzjdXyAT/2JFBNk/wPNUkHSLZsN5xDwRw44KUG -GqsL4ALMFYv/ITM6lTDDdQyo9g7DOUy36yhpo5nyka+vuvQxeTQouJ4mytaM+5fV -nYd8PGqm+YI9EYKXpWdd55ycVrkD7qGwRPD6OROyn7sLldC6L5HhbexRNywM1qnp -DLd1upPn2LwnqUB4P9W56NxAeVlTrYP2JyZ/1KjtmdmsRnlDv6SIWv+GwLKaVgCr -j0YuAbk4BWQNhEVm38O9vYQPr0ti4A75t6EuHjMc1xrlpTwdMQ30hTu/M3hV6V/P -sLN/YnVVIYvYsokOvPMd5fikOek+CUcxHIkmW1sp5ryDvUDC3wfIXvl70wWsmeU9 -4tN7TJczPIqOynRuNE3nUMMdtrxdU95Auh5BIdFANQNud1SX+E1UCKfs4VIIxNW6 -wNgrzyErU8g5iQIcBBABAgAGBQJYPYAyAAoJEE5+WcG+PB5Y+JUP/0fnrZbh/2uO -vflSKUwb8kt4B2OYsZLdtql5L8ou/go2x6tMV+ciUSq8YkmlhCNzp5up/Qt4iRlo -C/MCAGo3v3Y//65xCz16WoLugXVpQSl3YvGS7dq66b0kPiVEhs67S2dzymG3uvm7 -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 -ebj4joK8GrVwV3oQvb0oWg== -=dRLN ------END PGP PUBLIC KEY BLOCK----- -``` diff --git a/addon-prometheus/.github/dependabot.yaml b/addon-prometheus/.github/dependabot.yaml deleted file mode 100644 index 45dd97a..0000000 --- a/addon-prometheus/.github/dependabot.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -version: 2 -updates: - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: daily - time: "06:00" diff --git a/addon-prometheus/.github/workflows/ci.yaml b/addon-prometheus/.github/workflows/ci.yaml deleted file mode 100644 index 60ce9a5..0000000 --- a/addon-prometheus/.github/workflows/ci.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -name: CI - -# yamllint disable-line rule:truthy -on: - push: - pull_request: - types: - - opened - - reopened - - synchronize - workflow_dispatch: - -jobs: - workflows: - uses: hassio-addons/workflows/.github/workflows/addon-ci.yaml@main diff --git a/addon-prometheus/.github/workflows/deploy.yaml b/addon-prometheus/.github/workflows/deploy.yaml deleted file mode 100644 index 21b20da..0000000 --- a/addon-prometheus/.github/workflows/deploy.yaml +++ /dev/null @@ -1,19 +0,0 @@ ---- -name: Deploy - -# yamllint disable-line rule:truthy -on: - release: - types: - - published - workflow_run: - workflows: ["CI"] - branches: [main] - types: - - completed - -jobs: - workflows: - uses: hassio-addons/workflows/.github/workflows/addon-deploy.yaml@main - secrets: - DISPATCH_TOKEN: ${{ secrets.DISPATCH_TOKEN }} diff --git a/addon-prometheus/.github/workflows/labels.yaml b/addon-prometheus/.github/workflows/labels.yaml deleted file mode 100644 index 8691ec9..0000000 --- a/addon-prometheus/.github/workflows/labels.yaml +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: Sync labels - -# yamllint disable-line rule:truthy -on: - schedule: - - cron: "34 5 * * *" - workflow_dispatch: - -jobs: - workflows: - uses: hassio-addons/workflows/.github/workflows/labels.yaml@main diff --git a/addon-prometheus/.github/workflows/lock.yaml b/addon-prometheus/.github/workflows/lock.yaml deleted file mode 100644 index 1d4303c..0000000 --- a/addon-prometheus/.github/workflows/lock.yaml +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: Lock - -# yamllint disable-line rule:truthy -on: - schedule: - - cron: "0 9 * * *" - workflow_dispatch: - -jobs: - workflows: - uses: hassio-addons/workflows/.github/workflows/lock.yaml@main diff --git a/addon-prometheus/.github/workflows/pr-labels.yaml b/addon-prometheus/.github/workflows/pr-labels.yaml deleted file mode 100644 index 393617b..0000000 --- a/addon-prometheus/.github/workflows/pr-labels.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: PR Labels - -# yamllint disable-line rule:truthy -on: - pull_request_target: - types: - - opened - - labeled - - unlabeled - - synchronize - -jobs: - workflows: - uses: hassio-addons/workflows/.github/workflows/pr-labels.yaml@main diff --git a/addon-prometheus/.github/workflows/release-drafter.yaml b/addon-prometheus/.github/workflows/release-drafter.yaml deleted file mode 100644 index 5769e10..0000000 --- a/addon-prometheus/.github/workflows/release-drafter.yaml +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: Release Drafter - -# yamllint disable-line rule:truthy -on: - push: - branches: - - main - -jobs: - workflows: - uses: hassio-addons/workflows/.github/workflows/release-drafter.yaml@main diff --git a/addon-prometheus/.github/workflows/stale.yaml b/addon-prometheus/.github/workflows/stale.yaml deleted file mode 100644 index 31e1542..0000000 --- a/addon-prometheus/.github/workflows/stale.yaml +++ /dev/null @@ -1,12 +0,0 @@ ---- -name: Stale - -# yamllint disable-line rule:truthy -on: - schedule: - - cron: "0 8 * * *" - workflow_dispatch: - -jobs: - workflows: - uses: hassio-addons/workflows/.github/workflows/stale.yaml@main diff --git a/addon-prometheus/.gitignore b/addon-prometheus/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/addon-prometheus/.mdlrc b/addon-prometheus/.mdlrc deleted file mode 100644 index 2b0128d..0000000 --- a/addon-prometheus/.mdlrc +++ /dev/null @@ -1 +0,0 @@ -rules "~MD024" \ No newline at end of file diff --git a/addon-prometheus/.yamllint b/addon-prometheus/.yamllint deleted file mode 100644 index f4bc5a4..0000000 --- a/addon-prometheus/.yamllint +++ /dev/null @@ -1,66 +0,0 @@ ---- -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/prometheus/DOCS.md b/addon-prometheus/DOCS.md similarity index 100% rename from addon-prometheus/prometheus/DOCS.md rename to addon-prometheus/DOCS.md diff --git a/addon-prometheus/prometheus/Dockerfile b/addon-prometheus/Dockerfile similarity index 100% rename from addon-prometheus/prometheus/Dockerfile rename to addon-prometheus/Dockerfile diff --git a/addon-prometheus/LICENSE.md b/addon-prometheus/LICENSE.md deleted file mode 100644 index 58c66ee..0000000 --- a/addon-prometheus/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# 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/README.md b/addon-prometheus/README.md deleted file mode 100644 index 0b6f939..0000000 --- a/addon-prometheus/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# 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 - -*Update 2024-08-31* - -This addon has been forked, and now updates prometheus to 2.54.1, as well `hassio-addons/base` being updated to 16.2.1. This addon now merges a yaml file named `prometheus.yaml` located in `/share/prometheus` with the configuration located within the container. This allows for (but not just) the targeting of a remote alert manager instance. - -For example, the contents of `/share/prometheus/prometheus.yaml` could contain: - -```yaml -# Alertmanager configuration -alerting: - alertmanagers: - - static_configs: - - targets: - - 1.3.3.7:9093 -``` - -Which would then send alerts to an alert manager instance located at `http://1.3.3.7:9093` - ---- - -.... - -[: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/prometheus/build.yaml b/addon-prometheus/build.yaml similarity index 100% rename from addon-prometheus/prometheus/build.yaml rename to addon-prometheus/build.yaml diff --git a/addon-prometheus/prometheus/config.yaml b/addon-prometheus/config.yaml similarity index 100% rename from addon-prometheus/prometheus/config.yaml rename to addon-prometheus/config.yaml diff --git a/addon-prometheus/prometheus/icon.png b/addon-prometheus/icon.png similarity index 100% rename from addon-prometheus/prometheus/icon.png rename to addon-prometheus/icon.png diff --git a/addon-prometheus/images/screenshot.png b/addon-prometheus/images/screenshot.png deleted file mode 100644 index 50b754562faec3122d2383bee5f84b0fc4aa695b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106428 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 P@cCz?m83Ey&)@tXI~Cve diff --git a/addon-prometheus/prometheus/logo.png b/addon-prometheus/logo.png similarity index 100% rename from addon-prometheus/prometheus/logo.png rename to addon-prometheus/logo.png diff --git a/addon-prometheus/repository.yaml b/addon-prometheus/repository.yaml deleted file mode 100644 index 581f821..0000000 --- a/addon-prometheus/repository.yaml +++ /dev/null @@ -1,3 +0,0 @@ -name: Prometheus -url: https://github.com/martydingo/homeassistant-addon-prometheus -maintainer: Martin George \ No newline at end of file diff --git a/addon-prometheus/prometheus/rootfs/etc/cont-init.d/prometheus.sh b/addon-prometheus/rootfs/etc/cont-init.d/prometheus.sh similarity index 100% rename from addon-prometheus/prometheus/rootfs/etc/cont-init.d/prometheus.sh rename to addon-prometheus/rootfs/etc/cont-init.d/prometheus.sh diff --git a/addon-prometheus/prometheus/rootfs/etc/prometheus/prometheus.yml b/addon-prometheus/rootfs/etc/prometheus/prometheus.yml similarity index 100% rename from addon-prometheus/prometheus/rootfs/etc/prometheus/prometheus.yml rename to addon-prometheus/rootfs/etc/prometheus/prometheus.yml diff --git a/addon-prometheus/prometheus/rootfs/etc/services.d/prometheus-configgen/finish b/addon-prometheus/rootfs/etc/services.d/prometheus-configgen/finish similarity index 100% rename from addon-prometheus/prometheus/rootfs/etc/services.d/prometheus-configgen/finish rename to addon-prometheus/rootfs/etc/services.d/prometheus-configgen/finish diff --git a/addon-prometheus/prometheus/rootfs/etc/services.d/prometheus-configgen/run b/addon-prometheus/rootfs/etc/services.d/prometheus-configgen/run similarity index 100% rename from addon-prometheus/prometheus/rootfs/etc/services.d/prometheus-configgen/run rename to addon-prometheus/rootfs/etc/services.d/prometheus-configgen/run diff --git a/addon-prometheus/prometheus/rootfs/etc/services.d/prometheus/finish b/addon-prometheus/rootfs/etc/services.d/prometheus/finish similarity index 100% rename from addon-prometheus/prometheus/rootfs/etc/services.d/prometheus/finish rename to addon-prometheus/rootfs/etc/services.d/prometheus/finish diff --git a/addon-prometheus/prometheus/rootfs/etc/services.d/prometheus/run b/addon-prometheus/rootfs/etc/services.d/prometheus/run similarity index 100% rename from addon-prometheus/prometheus/rootfs/etc/services.d/prometheus/run rename to addon-prometheus/rootfs/etc/services.d/prometheus/run diff --git a/addon-prometheus/prometheus/rootfs/opt/prometheus-configgen/combiner b/addon-prometheus/rootfs/opt/prometheus-configgen/combiner similarity index 100% rename from addon-prometheus/prometheus/rootfs/opt/prometheus-configgen/combiner rename to addon-prometheus/rootfs/opt/prometheus-configgen/combiner diff --git a/addon-prometheus/prometheus/rootfs/opt/prometheus-configgen/prometheus.template b/addon-prometheus/rootfs/opt/prometheus-configgen/prometheus.template similarity index 100% rename from addon-prometheus/prometheus/rootfs/opt/prometheus-configgen/prometheus.template rename to addon-prometheus/rootfs/opt/prometheus-configgen/prometheus.template diff --git a/addon-prometheus/prometheus/rootfs/opt/prometheus-configgen/requirements.txt b/addon-prometheus/rootfs/opt/prometheus-configgen/requirements.txt similarity index 100% rename from addon-prometheus/prometheus/rootfs/opt/prometheus-configgen/requirements.txt rename to addon-prometheus/rootfs/opt/prometheus-configgen/requirements.txt diff --git a/addon-promtail-main/.README.j2 b/addon-promtail-main/.README.j2 new file mode 100644 index 0000000..e9d6b80 --- /dev/null +++ b/addon-promtail-main/.README.j2 @@ -0,0 +1,131 @@ +# Home Assistant Add-on: Promtail + +[![GitHub Release][releases-shield]][releases] +![Project Stage][project-stage-shield] +[![License][license-shield]][license] + +![Project Maintenance][maintenance-shield] +[![Community Forum][forum-shield]][forum] + +[Promtail][promtail] is an agent which ships the contents of local logs to a private +[Loki][loki] instance or [Grafana Cloud][grafana-cloud]. It is usually deployed +to every machine that has applications needed to be monitored. + +{% set repository = namespace(url='https%3A//github.com/mdegat01/hassio-addons', slug='39bd2704') %} +{% if channel == "edge" %} +{% set repository.url = repository.url + '-edge' %} +{% set repository.slug = '7eb274d5' %} +## WARNING! THIS IS AN EDGE REPOSITORY + +This Add-ons repository contains edge builds of add-ons. Edge +builds of 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 these add-ons: + + + +{% elif channel == "beta" %} +{% set repository.url = repository.url + '-beta' %} +{% set repository.slug = 'e9a81774' %} +## WARNING! THIS IS A BETA REPOSITORY + +This Add-ons repository contains beta builds of add-ons. Beta +builds of add-ons are based upon the latest release including pre-releases. + +- 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 these add-ons: + + + +{% endif %} +## About + +By default this addon version of Promtail will tail logs from the systemd +journal. This will include all logs from all addons, supervisor, home assistant, +docker, and the host system itself. In addition you can set it up to look for +local log files in `/share` or `/ssl` if you have a particular add-on that logs +to a file instead of to `stdout`. + +## Support + +Got questions? + +You have several ways to get them answered: + +- The Home Assistant [Community Forum][forum]. I am + [CentralCommand][forum-centralcommand] there. +- The Home Assistant [Discord Chat Server][discord-ha]. Use the #add-ons channel, + I am CentralCommand#0913 there. + +You could also [open an issue here][issue] on GitHub. + +## Authors & contributors + +The original setup of this repository is by [Mike Degatano][mdegat01]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2021-2022 Mike Degatano + +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. + +{% if channel == "edge" %} +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +{% elif channel == "beta" %} +[project-stage-shield]: https://img.shields.io/badge/project%20stage-beta-orange.svg +{% else %} +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg +{% endif %} +[contributors]: https://github.com/mdegat01/addon-promtail/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[forum-centralcommand]: https://community.home-assistant.io/u/CentralCommand/?u=CentralCommand +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-add-on-promtail/293732?u=CentralCommand +[grafana-cloud]: https://grafana.com/products/cloud/ +[loki]: https://grafana.com/oss/loki +[mdegat01]: https://github.com/mdegat01 +[issue]: https://github.com/mdegat01/addon-promtail/issues +[license]: https://github.com/mdegat01/addon-promtail/blob/main/LICENSE +[license-shield]: https://img.shields.io/github/license/mdegat01/addon-promtail.svg +[maintenance-shield]: https://img.shields.io/maintenance/yes/2022.svg +[promtail]: https://grafana.com/docs/loki/latest/clients/promtail/ +[releases-shield]: https://img.shields.io/github/release/mdegat01/addon-promtail.svg +[releases]: https://github.com/mdegat01/addon-promtail/releases diff --git a/addon-promtail-main/DOCS.md b/addon-promtail-main/DOCS.md new file mode 100644 index 0000000..adb2b72 --- /dev/null +++ b/addon-promtail-main/DOCS.md @@ -0,0 +1,252 @@ +# Home Assistant Add-on: Promtail + +## Install + +First add the repository to the add-on store (`https://mezgit.duckdns.org/mezned/HAddons`): + +[![Open your Home Assistant instance and show the add add-on repository dialog +with a specific repository URL pre-filled.][add-repo-shield]][add-repo] + +Then find Promtail in the store and click install: + +[![Open your Home Assistant instance and show the dashboard of a Supervisor add-on.][add-addon-shield]][add-addon] + +## Default Setup + +By default this addon version of Promtail will tail logs from the systemd +journal. This will include all logs from all addons, supervisor, home assistant, +docker, and the host system itself. It will then ship them to the Loki add-on in +this same repository if you have it installed. No additional configuration is +required if this is the setup you want. + +If you adjusted the configuration of the Loki add-on, have a separate Loki +add-on or have other log files you want Promtail to monitor then see below for +the configuration options. + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +client: + url: http://39bd2704-loki:3100 + username: loki + password: secret + cafile: /ssl/ca.pem +additional_scrape_configs: /share/promtail/scrape_configs.yaml +log_level: info +``` + +**Note**: _This is just an example, don't copy and paste it! Create your own!_ + +### Option: `client.url` (required) + +The URL of the Loki deployment Promtail should ship logs to. + +If you use the Loki add-on, this will be `http://39bd2704-loki:3100` (unless you +enabled `ssl`, then change it to `https`). If you use Grafana Cloud then the URL +will look like this: `https://:@logs-prod-us-central1.grafana.net/api/prom/push` +([see here for more info][grafana-cloud-docs-promtail]). + +### Option: `client.username` + +The username to use if you require basic auth to connect to your Loki deployment. + +### Option: `client.password` + +The password for the username you choose if you require basic auth to connect to +your Loki deployment. **Note**: This field is required if `client.username` is +provided. + +### Option: `client.cafile` + +The CA certificate used to sign Loki's certificate if Loki is using a self-signed +certificate for SSL. + +**Note**: _The file MUST be stored in `/ssl/`, which is the default_ + +### Option: `client.servername` + +The servername listed on the certificate Loki is using if using SSL to connect +by a different URL then what's on Loki's certificate (usually if the certificate +lists a public URL and you're connecting locally). + +### Option: `client.certfile` + +The absolute path to a certificate for client-authentication if Loki is using +mTLS to authenticate clients. + +### Option: `client.keyfile` + +The absolute path to the key for the client-authentication certificate if Loki +is using mTLS to authenticate clients. **Note**: This field is required if +`client.certfile` is provided + +### Option: `additional_pipeline_stages` + +The absolute path to a YAML file with a list of additional pipeline stages to +apply to the [default journal scrape config][addon-default-config]. The primary +use of this is to apply additional processing to logs from particular add-ons +you use if they are noisy or difficult to read. + +This file must contain only a YAML list of pipeline stages. They will be added +to the end of the ones already listed. If you don't like the ones listed, use +`skip_default_scrape_config` and `additional_scrape_configs` to write your own +instead. Here's an example of the contents of this file: + +```yaml +- match: + selector: '{container_name="addon_cebe7a76_hassio_google_drive_backup"}' + stages: + - multiline: + firstline: '^\x{001b}' +``` + +This particular example applies to the [google drive backup addon][addon-google-drive-backup]. +It uses the same log format as Home Assistant and outputs the escape character +at the start of each log line for color-coding in terminals. Looking for that +in a multiline stage makes it so tracebacks are included in the same log entry +as the error that caused them for easier readability. + +See the [promtail documentation][promtail-doc-stages] for more information on how +to configure pipeline stages. + +**Note**: This addon has access to `/ssl`, `/share` and `/config/promtail`. Place +the file in one of these locations, others will not work. + +### Option: `skip_default_scrape_config` + +Promtail will scrape the `systemd journal` using a pre-defined config you can +find [here][addon-default-config]. If you only want it to look at specific log +files you specify or you don't like the default config and want to adjust it, set +this to `true`. Then the only scrape configs used will be the ones you specify +in the `additional_scrape_configs` file. + +**Note**: This addon has access to `/ssl`, `/share` and `/config/promtail`. Place +the file in one of these locations, others will not work. + +### Option: `additional_scrape_configs` + +The absolute path to a YAML file with a list of additional scrape configs for +Promtail to use. The primary use of this is to point Promtail at additional log +files created by add-ons which don't use `stdout` for all logging. You an also +change the system journal is scraped by using this in conjunction with +`skip_default_scrape_config`. **Note**: If `skip_default_scrape_config` is `true` +then this field becomes required (otherwise there would be no scrape configs) + +The file must contain only a YAML list of scrape configs. Here's an example of +the contents of this file: + +```yaml +- job_name: zigbee2mqtt_messages + pipeline_stages: + static_configs: + - targets: + - localhost + labels: + job: zigbee2mqtt_messages + __path__: /share/zigbee2mqtt/log/**.txt +``` + +This particular example would cause Promtail to scrape up the logs MQTT that the +[Zigbee2MQTT add-on][addon-z2m] makes by default. + +Promtail provides a lot of options for configuring scrape configs. See the +documentation on [scrape_configs][promtail-doc-scrape-configs] for more info on +the options available and how to configure them. The documentation also provides +[other examples][promtail-doc-examples] you can use. + +I would also recommend reading the [Loki best practices][loki-doc-best-practices] +guide before making custom scrape configs. Pipelines are pretty powerful but +avoid making too many labels, it does more harm then good. Instead look into +what you can do with [LogQL][logql] can do at the other end. + +**Note**: This addon has access to `/ssl`, `/share` and `/config/promtail`. Place +the file in one of these locations, others will not work. + +### Port: `9080/tcp` + +Promtail expose an [API][api] on this port. This is primarily used for healthchecks +by the supervisor watchdog which does not require exposing it on the host. Most +users should leave this option disabled unless you have an external application +doing healthchecks. + +For advanced users creating custom scrape configs the other purpose of this API +is to expose metrics created by the [metrics][promtail-doc-metrics] pipeline +stage. Exposing this port would then allow you to read those metrics from another +system on your network. + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +## PLG Stack (Promtail, Loki and Grafana) + +Promtail isn't a standalone application, it's job is to find logs, process them +and ship them to Loki. Most likely you want the full PLG stack: + +- Promtail to process and ship logs +- Loki to aggregate and index them +- Grafana to visualize and monitor them + +### Loki + +The easiest way to get started is to also install the Loki add-on in this same +repository. By default this add-on is set up to collect all logs from the system +journal and ship them over to that add-on. If that's what you want there is no +additional configuration required for either. + +[![Open your Home Assistant instance and show the dashboard of a Supervisor add-on.][add-addon-shield]][add-addon-loki] + +Alternatively you can deploy Loki somewhere else. Take a look at the +[Loki documentation][loki-doc] for info on setting up a Loki deployment and +connecting Promtail to it. + +### Grafana + +Once you have Loki and Promtail set up you will probably want to connect to it +from [Grafana][grafana]. The easiest way to do that is to use the +[Grafana community add-on][addon-grafana]. From there you can find Loki in the +list of data sources and configure the connection (see [Loki in Grafana][loki-in-grafana]). +If you did choose to use the Loki add-on you can find additional instructions in +[the add-on's documentation][addon-loki-doc]. + +[![Open your Home Assistant instance and show the dashboard of a Supervisor add-on.][add-addon-shield]][add-addon-grafana] + +### Grafana Cloud + +If you prefer, you can also use Grafana's cloud service, +[see here](https://grafana.com/products/cloud/) on how to get started. This +service takes the place of both Loki and Grafana in the PLG stack, you just +point Promtail at it and you're done. To do this, first create an account then +[review this guide][grafana-cloud-docs-promtail] to see how to connect Promtail +to your account. Essentially its just a different URL since the credential information +goes in the URL. + +## 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. + diff --git a/addon-promtail-main/Dockerfile b/addon-promtail-main/Dockerfile new file mode 100644 index 0000000..7c6712d --- /dev/null +++ b/addon-promtail-main/Dockerfile @@ -0,0 +1,76 @@ +# https://github.com/mdegat01/promtail-journal/releases +#FROM ghcr.io/mdegat01/promtail-journal/${BUILD_ARCH}:1.6.0 as build_promtail + +# https://github.com/hassio-addons/addon-debian-base/releases +# hadolint ignore=DL3006 +ARG BUILD_FROM +FROM ${BUILD_FROM} + +# https://github.com/mikefarah/yq/releases +ARG YQ_VERSION=4.44.3 + +ARG BUILD_ARCH +# Add yq and tzdata (required for the timestamp stage) +RUN echo "deb http://deb.debian.org/debian bullseye-backports main" >> /etc/apt/sources.list +RUN apt-get update && apt-get install -t bullseye-backports -qy libsystemd-dev +RUN set -eux; \ + apt-get update; \ + apt-get install -qy --no-install-recommends \ + tar=1.34+dfsg-1 \ + ; \ + update-ca-certificates; \ + \ + case "${BUILD_ARCH}" in \ + amd64) BINARCH='amd64' ;; \ + armhf) BINARCH='arm' ;; \ + armv7) BINARCH='arm' ;; \ + aarch64) BINARCH='arm64' ;; \ + *) echo >&2 "error: unsupported architecture (${APKARCH})"; exit 1 ;; \ + esac; \ + curl -s -J -L -o /tmp/yq.tar.gz \ + "https://github.com/mikefarah/yq/releases/download/v${YQ_VERSION}/yq_linux_${BINARCH}.tar.gz"; \ + tar -xf /tmp/yq.tar.gz -C /usr/bin; \ + mv /usr/bin/yq_linux_${BINARCH} /usr/bin/yq; \ + chmod a+x /usr/bin/yq; \ + rm /tmp/yq.tar.gz; \ + yq --version; \ + \ + apt-get clean; \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*; \ + chmod +x /etc/cont-init.d/promtail_setup.sh; \ + chmod +x /etc/services.d/promtail/*; + +# Add promtail +COPY --from=grafana/promtail:latest /usr/bin/promtail /usr/bin/promtail +RUN promtail --version + +COPY rootfs / +WORKDIR /data/promtail + +# Build arguments +ARG BUILD_DATE +ARG BUILD_DESCRIPTION +ARG BUILD_NAME +ARG BUILD_REF +ARG BUILD_REPOSITORY +ARG BUILD_VERSION + +# Labels +LABEL \ + io.hass.name="${BUILD_NAME}" \ + io.hass.description="${BUILD_DESCRIPTION}" \ + io.hass.arch="${BUILD_ARCH}" \ + io.hass.type="addon" \ + io.hass.version=${BUILD_VERSION} \ + maintainer="Feres" \ + org.opencontainers.image.title="${BUILD_NAME}" \ + org.opencontainers.image.description="${BUILD_DESCRIPTION}" \ + org.opencontainers.image.vendor="Ferfes's Home Assistant Add-ons" \ + org.opencontainers.image.authors="Feres" \ + org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.url="https://github.com/mdegat01/hassio-addons" \ + org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \ + org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \ + org.opencontainers.image.created=${BUILD_DATE} \ + org.opencontainers.image.revision=${BUILD_REF} \ + org.opencontainers.image.version=${BUILD_VERSION} diff --git a/addon-promtail-main/apparmor.txt b/addon-promtail-main/apparmor.txt new file mode 100644 index 0000000..95ca197 --- /dev/null +++ b/addon-promtail-main/apparmor.txt @@ -0,0 +1,116 @@ +include + +# Docker overlay +@{docker_root}=/docker/ /var/lib/docker/ +@{fs_root}=/ @{docker_root}/overlay2/*/diff/ +@{do_etc}=@{fs_root}/etc/ +@{do_opt}=@{fs_root}/opt/ +@{do_run}=@{fs_root}/{run,var/run}/ +@{do_usr}=@{fs_root}/usr/ +@{do_var}=@{fs_root}/var/ + +# Systemd Journal location +@{journald}=/{run,var}/log/journal/{,**} + +profile promtail flags=(attach_disconnected,mediate_deleted) { + include + include + + # Send signals to child services + signal (send) peer=@{profile_name}//*, + + # Network access + network tcp, + network udp, + + # S6-Overlay + /init rix, + /bin/** rix, + /usr/bin/** rix, + @{do_etc}/s6*/** r, + @{do_etc}/fix-attrs.d/{,**} r, + @{do_etc}/cont-{init,finish}.d/{,**} rwix, + @{do_etc}/services.d/{,**} rwix, + @{do_run}/{s6,s6-rc*,service}/** rix, + /command/** rix, + /package/** rix, + @{do_run}/{,**} rwk, + /dev/tty rw, + @{do_usr}/lib/locale/{,**} r, + @{do_etc}/ssl/openssl.cnf r, + @{do_etc}/{group,hosts,passwd} r, + @{do_etc}/{host,nsswitch,resolv}.conf r, + /dev/null k, + + # https://github.com/hassio-addons/addon-debian-base/blob/main/base/rootfs/etc/cont-init.d/02-set-timezone.sh + # Wants to link /etc/localtime but apparmor sees a random hash so * it is. + @{do_etc}/* rw, + @{do_usr}/share/zoneinfo/{,**} r, + + # Bashio + /usr/lib/bashio/** ix, + /tmp/** rw, + + # Options.json & addon data + /data r, + /data/** rw, + + # Files needed for setup + @{do_etc}/promtail/{,**} rw, + /config/promtail/{,**} r, + /{share,ssl}/{,**} r, + @{journald} r, + + # Programs + /usr/bin/promtail cx -> promtail, + /usr/bin/yq Cx, + + profile promtail flags=(attach_disconnected,mediate_deleted) { + include + + # Receive signals from s6 + signal (receive) peer=*_promtail, + + # Network access + network tcp, + network udp, + network netlink raw, + network unix dgram, + + # Temp files + /tmp/.positions.yaml* rw, + + # Addon data + /data/** r, + /data/promtail/** rwk, + + # Config & log data + @{do_etc}/promtail/config.yaml r, + /config/promtail/{,**} r, + /{share,ssl}/** r, + @{journald} r, + + # Runtime usage + /usr/bin/promtail rm, + @{do_etc}/{hosts,passwd} r, + @{do_etc}/{resolv,nsswitch}.conf r, + @{PROC}/sys/net/core/somaxconn r, + @{sys}/kernel/mm/transparent_hugepage/hpage_pmd_size r, + /dev/null k, + @{do_etc}/ssl/certs/** r, + } + + profile /usr/bin/yq flags=(attach_disconnected,mediate_deleted) { + include + + # Config files + @{do_etc}/promtail/* rw, + /config/promtail/{,**} r, + /share/** r, + + # Runtime usage + /usr/bin/yq rm, + @{sys}/kernel/mm/transparent_hugepage/hpage_pmd_size r, + /dev/null k, + } +} diff --git a/addon-promtail-main/build.yaml b/addon-promtail-main/build.yaml new file mode 100644 index 0000000..be4d420 --- /dev/null +++ b/addon-promtail-main/build.yaml @@ -0,0 +1,9 @@ +--- +build_from: + amd64: ghcr.io/hassio-addons/debian-base/amd64:7.5.1 + armhf: ghcr.io/hassio-addons/debian-base/armhf:7.5.1 + armv7: ghcr.io/hassio-addons/debian-base/armv7:7.5.1 + aarch64: ghcr.io/hassio-addons/debian-base/aarch64:7.5.1 +codenotary: + base_image: codenotary@frenck.dev + signer: codenotary@degatano.com diff --git a/addon-promtail-main/config.yaml b/addon-promtail-main/config.yaml new file mode 100644 index 0000000..30fba64 --- /dev/null +++ b/addon-promtail-main/config.yaml @@ -0,0 +1,40 @@ +--- +name: Promtail +url: https://mezgit.duckdns.org/mezned/HAddons +version: edge +slug: promtail +arch: + - aarch64 + - amd64 + - armv7 + - armhf +description: Promtail for Home Assistant +codenotary: codenotary@degatano.com +init: false +journald: true +map: + - config + - share + - ssl +watchdog: http://[HOST]:[PORT:9080]/ready +ports: + 9080/tcp: +ports_description: + 9080/tcp: Promtail web server +options: + client: + url: http://39bd2704-loki:3100/loki/api/v1/push + log_level: info +schema: + client: + url: str + username: str? + password: password? + cafile: str? + servername: str? + certfile: str? + keyfile: str? + additional_pipeline_stages: str? + additional_scrape_configs: str? + skip_default_scrape_config: bool? + log_level: list(trace|debug|info|notice|warning|error|fatal)? diff --git a/addon-promtail-main/icon.png b/addon-promtail-main/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8e89cb402b223120536b78eda23e49ee6f758705 GIT binary patch literal 19951 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 CjNU~6 literal 0 HcmV?d00001 diff --git a/addon-promtail-main/rootfs/etc/cont-init.d/promtail_setup.sh b/addon-promtail-main/rootfs/etc/cont-init.d/promtail_setup.sh new file mode 100644 index 0000000..f8a95eb --- /dev/null +++ b/addon-promtail-main/rootfs/etc/cont-init.d/promtail_setup.sh @@ -0,0 +1,129 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +# ============================================================================== +# Home Assistant Add-on: Promtail +# This file makes the config file from inputs +# ============================================================================== +readonly CONFIG_DIR=/etc/promtail +readonly CONFIG_FILE="${CONFIG_DIR}/config.yaml" +readonly BASE_CONFIG="${CONFIG_DIR}/base_config.yaml" +readonly DEF_SCRAPE_CONFIGS="${CONFIG_DIR}/default-scrape-config.yaml" +readonly CUSTOM_SCRAPE_CONFIGS="${CONFIG_DIR}/custom-scrape-config.yaml" +declare cafile +declare add_stages +declare add_scrape_configs +scrape_configs="${DEF_SCRAPE_CONFIGS}" + +bashio::log.info 'Setting base config for promtail...' +cp "${BASE_CONFIG}" "${CONFIG_FILE}" + +# Set up client section +if ! bashio::config.is_empty 'client.username'; then + bashio::log.info 'Adding basic auth to client config...' + bashio::config.require 'client.password' "'client.username' is specified" + { + echo " basic_auth:" + echo " username: $(bashio::config 'client.username')" + echo " password: $(bashio::config 'client.password')" + } >> "${CONFIG_FILE}" +fi + +if ! bashio::config.is_empty 'client.cafile'; then + bashio::log.info "Adding TLS to client config..." + cafile="/ssl/$(bashio::config 'client.cafile')" + + if ! bashio::fs.file_exists "${cafile}"; then + bashio::log.fatal + bashio::log.fatal "The file specified for 'cafile' does not exist!" + bashio::log.fatal "Ensure the CA certificate file exists and full path is provided" + bashio::log.fatal + bashio::exit.nok + fi + { + echo " tls_config:" + echo " ca_file: ${cafile}" + } >> "${CONFIG_FILE}" + + if ! bashio::config.is_empty 'client.servername'; then + echo " server_name: $(bashio::config 'client.servername')" >> "${CONFIG_FILE}" + fi + + if ! bashio::config.is_empty 'client.certfile'; then + bashio::log.info "Adding mTLS to client config..." + bashio::config.require 'client.keyfile' "'client.certfile' is specified" + if ! bashio::fs.file_exists "$(bashio::config 'client.certfile')"; then + bashio::log.fatal + bashio::log.fatal "The file specified for 'certfile' does not exist!" + bashio::log.fatal "Ensure the certificate file exists and full path is provided" + bashio::log.fatal + bashio::exit.nok + fi + if ! bashio::fs.file_exists "$(bashio::config 'client.keyfile')"; then + bashio::log.fatal + bashio::log.fatal "The file specified for 'keyfile' does not exist!" + bashio::log.fatal "Ensure the key file exists and full path is provided" + bashio::log.fatal + bashio::exit.nok + fi + { + echo " cert_file: $(bashio::config 'client.certfile')" + echo " key_file: $(bashio::config 'client.keyfile')" + } >> "${CONFIG_FILE}" + fi +fi + +# Add in scrape configs +{ + echo + echo "scrape_configs:" +} >> "${CONFIG_FILE}" +if bashio::config.true 'skip_default_scrape_config'; then + bashio::log.info 'Skipping default journald scrape config...' + if ! bashio::config.is_empty 'additional_pipeline_stages'; then + bashio::log.warning + bashio::log.warning "'additional_pipeline_stages' ignored since 'skip_default_scrape_config' is true!" + bashio::log.warning 'See documentation for more information.' + bashio::log.warning + fi + bashio::config.require 'additional_scrape_configs' "'skip_default_scrape_config' is true" + +elif ! bashio::config.is_empty 'additional_pipeline_stages'; then + bashio::log.info "Adding additional pipeline stages to default journal scrape config..." + add_stages="$(bashio::config 'additional_pipeline_stages')" + scrape_configs="${CUSTOM_SCRAPE_CONFIGS}" + if ! bashio::fs.file_exists "${add_stages}"; then + bashio::log.fatal + bashio::log.fatal "The file specified for 'additional_pipeline_stages' does not exist!" + bashio::log.fatal "Ensure the file exists at the path specified" + bashio::log.fatal + bashio::exit.nok + fi + + yq -NP eval-all \ + 'select(fi == 0) + [{"add_pipeline_stages": select(fi == 1)}]' \ + "${DEF_SCRAPE_CONFIGS}" "${add_stages}" \ + | yq -NP e \ + '[(.[0] * .[1]) | {"job_name": .job_name, "journal": .journal, "relabel_configs": .relabel_configs, "pipeline_stages": .pipeline_stages + .add_pipeline_stages}]' \ + - > "${scrape_configs}" +fi + +if ! bashio::config.is_empty 'additional_scrape_configs'; then + bashio::log.info "Adding custom scrape configs..." + add_scrape_configs="$(bashio::config 'additional_scrape_configs')" + if ! bashio::fs.file_exists "${add_scrape_configs}"; then + bashio::log.fatal + bashio::log.fatal "The file specified for 'additional_scrape_configs' does not exist!" + bashio::log.fatal "Ensure the file exists at the path specified" + bashio::log.fatal + bashio::exit.nok + fi + + if bashio::config.true 'skip_default_scrape_config'; then + yq -NP e '[] + .' "${add_scrape_configs}" >> "${CONFIG_FILE}" + else + yq -NP eval-all 'select(fi == 0) + select(fi == 1)' \ + "${scrape_configs}" "${add_scrape_configs}" >> "${CONFIG_FILE}" + fi +else + yq -NP e '[] + .' "${scrape_configs}" >> "${CONFIG_FILE}" +fi diff --git a/addon-promtail-main/rootfs/etc/promtail/base_config.yaml b/addon-promtail-main/rootfs/etc/promtail/base_config.yaml new file mode 100644 index 0000000..0e6eb25 --- /dev/null +++ b/addon-promtail-main/rootfs/etc/promtail/base_config.yaml @@ -0,0 +1,11 @@ +--- +server: + http_listen_port: 9080 + grpc_listen_port: 0 + log_level: "${LOG_LEVEL}" + +positions: + filename: /data/promtail/positions.yaml + +clients: + - url: "${URL}" diff --git a/addon-promtail-main/rootfs/etc/promtail/default-scrape-config.yaml b/addon-promtail-main/rootfs/etc/promtail/default-scrape-config.yaml new file mode 100644 index 0000000..6e3f112 --- /dev/null +++ b/addon-promtail-main/rootfs/etc/promtail/default-scrape-config.yaml @@ -0,0 +1,27 @@ +--- +- job_name: journal + journal: + json: false + max_age: 12h + labels: + job: systemd-journal + path: "${JOURNAL_PATH}" + relabel_configs: + - source_labels: + - __journal__systemd_unit + target_label: unit + - source_labels: + - __journal__hostname + target_label: nodename + - source_labels: + - __journal_syslog_identifier + target_label: syslog_identifier + - source_labels: + - __journal_container_name + target_label: container_name + pipeline_stages: + - match: + selector: '{container_name=~"homeassistant|hassio_supervisor"}' + stages: + - multiline: + firstline: '^\x{001b}' diff --git a/addon-promtail-main/rootfs/etc/services.d/promtail/finish b/addon-promtail-main/rootfs/etc/services.d/promtail/finish new file mode 100644 index 0000000..649e4e5 --- /dev/null +++ b/addon-promtail-main/rootfs/etc/services.d/promtail/finish @@ -0,0 +1,15 @@ +#!/usr/bin/env bashio +# ============================================================================== +# Take down the S6 supervision tree when Promtail 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/addon-promtail-main/rootfs/etc/services.d/promtail/run b/addon-promtail-main/rootfs/etc/services.d/promtail/run new file mode 100644 index 0000000..d5f6a71 --- /dev/null +++ b/addon-promtail-main/rootfs/etc/services.d/promtail/run @@ -0,0 +1,40 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +# ============================================================================== +# Home Assistant Add-on: Promtail +# Runs Promtail +# ============================================================================== +readonly PROMTAIL_CONFIG='/etc/promtail/config.yaml' +declare log_level + +bashio::log.info 'Starting Promtail...' + +journal_path='/var/log/journal' +if ! bashio::fs.directory_exists "${journal_path}" || [ -z "$(ls -A ${journal_path})" ]; then + bashio::log.info "No journal at ${journal_path}, looking for journal in /run/log/journal instead" + journal_path='/run/log/journal' +fi + +case "$(bashio::config 'log_level')" in \ + trace) ;& \ + debug) log_level='debug' ;; \ + notice) ;& \ + warning) log_level='warn' ;; \ + error) ;& \ + fatal) log_level='error' ;; \ + *) log_level='info' ;; \ +esac; +bashio::log.info "Promtail log level set to ${log_level}" + +export "URL=$(bashio::config 'client.url')" +export "JOURNAL_PATH=${journal_path}" +export "LOG_LEVEL=${log_level}" + +promtail_args=("-config.expand-env=true" "-config.file=${PROMTAIL_CONFIG}") +if [ "${log_level}" == "debug" ]; then + bashio::log.debug "Logging full config on startup for debugging..." + promtail_args+=("-print-config-stderr=true") +fi + +bashio::log.info "Handing over control to Promtail..." +/usr/bin/promtail "${promtail_args[@]}" diff --git a/loki/.README.j2 b/loki/.README.j2 new file mode 100644 index 0000000..be06c84 --- /dev/null +++ b/loki/.README.j2 @@ -0,0 +1,126 @@ +# Home Assistant Add-on: Loki + +[![GitHub Release][releases-shield]][releases] +![Project Stage][project-stage-shield] +[![License][license-shield]][license] + +![Project Maintenance][maintenance-shield] +[![Community Forum][forum-shield]][forum] + +_Like Prometheus, but for logs!_ + +{% set repository = namespace(url='https%3A//github.com/mdegat01/hassio-addons', slug='39bd2704') %} +{% if channel == "edge" %} +{% set repository.url = repository.url + '-edge' %} +{% set repository.slug = '7eb274d5' %} +## WARNING! THIS IS AN EDGE REPOSITORY + +This Add-ons repository contains edge builds of add-ons. Edge +builds of 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 these add-ons: + + + +{% elif channel == "beta" %} +{% set repository.url = repository.url + '-beta' %} +{% set repository.slug = 'e9a81774' %} +## WARNING! THIS IS A BETA REPOSITORY + +This Add-ons repository contains beta builds of add-ons. Beta +builds of add-ons are based upon the latest release including pre-releases. + +- 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 these add-ons: + + + +{% endif %} +## About + +[Grafana Loki][loki] is a horizontally-scalable, +highly-available, multi-tenant log aggregation system inspired by Prometheus. It +is designed to be very cost effective and easy to operate. It does not index the +contents of the logs, but rather a set of labels for each log stream. + +## Support + +Got questions? + +You have several ways to get them answered: + +- The Home Assistant [Community Forum][forum]. I am + [CentralCommand][forum-centralcommand] there. +- The Home Assistant [Discord Chat Server][discord-ha]. Use the #add-ons channel, + I am CentralCommand#0913 there. + +You could also [open an issue here][issue] on GitHub. + +## Authors & contributors + +The original setup of this repository is by [Mike Degatano][mdegat01]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2021-2022 Mike Degatano + +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. + +{% if channel == "edge" %} +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +{% elif channel == "beta" %} +[project-stage-shield]: https://img.shields.io/badge/project%20stage-beta-orange.svg +{% else %} +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg +{% endif %} +[contributors]: https://github.com/mdegat01/addon-loki/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[forum-centralcommand]: https://community.home-assistant.io/u/CentralCommand/?u=CentralCommand +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-add-on-loki/293731?u=CentralCommand +[loki]: https://grafana.com/oss/loki/ +[mdegat01]: https://github.com/mdegat01 +[issue]: https://github.com/mdegat01/addon-loki/issues +[license]: https://github.com/mdegat01/addon-loki/blob/main/LICENSE +[license-shield]: https://img.shields.io/github/license/mdegat01/addon-loki.svg +[maintenance-shield]: https://img.shields.io/maintenance/yes/2022.svg +[releases-shield]: https://img.shields.io/github/release/mdegat01/addon-loki.svg +[releases]: https://github.com/mdegat01/addon-loki/releases diff --git a/loki/DOCS.md b/loki/DOCS.md new file mode 100644 index 0000000..5b71d03 --- /dev/null +++ b/loki/DOCS.md @@ -0,0 +1,213 @@ +# Home Assistant Add-on: Loki + +## Install + +First add the repository to the add-on store (`https://mezgit.duckdns.org/mezned/HAddons`): + +[![Open your Home Assistant instance and show the add add-on repository dialog +with a specific repository URL pre-filled.][add-repo-shield]][add-repo] + +Then find Loki in the store and click install: + +[![Open your Home Assistant instance and show the dashboard of a Supervisor add-on.][add-addon-shield]][add-addon] + +## Default Setup + +If you are also using the Promtail add-on in this repository then by default +Promtail wil ship Loki the systemd journal of the host. That will include all +logs from all addons, supervisor, home assistant, docker, and the host system +itself. No additional configuration is required if that's the setup you want. + +The configuration options can be used to encrypt traffic to Loki via SSL or +limit access via mTLS. If you change those though, make sure to update your +Promtail (or whatever client your using) config accordingly. + +Additionally, if you are an expert and want to take full control over Loki's +configuration there's an option to provide a custom config file. + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +ssl: true +certfile: fullchain.pem +keyfile: privkey.pem +days_to_keep: 30 +log_level: info +``` + +**Note**: _This is just an example, don't copy and paste it! Create your own!_ + +### Option: `ssl` + +Enables/Disables SSL (HTTPS). Set it `true` to enable it, `false` otherwise. + +### Option: `certfile` + +The certificate file to use for SSL. + +**Note**: _The file MUST be stored in `/ssl/`, which is the default_ + +### Option: `keyfile` + +The private key file to use for SSL. + +**Note**: _The file MUST be stored in `/ssl/`, which is the default_ + +### Option: `cafile` + +The CA certificate file used to sign client certificates. If set,cclients will +be required to present a valid client-authentication certificate to connect to +Loki (mTLS). + +**Note**: _The file MUST be stored in `/ssl/`, which is the default_ + +### Option: `days_to_keep` + +Number of days of logs to keep, older logs will be purged from the index. If set, +minimum is `1`, defaults to `30` if omitted. + +The minimum exists because `0` tells Loki to keep tables indefinitely (and the +addon to grow without bound). See [retention][loki-doc-retention] for more information +on how Loki's Compactor handles retention. + +**Note**: This sets an environmental variable referenced in the [default config][addon-default-config]. +If you use `config_path` below it is ignored unless you reference the same variable. + +### Option: `config_path` + +Absolute path to a custom config file for Loki. By default this addon will run +Loki using the config file [here][addon-default-config]. If you would prefer different +options then you can create your own config file to use instead and provide the +path to it. + +Review the [documentation][loki-doc] to learn about creating a config file for +Loki. You can also see examples [here][loki-doc-examples]. I would also strongly +recommend reading the [Loki best practices][loki-doc-best-practices] guide before +proceeding with a custom config. + +**Note**: `http_listen_address`, `http_listen_port` and `log_level` are set by +the add-on via CLI params so they cannot be changed. Everything else can be configured +in your file. + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +### Port: `3100/tcp` + +This is the port that Loki is listening on and that clients such as Promtail +should point at. + +**Note**: If you just want to send logs from the Promtail add-on to this one +you can leave this disabled. Setting it exposes the port on the host so you +only need to do that if you want other systems to ship logs to Loki. + +## PLG Stack (Promtail, Loki and Grafana) + +Loki isn't a standalone application, it doesn't do anything until you set up another +utility to send logs to it. It's job is to receive logs, index them, and make them +available to analysis tools such as Grafana. Loki typically expects to be deployed +in the full PLG stack: + +- Promtail to process and ship logs +- Loki to aggregate and index them +- Grafana to visualize and monitor them + +### Promtail + +Promtail is also made by Grafana, its only job is to scrape logs and send them +to Loki. The easiest way to get it set up is to install the +Promtail add-on in this same repository. + +[![Open your Home Assistant instance and show the dashboard of a Supervisor add-on.][add-addon-shield]][add-addon-promtail] + +This isn't the only way to get logs into Loki though. You may want to deploy +Promtail yourself to ship logs from other systems, you can find installation +instructions for that [here][promtail-doc-installation]. + +Other clients besides Promtail can also be configured to ship their logs to +Loki. The list of supported clients and how to set them up can be found [here][loki-doc-clients] + +### Grafana + +Grafana's flagship product is their [analysis and visualization tool][grafana] +and it is very easy to connect that to Loki (as you'd likely expect). They have +a guide on how to connect the two [here][loki-in-grafana]. + +The easiest way to install Grafana is to use the +Grafana community add-on. From there you can follow the guide above to add Loki +as a data source. When prompted for Loki's URL in the Grafana add-on, use `http://39bd2704-loki:3100` +(or `https://39bd2704-loki:3100` if you enabled SSL). + +[![Open your Home Assistant instance and show the dashboard of a Supervisor add-on.][add-addon-shield]][add-addon-grafana] + +### LogCLI + +Not required, but if you want to be able to interface with Loki via the +commandline for testing or scripting purposes you can set up [LogCLI][logcli]. +This will then let you query Loki using [LogQL][logql]. + +To make LogCLI accessible in the SSH add-ons you can set this install script +to run on startup of the add-on: + +```bash +#!/bin/bash + +# Set up LogCLI (not available in alpine linux) +# On 2.1.0 (see https://github.com/grafana/loki/releases ) +VERSION=2.1.0 + +APKARCH="$(apk --print-arch)" +case "$APKARCH" in + x86_64) BINARCH='amd64' ;; + armhf) BINARCH='arm' ;; + armv7) BINARCH='arm' ;; + aarch64) BINARCH='arm64' ;; + *) echo >&2 "error: unsupported architecture ($APKARCH)"; exit 1 ;; +esac + +curl -J -L -o /tmp/logcli.zip "https://github.com/grafana/loki/releases/download/v${VERSION}/logcli-linux-${BINARCH}.zip" +unzip /tmp/logcli.zip -d /usr/bin +mv "/usr/bin/logcli-linux-${BINARCH}" /usr/bin/logcli +chmod a+x /usr/bin/logcli +rm -f /tmp/logcli.zip +``` + +You also need to add the following to your `.bash_profile` or `.zshrc` file: + +```bash +export LOKI_ADDR=http://39bd2704-loki:3100 +``` + +Switch to `https` if you enabled SSL. The LogCLI doc has the full list of +possible exports you may need depending on how you deployed Loki. + +## 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. + diff --git a/loki/Dockerfile b/loki/Dockerfile new file mode 100644 index 0000000..96d8195 --- /dev/null +++ b/loki/Dockerfile @@ -0,0 +1,99 @@ +# https://github.com/hassio-addons/addon-base/releases +ARG BUILD_FROM=ghcr.io/hassio-addons/base/amd64 + +# hadolint ignore=DL3006 +FROM ${BUILD_FROM} + +# https://github.com/grafana/loki/releases +ARG LOKI_VERSION=3.2.1 + +# add Loki and Nginx +RUN set -eux; \ + apk update; \ + \ + apk add --no-cache --virtual .build-deps \ + unzip=6.0-r9 \ + ; \ + APKARCH="$(apk --print-arch)"; \ + case "$APKARCH" in \ + x86_64) BINARCH='amd64' ;; \ + armhf) BINARCH='arm' ;; \ + armv7) BINARCH='arm' ;; \ + aarch64) BINARCH='arm64' ;; \ + *) echo >&2 "error: unsupported architecture ($APKARCH)"; exit 1 ;; \ + esac; \ + curl -s -J -L -o /tmp/loki.zip \ + "https://github.com/grafana/loki/releases/download/v${LOKI_VERSION}/loki-linux-${BINARCH}.zip"; \ + unzip /tmp/loki.zip -d /usr/bin; \ + mv /usr/bin/loki-linux-${BINARCH} /usr/bin/loki; \ + chmod a+x /usr/bin/loki; \ + rm /tmp/loki.zip; \ + apk del .build-deps; \ + \ + apk add --no-cache \ + ca-certificates=20220614-r0 \ + nginx=1.22.0-r1 \ + ; \ + update-ca-certificates; \ + nginx -v; \ + rm -f -r /etc/nginx; \ + mkdir -p \ + /var/lib/nginx/tmp/client_body \ + /var/lib/nginx/tmp/fastcgi \ + /var/lib/nginx/tmp/proxy \ + /var/lib/nginx/tmp/scgi \ + /var/lib/nginx/tmp/uwsgi \ + /var/log/nginx \ + /run/nginx \ + ; \ + touch /var/log/nginx/error.log; \ + \ + echo "Add user for Loki"; \ + mkdir -p /data/loki; \ + addgroup -S abc; \ + adduser -u 12345 -h /data/loki -D -S abc -G abc; \ + \ + chown -R abc:abc \ + /usr/lib/nginx \ + /usr/share/nginx \ + /var/lib/nginx \ + /var/log/nginx \ + ; \ + chmod +x /etc/cont-init.d/nginx.sh;\ + chmod +x /etc/services.d/loki/*; \ + chmod +x /etc/services.d/nginx/*; + +# See https://github.com/grafana/loki/issues/1928 +RUN [ ! -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.conf + +COPY --chown=abc:abc rootfs / +WORKDIR /data/loki + +# Build arguments +ARG BUILD_ARCH +ARG BUILD_DATE +ARG BUILD_DESCRIPTION +ARG BUILD_NAME +ARG BUILD_REF +ARG BUILD_REPOSITORY +ARG BUILD_VERSION + +# Labels +LABEL \ + io.hass.name="${BUILD_NAME}" \ + io.hass.description="${BUILD_DESCRIPTION}" \ + io.hass.arch="${BUILD_ARCH}" \ + io.hass.type="addon" \ + io.hass.version=${BUILD_VERSION} \ + maintainer="mdegat01" \ + org.opencontainers.image.title="${BUILD_NAME}" \ + org.opencontainers.image.description="${BUILD_DESCRIPTION}" \ + org.opencontainers.image.vendor="mdegat01's Home Assistant Add-ons" \ + org.opencontainers.image.authors="mdegat01" \ + org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.url="https://github.com/mdegat01/hassio-addons" \ + org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \ + org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \ + org.opencontainers.image.created=${BUILD_DATE} \ + org.opencontainers.image.revision=${BUILD_REF} \ + org.opencontainers.image.version=${BUILD_VERSION} diff --git a/loki/apparmor.txt b/loki/apparmor.txt new file mode 100644 index 0000000..767dac8 --- /dev/null +++ b/loki/apparmor.txt @@ -0,0 +1,139 @@ +include + +# Docker overlay +@{docker_root}=/docker/ /var/lib/docker/ +@{fs_root}=/ @{docker_root}/overlay2/*/diff/ +@{do_etc}=@{fs_root}/etc/ +@{do_opt}=@{fs_root}/opt/ +@{do_run}=@{fs_root}/{run,var/run}/ +@{do_usr}=@{fs_root}/usr/ +@{do_var}=@{fs_root}/var/ + +# Nginx data dirs +@{nginx_data}=@{do_usr}/lib/nginx/ @{do_usr}/share/nginx/ @{do_var}/lib/nginx/ + +profile loki flags=(attach_disconnected,mediate_deleted) { + include + include + + # Send signals to child services + signal (send) peer=@{profile_name}//*, + + # Network access + network tcp, + network udp, + + # Capabilities to run service as non-root + capability kill, + capability dac_override, + capability chown, + capability fowner, + capability fsetid, + capability setuid, + capability setgid, + + # S6-Overlay + /init rix, + /bin/** rix, + /usr/bin/** rix, + @{do_etc}/s6*/** r, + @{do_etc}/fix-attrs.d/{,**} r, + @{do_etc}/cont-{init,finish}.d/{,**} rwix, + @{do_etc}/services.d/{,**} rwix, + @{do_run}/{s6,s6-rc*,service}/** rix, + /command/** rix, + /package/** rix, + @{do_run}/{,**} rwk, + /dev/tty rw, + @{do_usr}/lib/locale/{,**} r, + @{do_etc}/ssl/openssl.cnf r, + @{do_etc}/ssl1.1/openssl.cnf r, + @{do_etc}/{group,hosts,passwd,resolv.conf} r, + /dev/null k, + # Needed for v2, not v3 + @{do_etc}/s6/** rix, + + # Bashio + /usr/lib/bashio/** ix, + /tmp/** rw, + + # Options.json & addon data + /data r, + /data/** rw, + + # Needed for setup + @{do_etc}/{loki,nginx}/{,**} rw, + @{nginx_data}/{,**} rw, + @{do_var}/log/nginx/{,**} rw, + /{share,ssl}/{,**} r, + + # Programs + /usr/bin/loki cx -> loki, + /usr/sbin/nginx Cx -> nginx, + + profile loki flags=(attach_disconnected,mediate_deleted) { + include + + # Receive signals from s6 + signal (receive) peer=*_loki, + + # Network access + network tcp, + network udp, + network netlink raw, + network unix dgram, + + # Addon data + /data/** r, + /data/loki/** rwk, + + # Config + @{do_etc}/loki/* r, + /share/** r, + + # Runtime usage + owner /tmp/** rwk, + /usr/bin/loki rm, + @{do_etc}/hosts r, + @{do_etc}/{nsswitch,resolv}.conf r, + @{PROC}/sys/net/core/somaxconn r, + @{PROC}/@{pid}/cpuset r, + @{sys}/kernel/mm/transparent_hugepage/hpage_pmd_size r, + } + + profile nginx flags=(attach_disconnected,mediate_deleted) { + include + + # Receive signals from s6 + signal (receive) peer=*_loki, + + # Network access + network tcp, + + # Capabilities to lower privileges + capability dac_override, + capability mknod, + capability setuid, + capability setgid, + + # Allow parent to ptrace + ptrace (read) peer=*_loki, + + # Config files + @{do_etc}/nginx/** r, + /ssl/** r, + + # Service data + @{do_var}/lib/nginx/tmp/** rw, + @{do_var}/log/nginx/* w, + @{nginx_data}/** r, + + # Runtime usage + @{do_run}/nginx.pid rw, + @{PROC}/1/fd/1 w, + /usr/sbin/nginx rm, + @{do_etc}/{group,passwd} r, + @{do_etc}/ssl/openssl.cnf r, + @{do_etc}/ssl1.1/openssl.cnf r, + } +} diff --git a/loki/build.yaml b/loki/build.yaml new file mode 100644 index 0000000..1a9f6a3 --- /dev/null +++ b/loki/build.yaml @@ -0,0 +1,9 @@ +--- +build_from: + amd64: ghcr.io/hassio-addons/base/amd64:16.3.4 + armhf: ghcr.io/hassio-addons/base/armhf:16.3.4 + armv7: ghcr.io/hassio-addons/base/armv7:16.3.4 + aarch64: ghcr.io/hassio-addons/base/aarch64:16.3.4 +codenotary: + base_image: codenotary@frenck.dev + signer: codenotary@degatano.com diff --git a/loki/config.yaml b/loki/config.yaml new file mode 100644 index 0000000..cefdf99 --- /dev/null +++ b/loki/config.yaml @@ -0,0 +1,34 @@ +--- +name: Loki +url: hhttps://mezgit.duckdns.org/mezned/HAddons +version: edge +slug: loki +arch: + - aarch64 + - amd64 + - armv7 + - armhf +description: Loki for Home Assistant +codenotary: codenotary@degatano.com +init: false +startup: system +map: + - share + - ssl +watchdog: http://[HOST]:3101/ready +ports: + 3100/tcp: +ports_description: + 3100/tcp: HTTP listen port +options: + ssl: false + days_to_keep: 30 + log_level: info +schema: + ssl: bool + certfile: str? + keyfile: str? + cafile: str? + days_to_keep: int(1,)? + config_path: str? + log_level: list(trace|debug|info|notice|warning|error|fatal)? diff --git a/loki/icon.png b/loki/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8e89cb402b223120536b78eda23e49ee6f758705 GIT binary patch literal 19951 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 CjNU~6 literal 0 HcmV?d00001 diff --git a/loki/rootfs/etc/cont-init.d/nginx.sh b/loki/rootfs/etc/cont-init.d/nginx.sh new file mode 100644 index 0000000..7997b40 --- /dev/null +++ b/loki/rootfs/etc/cont-init.d/nginx.sh @@ -0,0 +1,52 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +# ============================================================================== +# Home Assistant Add-on: Loki +# This file configures nginx +# ============================================================================== +readonly NGINX_SERVERS=/etc/nginx/servers +readonly NGINX_CONF="${NGINX_SERVERS}/direct.conf" +declare certfile +declare keyfile + +bashio::config.require.ssl + +if bashio::config.true 'ssl'; then + bashio::log.info 'Setting up SSL...' + + certfile=$(bashio::config 'certfile') + keyfile=$(bashio::config 'keyfile') + + if ! bashio::config.is_empty 'cafile'; then + bashio::log.info 'Setting up mTLS...' + cafile=$(bashio::config 'cafile') + + # Absolute path support deprecated 4/21 for release 1.5.0. + # Wait until at least 5/21 to remove + if [[ $cafile =~ ^\/ ]]; then + bashio::log.warning "Providing an absolute path for 'cafile' is deprecated." + bashio::log.warning "Support for absolute paths will be removed in a future release." + bashio::log.warning "Please put your CA file in /ssl and provide a relative path." + else + cafile="/ssl/${cafile}" + fi + + if ! bashio::fs.file_exists "${cafile}"; then + bashio::log.fatal + bashio::log.fatal "The file specified for 'cafile' does not exist!" + bashio::log.fatal "Ensure the CA certificate file exists and full path is provided" + bashio::log.fatal + bashio::exit.nok + fi + + mv "${NGINX_SERVERS}/direct-mtls.disabled" "${NGINX_CONF}" + sed -i "s#%%cafile%%#${cafile}#g" "${NGINX_CONF}" + else + mv "${NGINX_SERVERS}/direct-ssl.disabled" "${NGINX_CONF}" + fi + + sed -i "s#%%certfile%%#${certfile}#g" "${NGINX_CONF}" + sed -i "s#%%keyfile%%#${keyfile}#g" "${NGINX_CONF}" +else + mv "${NGINX_SERVERS}/direct.disabled" "${NGINX_CONF}" +fi diff --git a/loki/rootfs/etc/loki/default-config.yaml b/loki/rootfs/etc/loki/default-config.yaml new file mode 100644 index 0000000..9d7253b --- /dev/null +++ b/loki/rootfs/etc/loki/default-config.yaml @@ -0,0 +1,52 @@ +--- +auth_enabled: false + +server: {} + +ingester: + lifecycler: + address: 127.0.0.1 + ring: + kvstore: + store: inmemory + replication_factor: 1 + final_sleep: 0s + chunk_idle_period: 1h + max_chunk_age: 1h + chunk_target_size: 1048576 + chunk_retain_period: 30s + max_transfer_retries: 0 + wal: + dir: /data/loki/wal + +schema_config: + configs: + - from: 2020-10-24 + store: boltdb-shipper + object_store: filesystem + schema: v11 + index: + prefix: index_ + period: 24h + +storage_config: + boltdb_shipper: + active_index_directory: /data/loki/boltdb-shipper-active + cache_location: /data/loki/boltdb-shipper-cache + cache_ttl: 24h + shared_store: filesystem + filesystem: + directory: /data/loki/chunks + +compactor: + working_directory: /data/loki/boltdb-shipper-compactor + shared_store: filesystem + retention_enabled: true + +limits_config: + reject_old_samples: true + reject_old_samples_max_age: 168h + retention_period: ${RETENTION_PERIOD:29d} + +chunk_store_config: + max_look_back_period: 0s diff --git a/loki/rootfs/etc/nginx/includes/mime.types b/loki/rootfs/etc/nginx/includes/mime.types new file mode 100644 index 0000000..7c7cdef --- /dev/null +++ b/loki/rootfs/etc/nginx/includes/mime.types @@ -0,0 +1,96 @@ +types { + text/html html htm shtml; + text/css css; + text/xml xml; + image/gif gif; + image/jpeg jpeg jpg; + application/javascript js; + application/atom+xml atom; + application/rss+xml rss; + + text/mathml mml; + text/plain txt; + text/vnd.sun.j2me.app-descriptor jad; + text/vnd.wap.wml wml; + text/x-component htc; + + image/png png; + image/svg+xml svg svgz; + image/tiff tif tiff; + image/vnd.wap.wbmp wbmp; + image/webp webp; + image/x-icon ico; + image/x-jng jng; + image/x-ms-bmp bmp; + + font/woff woff; + font/woff2 woff2; + + application/java-archive jar war ear; + application/json json; + application/mac-binhex40 hqx; + application/msword doc; + application/pdf pdf; + application/postscript ps eps ai; + application/rtf rtf; + application/vnd.apple.mpegurl m3u8; + application/vnd.google-earth.kml+xml kml; + application/vnd.google-earth.kmz kmz; + application/vnd.ms-excel xls; + application/vnd.ms-fontobject eot; + application/vnd.ms-powerpoint ppt; + application/vnd.oasis.opendocument.graphics odg; + application/vnd.oasis.opendocument.presentation odp; + application/vnd.oasis.opendocument.spreadsheet ods; + application/vnd.oasis.opendocument.text odt; + application/vnd.openxmlformats-officedocument.presentationml.presentation + pptx; + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + xlsx; + application/vnd.openxmlformats-officedocument.wordprocessingml.document + docx; + application/vnd.wap.wmlc wmlc; + application/x-7z-compressed 7z; + application/x-cocoa cco; + application/x-java-archive-diff jardiff; + application/x-java-jnlp-file jnlp; + application/x-makeself run; + application/x-perl pl pm; + application/x-pilot prc pdb; + application/x-rar-compressed rar; + application/x-redhat-package-manager rpm; + application/x-sea sea; + application/x-shockwave-flash swf; + application/x-stuffit sit; + application/x-tcl tcl tk; + application/x-x509-ca-cert der pem crt; + application/x-xpinstall xpi; + application/xhtml+xml xhtml; + application/xspf+xml xspf; + application/zip zip; + + application/octet-stream bin exe dll; + application/octet-stream deb; + application/octet-stream dmg; + application/octet-stream iso img; + application/octet-stream msi msp msm; + + audio/midi mid midi kar; + audio/mpeg mp3; + audio/ogg ogg; + audio/x-m4a m4a; + audio/x-realaudio ra; + + video/3gpp 3gpp 3gp; + video/mp2t ts; + video/mp4 mp4; + video/mpeg mpeg mpg; + video/quicktime mov; + video/webm webm; + video/x-flv flv; + video/x-m4v m4v; + video/x-mng mng; + video/x-ms-asf asx asf; + video/x-ms-wmv wmv; + video/x-msvideo avi; +} diff --git a/loki/rootfs/etc/nginx/includes/proxy_params.conf b/loki/rootfs/etc/nginx/includes/proxy_params.conf new file mode 100644 index 0000000..1990d49 --- /dev/null +++ b/loki/rootfs/etc/nginx/includes/proxy_params.conf @@ -0,0 +1,15 @@ +proxy_http_version 1.1; +proxy_ignore_client_abort off; +proxy_read_timeout 86400s; +proxy_redirect off; +proxy_send_timeout 86400s; +proxy_max_temp_file_size 0; + +proxy_set_header Accept-Encoding ""; +proxy_set_header Connection $connection_upgrade; +proxy_set_header Host $http_host; +proxy_set_header Upgrade $http_upgrade; +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +proxy_set_header X-Forwarded-Proto $scheme; +proxy_set_header X-NginX-Proxy true; +proxy_set_header X-Real-IP $remote_addr; diff --git a/loki/rootfs/etc/nginx/includes/server_params.conf b/loki/rootfs/etc/nginx/includes/server_params.conf new file mode 100644 index 0000000..09c0654 --- /dev/null +++ b/loki/rootfs/etc/nginx/includes/server_params.conf @@ -0,0 +1,6 @@ +root /dev/null; +server_name $hostname; + +add_header X-Content-Type-Options nosniff; +add_header X-XSS-Protection "1; mode=block"; +add_header X-Robots-Tag none; diff --git a/loki/rootfs/etc/nginx/includes/ssl_params.conf b/loki/rootfs/etc/nginx/includes/ssl_params.conf new file mode 100644 index 0000000..e6789cb --- /dev/null +++ b/loki/rootfs/etc/nginx/includes/ssl_params.conf @@ -0,0 +1,8 @@ +ssl_protocols TLSv1.2 TLSv1.3; +ssl_prefer_server_ciphers off; +ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; +ssl_session_timeout 10m; +ssl_session_cache shared:SSL:10m; +ssl_session_tickets off; +ssl_stapling on; +ssl_stapling_verify on; diff --git a/loki/rootfs/etc/nginx/includes/upstream.conf b/loki/rootfs/etc/nginx/includes/upstream.conf new file mode 100644 index 0000000..75f1dea --- /dev/null +++ b/loki/rootfs/etc/nginx/includes/upstream.conf @@ -0,0 +1,3 @@ +upstream backend { + server 127.0.0.1:8080; +} diff --git a/loki/rootfs/etc/nginx/nginx.conf b/loki/rootfs/etc/nginx/nginx.conf new file mode 100644 index 0000000..58dea17 --- /dev/null +++ b/loki/rootfs/etc/nginx/nginx.conf @@ -0,0 +1,52 @@ +# Run nginx in foreground. +daemon off; + +# Set user +user abc; + +# Pid storage location. +pid /var/run/nginx.pid; + +# Set number of worker processes. +worker_processes 1; + +# Enables the use of JIT for regular expressions to speed-up their processing. +pcre_jit on; + +# Write error log to the add-on log. +error_log /proc/1/fd/1 error; + +# Load dynamic modules. +include /etc/nginx/modules/*.conf; + +# Max num of simultaneous connections by a worker process. +events { + worker_connections 512; +} + +http { + include /etc/nginx/includes/mime.types; + + log_format homeassistant '[$time_local] $status ' + '$http_x_forwarded_for($remote_addr) ' + '$request ($http_user_agent)'; + + access_log off; + client_max_body_size 4G; + default_type application/octet-stream; + gzip on; + keepalive_timeout 65; + sendfile on; + server_tokens off; + tcp_nodelay on; + tcp_nopush on; + + map $http_upgrade $connection_upgrade { + default upgrade; + '' close; + } + + include /etc/nginx/includes/upstream.conf; + + include /etc/nginx/servers/*.conf; +} diff --git a/loki/rootfs/etc/nginx/servers/direct-mtls.disabled b/loki/rootfs/etc/nginx/servers/direct-mtls.disabled new file mode 100644 index 0000000..4b3699b --- /dev/null +++ b/loki/rootfs/etc/nginx/servers/direct-mtls.disabled @@ -0,0 +1,17 @@ +server { + listen 3100 default_server ssl; + + include /etc/nginx/includes/server_params.conf; + include /etc/nginx/includes/ssl_params.conf; + include /etc/nginx/includes/proxy_params.conf; + + ssl_certificate /ssl/%%certfile%%; + ssl_certificate_key /ssl/%%keyfile%%; + + ssl_client_certificate %%cafile%%; + ssl_verify_client on; + + location / { + proxy_pass http://backend; + } +} diff --git a/loki/rootfs/etc/nginx/servers/direct-ssl.disabled b/loki/rootfs/etc/nginx/servers/direct-ssl.disabled new file mode 100644 index 0000000..66ef652 --- /dev/null +++ b/loki/rootfs/etc/nginx/servers/direct-ssl.disabled @@ -0,0 +1,14 @@ +server { + listen 3100 default_server ssl; + + include /etc/nginx/includes/server_params.conf; + include /etc/nginx/includes/ssl_params.conf; + include /etc/nginx/includes/proxy_params.conf; + + ssl_certificate /ssl/%%certfile%%; + ssl_certificate_key /ssl/%%keyfile%%; + + location / { + proxy_pass http://backend; + } +} diff --git a/loki/rootfs/etc/nginx/servers/direct.disabled b/loki/rootfs/etc/nginx/servers/direct.disabled new file mode 100644 index 0000000..da17776 --- /dev/null +++ b/loki/rootfs/etc/nginx/servers/direct.disabled @@ -0,0 +1,10 @@ +server { + listen 3100 default_server; + + include /etc/nginx/includes/server_params.conf; + include /etc/nginx/includes/proxy_params.conf; + + location / { + proxy_pass http://backend; + } +} diff --git a/loki/rootfs/etc/nginx/servers/ready.conf b/loki/rootfs/etc/nginx/servers/ready.conf new file mode 100644 index 0000000..985928c --- /dev/null +++ b/loki/rootfs/etc/nginx/servers/ready.conf @@ -0,0 +1,14 @@ +server { + listen 3101 default_server; + + include /etc/nginx/includes/server_params.conf; + include /etc/nginx/includes/proxy_params.conf; + + location = /ready { + proxy_pass http://backend; + } + + location / { + return 444; + } +} diff --git a/loki/rootfs/etc/services.d/loki/finish b/loki/rootfs/etc/services.d/loki/finish new file mode 100644 index 0000000..782f6ed --- /dev/null +++ b/loki/rootfs/etc/services.d/loki/finish @@ -0,0 +1,14 @@ +#!/usr/bin/env bashio +# ============================================================================== +# Home Assistant Add-on: Loki +# Take down the S6 supervision tree when Loki fails +# ============================================================================== + +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 + diff --git a/loki/rootfs/etc/services.d/loki/run b/loki/rootfs/etc/services.d/loki/run new file mode 100644 index 0000000..7949afe --- /dev/null +++ b/loki/rootfs/etc/services.d/loki/run @@ -0,0 +1,51 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +# ============================================================================== +# Home Assistant Add-on: Loki +# Runs Loki +# ============================================================================== + +readonly BIND_ADDR=127.0.0.1 +readonly HTTP_PORT=8080 +declare log_level +loki_config='/etc/loki/default-config.yaml' + +bashio::log.info 'Starting Loki...' + +if bashio::config.exists 'config_path'; then + loki_config=$(bashio::config 'config_path') + bashio::log.info "Using config at ${loki_config}" +else + bashio::log.info "Using default config" +fi + +retention_period="$(bashio::config 'days_to_keep' 1)d" +bashio::log.info "Retention period set to ${retention_period}" +export "RETENTION_PERIOD=${retention_period}" + +case "$(bashio::config 'log_level')" in \ + trace) ;& \ + debug) log_level='debug' ;; \ + notice) ;& \ + warning) log_level='warn' ;; \ + error) ;& \ + fatal) log_level='error' ;; \ + *) log_level='info' ;; \ +esac; +bashio::log.info "Loki log level set to ${log_level}" + +loki_args=( + "-config.expand-env=true" + "-config.file=${loki_config}" + "-server.http-listen-address=${BIND_ADDR}" + "-server.http-listen-port=${HTTP_PORT}" + "-log.level=${log_level}" +) +if [ "${log_level}" == "debug" ]; then + bashio::log.debug "Logging full config on startup for debugging..." + loki_args+=("-print-config-stderr=true") +fi + +bashio::log.info "Handing over control to Loki..." +exec s6-setuidgid abc \ + /usr/bin/loki "${loki_args[@]}" diff --git a/loki/rootfs/etc/services.d/nginx/finish b/loki/rootfs/etc/services.d/nginx/finish new file mode 100644 index 0000000..692dde7 --- /dev/null +++ b/loki/rootfs/etc/services.d/nginx/finish @@ -0,0 +1,13 @@ +#!/usr/bin/env bashio +# ============================================================================== +# Home Assistant Add-on: Loki +# Take down the S6 supervision tree when Nginx fails +# ============================================================================== + +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 diff --git a/loki/rootfs/etc/services.d/nginx/run b/loki/rootfs/etc/services.d/nginx/run new file mode 100644 index 0000000..0d1542f --- /dev/null +++ b/loki/rootfs/etc/services.d/nginx/run @@ -0,0 +1,10 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +# ============================================================================== +# Home Assistant Add-on: Loki +# Runs the Nginx daemon +# ============================================================================== +bashio::net.wait_for 8080 +bashio::log.info "Starting NGinx..." + +exec /usr/sbin/nginx diff --git a/prometheus_node_exporter/CHANGELOG.md b/prometheus_node_exporter/CHANGELOG.md new file mode 100644 index 0000000..7edec13 --- /dev/null +++ b/prometheus_node_exporter/CHANGELOG.md @@ -0,0 +1,112 @@ +# Changelog + +## [1.0.1] - 2024-09-11 + +- Upgraded base image from `ghcr.io/hassio-addons/base/:16.1.2` to `16.3.0` + +## [1.0.0] - 2024-07-01 + +⚠️ BREAKING CHANGES ⚠️ + +- Upgraded Node Exporter to `1.8.1` +- Upgraded base image from `ghcr.io/hassio-addons/base/:15.0.8` to `16.1.2` +- Removes the default username/password +- Now requires a plaintext password instead of a bcrypt string (the container will bcrypt the password for you) + - If you're upgrading from `0.9.1` or any earlier version, you will **NEED** to go to the "Configuration" tab and enter the plaintext version of your password (if you leave the bcrypt hash in the password field, the container will try to hash your already-hashed password) + +## [0.9.1] - 2024-05-14 + +- Upgraded base image from `ghcr.io/hassio-addons/base/:15.0.4` to `15.0.8` +- Added [CONTRIBUTING.md](https://github.com/loganmarchione/hassos-addons/blob/main/prometheus_node_exporter/CONTRIBUTING.md) + +## [0.9.0] - 2024-05-13 + +- Upgraded Node Exporter to `1.8.0` thanks to [@b-reich](https://github.com/b-reich) in https://github.com/loganmarchione/hassos-addons/pull/49 + +## [0.8.2] - 2024-01-16 + +- Upgraded base image from `ghcr.io/hassio-addons/base/:15.0.1` to `15.0.4` + +## [0.8.1] - 2024-01-11 + +- Published pre-built image to GHCR thanks to [@wozz](https://github.com/wozz) in https://github.com/loganmarchione/hassos-addons/pull/47 + +## [0.8.0] - 2023-12-13 + +- Upgraded Node Exporter to `1.7.0` +- Upgraded base image from `ghcr.io/hassio-addons/base/:14.1.0` to `15.0.1` + +## [0.7.0] - 2023-08-18 + +- Upgraded Node Exporter to `1.6.1` +- Upgraded base image from `ghcr.io/hassio-addons/base/:14.0.0` to `14.1.0` + +## [0.6.0] - 2023-05-18 + +- Upgraded base image from `ghcr.io/hassio-addons/base/:13.1.3` to `14.0.0` +- Added support for Prometheus Node Exporter command-line arguments thanks to [@falzm](https://github.com/falzm) in https://github.com/loganmarchione/hassos-addons/pull/34 + +## [0.5.0] - 2023-03-16 + +- Upgraded Node Exporter to `1.5.0` +- Upgraded base image from `ghcr.io/hassio-addons/base/:12.2.4` to `13.1.3` + +## [0.4.0] - 2022-10-20 + +- Upgraded base image from `ghcr.io/hassio-addons/base/:12.2.0` to `12.2.4` + +## [0.3.0] - 2022-09-26 + +- Upgraded Node Exporter to `1.4.0` + +## [0.2.1] - 2022-08-05 + +- Added more logging around TLS + +## [0.2.0] - 2022-08-05 + +- Added TLS support thanks to [@Quedale](https://github.com/Quedale) in https://github.com/loganmarchione/hassos-addons/pull/7 +- Mapped Node Exporter config files from `/etc` to `/config`, to allow editing via the [File editor add-on](https://github.com/home-assistant/addons/tree/master/configurator) + +## [0.1.1] - 2022-08-05 + +- Added configuration option descriptions + +## [0.1.0] - 2022-07-11 + +- Upgraded base image from `ghcr.io/hassio-addons/base/:11.1.2` to `12.2.0` (Alpine Linux 3.16), but also disabled the s6 init system because of [this issue](https://github.com/home-assistant/supervisor/issues/3642) +- Added CI from [here](https://github.com/hassio-addons/addon-glances/blob/main/.github/workflows/ci.yaml) + +## [0.0.7] - 2022-06-07 + +- Upgraded base image from `ghcr.io/hassio-addons/base/:11.1.0` to `11.1.2` (this is the last without s6 v3) + +## [0.0.6] - 2022-05-17 + +- Fixed S6-overlay v3 problems +- Added build.json file to better control base image versions +- Small formatting fixes and readability changes + +## [0.0.5] - 2022-02-13 + +- Added HTTP Basic Auth + +## [0.0.4] - 2021-12-29 + +- Upgraded Node Exporter to `1.3.1` + +## [0.0.3] - 2021-12-12 + +- Built for `armv7` (Raspberry Pi 3B) thanks to [@jaredacox](https://github.com/jaredacox) in https://github.com/loganmarchione/hassos-addons/pull/1 + +## [0.0.2] - 2021-11-16 + +- Built for `aarch64` (Raspberry Pi 4B) + +## [0.0.1] - 2021-11-03 + +- Initial release + +## Note + +I'm not making numbered GitHub releases/tags, since this is still a beta project. These release numbers are purely made up. diff --git a/prometheus_node_exporter/CONTRIBUTING.md b/prometheus_node_exporter/CONTRIBUTING.md new file mode 100644 index 0000000..63ca99f --- /dev/null +++ b/prometheus_node_exporter/CONTRIBUTING.md @@ -0,0 +1,57 @@ +# Contributing + +## Making changes + +Currently, this repo pushes a tagged image from `main` to the [packages](https://github.com/users/loganmarchione/packages?repo_name=hassos-addons) tab each time `main` is updated. As such, if you're proposing a change, please update the following files in a PR and DO NOT push directly to `main`. + +1. Bump the `version` number in the [config.json](https://github.com/loganmarchione/hassos-addons/blob/main/prometheus_node_exporter/config.json) file +1. Make whatever changes you need (e.g., bumping the [version of Node Exporter](https://github.com/loganmarchione/hassos-addons/blob/main/prometheus_node_exporter/Dockerfile) or the [version of the base images](https://github.com/loganmarchione/hassos-addons/blob/main/prometheus_node_exporter/build.json)) +1. Add your changes to the [CHANGELOG.md](https://github.com/loganmarchione/hassos-addons/blob/main/prometheus_node_exporter/CHANGELOG.md) file + +## Testing + +I'm still working this out, but am doing testing based on [this page](https://developers.home-assistant.io/docs/add-ons/testing). + +After making your changes, run the command below from the git root directory (i.e., `hassos-addons`) to ensure that the add-on builds successfully (substitute `amd64` with `armhf`, `aarch64`, or `i386` based on your system). + +``` +docker run \ + --rm \ + -it \ + --name builder \ + --privileged \ + -v ./prometheus_node_exporter:/data \ + -v /var/run/docker.sock:/var/run/docker.sock:ro \ + ghcr.io/home-assistant/amd64-builder \ + -t /data \ + --amd64 \ + --test \ + -i test-prometheus-node-exporter \ + -d local +``` + +To test that the add-on actually runs, I've been using my personal instance of Home Assistant 🤷‍♂️ + +1. Open the Add-ons panel in Home Assistant by going to `Settings-->Add-ons-->Add-on Store` +1. Uninstall the current Prometheus Node Exporter add-on (the one published from GHCR.io) +1. Install the official [samba add-on](https://github.com/home-assistant/addons/tree/master/samba) +1. Enable samba with a username and password +1. Mount the samba share locally (e.g., Dolphin can use `smb://your_home_assistant_ip_address`) +1. Navigate to the `addons` directory in the samba share +1. Copy/paste the entire `prometheus_node_exporter` directory to the `addons` directory in the samba share +1. In the `config.json` file in the samba share, remove this entire line + ``` + "image": "ghcr.io/loganmarchione/hassos-addons/prometheusnodeexporter-{arch}", + ``` +1. Open the Add-ons panel in Home Assistant by going to `Settings-->Add-ons-->Add-on Store` +1. Click the menu icon in the top-right, then click "Check for updates" +1. Refresh the page +1. At the very top, there should be a new section for "Local add-ons" with the "Prometheus Node Exporter" to install +1. Install the new add-on from the local repository + 1. Test all configurations + 1. Make sure log entries line up with configuration settings + 1. Navigate to `http://your_home_assistant_ip_address:9100/metrics` and ensure that HTTP basic auth works as expected +1. Stop and uninstall the local add-on +1. Delete the entire `prometheus_node_exporter` directory in the `addons` directory in the samba share +1. Disable the samba add-on +1. Re-install add-on from GHCR.io (you'll need to re-configure the add-on) \ No newline at end of file diff --git a/prometheus_node_exporter/Dockerfile b/prometheus_node_exporter/Dockerfile new file mode 100644 index 0000000..57b2b27 --- /dev/null +++ b/prometheus_node_exporter/Dockerfile @@ -0,0 +1,33 @@ +ARG BUILD_FROM +# hadolint ignore=DL3006 +FROM $BUILD_FROM + +# Set shell +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Setup base system +ARG \ + BUILD_ARCH \ + NODE_EXPORTER_VERSION="1.8.2" + +# Copy root filesystem +COPY rootfs / + +# hadolint ignore=DL3003,DL3018 +RUN \ + apk add --no-cache --update apache2-utils tar \ + && ARCH="${BUILD_ARCH}" \ + && if [ "${BUILD_ARCH}" = "aarch64" ]; then ARCH="arm64"; fi \ + && curl -J -L -o /tmp/node_exporter.tar.gz \ + "https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/node_exporter-${NODE_EXPORTER_VERSION}.linux-${ARCH}.tar.gz" \ + && cd /tmp \ + && tar -xzvf node_exporter.tar.gz --strip-components=1 \ + && mv node_exporter /usr/local/bin/ \ + && adduser -s /bin/false -D -H prometheus \ + && chown -R prometheus:prometheus /usr/local/bin/node_exporter \ + && rm -rf /tmp/node_exporter* LICENSE NOTICE + +# This add-on runs on the host pid namespace, making it impossible +# to use S6-Overlay. Therefore the init system is disabled at this point. +ENTRYPOINT [] +CMD ["/run.sh"] diff --git a/prometheus_node_exporter/README.md b/prometheus_node_exporter/README.md new file mode 100644 index 0000000..929cabe --- /dev/null +++ b/prometheus_node_exporter/README.md @@ -0,0 +1,93 @@ +# prometheus_node_exporter + +[![CI](https://github.com/loganmarchione/hassos-addons/actions/workflows/main.yml/badge.svg)](https://github.com/loganmarchione/hassos-addons/actions/workflows/main.yml) + +The Prometheus [Node Exporter](https://github.com/prometheus/node_exporter) for hardware and OS metrics exposed by \*NIX kernels. + +## Installation + +1. Add my [repository](https://github.com/loganmarchione/hassos-addons). The URL is `https://github.com/loganmarchione/hassos-addons`. +1. Search for the "Prometheus Node Exporter" add-on in the Supervisor add-on store and install it. +1. Disable "Protection mode" in the add-on panel. +1. Optional - Check the `Configuration` tab of the add-on to make any changes you'd like. +1. Start the add-on. +1. Check the `Logs` tab of the add-on to see if everything went well. +1. To verify the metrics are available, visit `http://your_home_assistant_ip_address:9100/metrics` in your browser, or use curl: `curl -X GET http://your_home_assistant_ip_address:9100/metrics`. + +## Configuration + +By default, Prometheus Node Exporter listens on TCP port 9100. + +### HTTP Basic Authentication + +[HTTP Basic Auth](https://en.wikipedia.org/wiki/Basic_access_authentication) is disabled by default. If you want to enable HTTP Basic Auth: + +1. set `enable_basic_auth` to true +1. enter the `basic_auth_user` and `basic_auth_pass` + +### TLS + +TLS is disabled by default. If you want to enable TLS: + +1. set `enable_tls` to true +1. enter the `cert_file` and `cert_key` + +⚠️ Note that the `cert_file` and `cert_key` need to be a `/path/to/fullchain.pem` and `/path/to/privkey.pem`, respectively (`/config` and `/ssl` are mapped to this add-on) ⚠️ + +### Command-line arguments + +This option allows you to pass command-line arguments directly to Prometheus Node Exporter. This is particularly useful to adjust which [collectors](https://github.com/prometheus/node_exporter/#collectors) run. For example, to disable all collectors except the `cpu` collector, you can use this string: `--collector.disable-defaults --collector.cpu`. + +## Usage (in Prometheus server) + +Add the following to the `/etc/prometheus/prometheus.yml` config file on your Prometheus server: + +``` +scrape_configs: + ... + ... + ... + - job_name: 'homeassistant' + static_configs: + - targets: ['your_home_assistant_ip_address:9100'] + basic_auth: + username: username_goes_here + password: password_goes_here +``` + +The following Prometheus query should return data: + +``` +node_uname_info{job="homeassistant"} +``` + +## Support + +- Tested on `amd64` and `aarch64` (Raspberry Pi 4B) platforms + +## License + +WIP + +## Known issues + +- [ ] The "Open Web UI" button doesn't work when Home Assistant is behind a reverse proxy. +- [x] Only tested on `amd64` builds. + +## TODO + +- [x] Add HTTP Basic Auth +- [x] Add abilty to enter plain-text password instead of bcyrpt-ed hash +- [x] Add TLS +- [x] Per [this comment](https://community.home-assistant.io/t/hello-world-example-addon-from-developer-docs-stopped-working-s6-overlay-issue/421486/7), setup container images on a registry (DockerHub or GitHub) so that users aren't building the container with each install (would have prevented [this issue](https://github.com/loganmarchione/hassos-addons/issues/2)) +- [x] Investigate CI/CD for this repo, specifically [this](https://github.com/home-assistant/actions) and [this](https://github.com/hassio-addons/addon-glances/blob/main/.github/workflows/ci.yaml) as an example +- [ ] Investigate dropping API access (e.g., `hassio_api`, `homeassistant_api`, `auth_api`) in order to get my rating up + +## FAQ + +- Doesn't Home Assistant already have Prometheus integration? + - Yes, but the [official integration](https://www.home-assistant.io/integrations/prometheus/) only exposes entity-related metrics, not host-related metrics. +- Isn't there already an Prometheus add-on? + - Yes, but that [add-on](https://github.com/hassio-addons/addon-prometheus) is for Prometheus server, not the node exporter. +- Why does this add-on require so many permissions? + - The add-on needs to access to host-level metrics (CPU, memory, disk, etc...). As such, I have requested all possible permissions. Please inspect the code of this add-on before you run it. diff --git a/prometheus_node_exporter/build.json b/prometheus_node_exporter/build.json new file mode 100644 index 0000000..008a6bf --- /dev/null +++ b/prometheus_node_exporter/build.json @@ -0,0 +1,7 @@ +{ + "build_from": { + "amd64": "ghcr.io/hassio-addons/base/amd64:16.3.0", + "aarch64": "ghcr.io/hassio-addons/base/aarch64:16.3.0", + "armv7": "ghcr.io/hassio-addons/base/armv7:16.3.0" + } +} diff --git a/prometheus_node_exporter/config.json b/prometheus_node_exporter/config.json new file mode 100644 index 0000000..134475a --- /dev/null +++ b/prometheus_node_exporter/config.json @@ -0,0 +1,47 @@ +{ + "name": "Prometheus Node Exporter", + "version": "1.0.1", + "slug": "prometheus_node_exporter", + "description": "Prometheus node exporter for hardware and OS metrics", + "url": "https://mezgit.duckdns.org/mezned/HAddons", + "image": "ghcr.io/loganmarchione/hassos-addons/prometheusnodeexporter-{arch}", + "arch": ["amd64", "aarch64", "armv7"], + "startup": "services", + "init": false, + "webui": "[PROTO:enable_tls]://[HOST]:[PORT:9100]", + "ports": { + "9100/tcp": 9100 + }, + "ports_description": { + "9100/tcp": "Default node exporter port and web interface" + }, + "map": [ + "config:rw", + "ssl" + ], + "hassio_api": true, + "homeassistant_api": true, + "auth_api": true, + "docker_api": true, + "host_network": true, + "host_pid": true, + "apparmor": false, + "options": { + "enable_basic_auth": false, + "basic_auth_user": "", + "basic_auth_pass": "", + "enable_tls": false, + "cert_file": "", + "cert_key": "", + "cmdline_extra_args": "" + }, + "schema": { + "enable_basic_auth": "bool", + "basic_auth_user": "str", + "basic_auth_pass": "password", + "enable_tls": "bool", + "cert_file": "str", + "cert_key": "str", + "cmdline_extra_args": "str?" + } +} diff --git a/prometheus_node_exporter/icon.png b/prometheus_node_exporter/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 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 '/run/home-assistant.token' + +# Even if the user isn't using these options, we're creating the web config file +# This will allow us to append to the web config file as needed (based on variables) +# Prometheus Node Exporter will run with a blank web config file in the meantime + +config_dir=/config +web_config_dir=$config_dir/prometheus_node_exporter +mkdir -p $web_config_dir +chmod 750 $web_config_dir +chown root:prometheus $web_config_dir + +web_config_file=$web_config_dir/node_exporter_web.yml +rm -f $web_config_file +touch $web_config_file +chmod 740 $web_config_file +chown root:prometheus $web_config_file + +# Poor man's debugger: check permissions on web config file +#ls -la $web_config_file + +bashio::log.info "Add-on info - name: $(bashio::addon.name)" +bashio::log.info "Add-on info - version: $(bashio::addon.version)" +bashio::log.info "Add-on info - hostname: $(bashio::addon.hostname)" +bashio::log.info "Add-on info - DNS name: $(bashio::addon.dns)" +bashio::log.info "Checking configuration options..." + +##################### +# HTTP Basic Auth +##################### + +if bashio::config.false 'enable_basic_auth'; then + bashio::log.warning "HTTP Basic Auth is disabled!" +fi + +if bashio::config.true 'enable_basic_auth'; then + bashio::log.info "HTTP Basic Auth is enabled!" + + # Require variables + bashio::config.require 'basic_auth_user' "You enabled HTTP Basic Auth, so you must set a username" + bashio::config.require 'basic_auth_pass' "You enabled HTTP Basic Auth, so you must set a password" + basic_auth_user="$(bashio::config 'basic_auth_user')" + basic_auth_pass="$(bashio::config 'basic_auth_pass')" + + # bcrypt the password + hashed_password=$(htpasswd -bnBC 12 "" "$basic_auth_pass" | tr -d ':\n') + + # Start echoing lines out to web config file (YAML is space-sensitive so I'm lazily not using a heredoc) + echo "basic_auth_users:" >> $web_config_file + echo " $basic_auth_user: $hashed_password" >> $web_config_file + +fi + +##################### +# TLS +##################### + +if bashio::config.false 'enable_tls'; then + bashio::log.warning "TLS is disabled!" +fi + +if bashio::config.true 'enable_tls'; then + bashio::log.info "TLS is enabled!" + + # Require variables + bashio::config.require 'cert_file' "You enabled TLS, so you must set certificate file" + bashio::config.require 'cert_key' "You enabled TLS, so you must set certificate key" + cert_file="$(bashio::config 'cert_file')" + cert_key="$(bashio::config 'cert_key')" + + # Start echoing lines out to web config file (YAML is space-sensitive so I'm lazily not using a heredoc) + echo "tls_server_config:" >> $web_config_file + echo " cert_file: $cert_file" >> $web_config_file + echo " key_file: $cert_key" >> $web_config_file + +fi diff --git a/prometheus_node_exporter/rootfs/etc/services.d/node_exporter/run b/prometheus_node_exporter/rootfs/etc/services.d/node_exporter/run new file mode 100644 index 0000000..0bda1a8 --- /dev/null +++ b/prometheus_node_exporter/rootfs/etc/services.d/node_exporter/run @@ -0,0 +1,9 @@ +#!/usr/bin/env bashio +# ============================================================================== +# Home Assistant Community Add-on: Prometheus Node Exporter +# Runs the Prometheus Node Exporter +# ============================================================================== +bashio::log.info "Starting Prometheus Node Exporter..." + +# Run Prometheus +exec /usr/local/bin/node_exporter --web.config.file=/config/prometheus_node_exporter/node_exporter_web.yml $(bashio::config 'cmdline_extra_args' '') diff --git a/prometheus_node_exporter/rootfs/run.sh b/prometheus_node_exporter/rootfs/run.sh new file mode 100644 index 0000000..8b19a4c --- /dev/null +++ b/prometheus_node_exporter/rootfs/run.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bashio +# ============================================================================== +# Home Assistant Community Add-on: Prometheus Node Exporter +# Runs the Prometheus Node Exporter +# ============================================================================== +# +# WHAT IS THIS FILE?! +# +# The Prometheus Node Exporter add-on runs in the host PID namespace, therefore it cannot +# use the regular S6-Overlay; hence this add-on uses a "old school" script +# to run; with a couple of "hacks" to make it work. +# ============================================================================== +/etc/cont-init.d/node_exporter.sh + +# Start Prometheus Node Exporter +exec /etc/services.d/node_exporter/run \ No newline at end of file diff --git a/prometheus_node_exporter/translations/en.yaml b/prometheus_node_exporter/translations/en.yaml new file mode 100644 index 0000000..fa103d1 --- /dev/null +++ b/prometheus_node_exporter/translations/en.yaml @@ -0,0 +1,23 @@ +--- +configuration: + enable_basic_auth: + name: Enable HTTP basic auth + description: Toggle on to enable HTTP basic authentication (i.e., password protection) + basic_auth_user: + name: Basic auth username + description: The basic auth username + basic_auth_pass: + name: Basic auth password + description: The basic auth password + enable_tls: + name: Enable TLS + description: Toggle on to enable TLS (you will need to provide a path to certificates) + cert_file: + name: Public key + description: This is a /path/to/fullchain.pem + cert_key: + name: Private key + description: This is a /path/to/privkey.pem + cmdline_extra_args: + name: Command line extra arguments + description: Extra arguments to pass to the "node_exporter" command at startup (see https://github.com/prometheus/node_exporter/#installation-and-usage for more information)