25 Commits
v2.0.0 ... main

Author SHA1 Message Date
Daan Selen
9ab86d9e89 chore: fix name 2025-12-05 05:38:00 -06:00
Daan Selen
923b65c1e4 fix: workflow for Systemec use 2025-12-05 05:36:32 -06:00
Daan Selen
77016209c1 Merge remote-tracking branch 'github-fork/feat-debian-rebase' 2025-12-05 05:29:32 -06:00
e64f6724ab chore: add triggers 2025-10-31 14:12:35 +01:00
46fc633d88 chore: revert image name to paessler 2025-10-31 14:11:43 +01:00
573c54f5e2 Squashed commit of the following:
commit fbdc7b08d91f1cce58f3a25f7438612e09d24bbd
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 13:25:46 2025 +0100

    fix: logic for github attestant

commit 5db2220ff97ebd41b44328d89f9f593f174d8632
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 13:17:54 2025 +0100

    chore: add registry prefix

commit 238598047289776d13014739b020d5a5f0e3f182
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 13:10:25 2025 +0100

    revert: if condition

commit d5906aa4c1ddbe4ce0ab371b697a4935568b0307
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 13:08:53 2025 +0100

    feat: try through computing

commit af7759c24ee24e75be8eff259943192131c86190
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:55:10 2025 +0100

    comment: i am getting sloppy

commit ff57fd9f368bd1d266b16caa076f6055ffdd45ad
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:54:49 2025 +0100

    chore: indent fix

commit 7ece71e954b8d664d21d85ff66b11858b44ee7bf
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:54:12 2025 +0100

    chore: expand workflow but share certain actions

commit 5045ca884f025652f7953acd56dfd5a0ea81967c
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:51:51 2025 +0100

    chore: wrap in quotes

commit b2bd34b0843b7143e23109bfcc9535364efaef20
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:51:16 2025 +0100

    chore: simplify syntax

commit 57d440b286d873a7b8410ac811185be6865e6a66
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:50:19 2025 +0100

    fix: syntax

commit 370ddbb2e05231a6abeb8a2cf8f665681c378bc7
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:49:10 2025 +0100

    fix: logic syntax

commit eb1f6259c26294b82e4aa75ee8a9d77c24d36e1d
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:39:31 2025 +0100

    fix: syntax

commit 48f088b8b110f2db65cec6a2d21ec0e4bc0ae27a
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:36:26 2025 +0100

    chore: try to push with personal account

commit 5052a07164fa3c98c2e8a5a20e4b7290ecd88a22
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:35:02 2025 +0100

    chore: rework trigger per variant
2025-10-31 14:10:06 +01:00
8abf3edfcd feat: rewrite workflow 2025-10-31 12:31:25 +01:00
16a7bea45c feat: rebase to Debian 13 with fallback to bookworm repos 2025-10-31 12:11:10 +01:00
Flow86
baa179a41c Merge pull request #8 from PaesslerAG/Flow86-patch-1
fix: allow more parameters to be passed through
2025-05-27 09:00:40 +02:00
Flow86
91a2187ec1 fix: allow more parameters to be passed through
allow short form of --help (-h) and also --version (-V) to be directly used
2025-05-26 11:43:02 +02:00
Flow86
b54bc94716 Merge pull request #7 from PaesslerAG/docu/manual-link
docs: update manual link
2025-04-16 06:55:54 +02:00
Florian Dörsch
44749872c3 docs: update manual link 2025-04-15 07:35:57 +02:00
Benjamin Kästner
b04fc33694 Merge pull request #6 from PaesslerAG/Flow86-patch-1
ci: delete .github/workflows/dockerhub-description.yml
2025-03-18 15:24:19 +01:00
Flow86
198cc27854 ci: delete .github/workflows/dockerhub-description.yml
The job is not used anyway
2025-03-18 14:09:02 +01:00
Benjamin Kästner
94519a402f Merge pull request #4 from PaesslerAG/Flow86-patch-1
docs: fix wrong local volume paths for docker volumes
2024-12-05 15:23:34 +01:00
Flow86
546ee7af5e docs: fix wrong local volume paths for docker volumes
docker expects to have absolute paths for local volume definitions
2024-11-25 10:14:39 +01:00
Flow86
dfdc14a586 Merge pull request #3 from PaesslerAG/fix/entrypoint_service_run_2
fix: broken conditions in run script
2024-10-10 14:22:09 +02:00
Florian Dörsch
8bb3d9b08b fix: broken conditions in run script 2024-10-09 08:32:18 +02:00
Flow86
19ee055f91 Merge pull request #1 from PaesslerAG/fix/entrypoint_service_run
Adapt entrypoint and README
2024-09-13 10:32:32 +02:00
Florian Dörsch
07882452e1 feat: test if the id is set in the config.yml and if so, don't generate an id.txt file aswell as not set PRTGMPPROBE__ID 2024-08-19 10:03:48 +02:00
Florian Dörsch
8a15bb8d94 docs: add information on how to use a custom CA certificate and/or where to obtain it 2024-08-19 10:03:44 +02:00
Florian Dörsch
cb62a9faa3 docs: add clarification on how to find all configuration file options 2024-08-19 10:03:40 +02:00
Florian Dörsch
08ee7e1398 fix: do not always add service-run as argument to the entrypoint
This allows the correct usage of

`docker run -it paessler/multi-platform-probe example-config`
2024-08-19 10:03:34 +02:00
Flow86
29af404991 Merge pull request #2 from PaesslerAG/actions/dockerhub-description
Add workflow to update dockerhub description automatically
2024-08-19 09:46:01 +02:00
Florian Dörsch
fd79b23057 ci: add workflow to update dockerhub description automatically 2024-08-16 11:01:37 +02:00
6 changed files with 147 additions and 41 deletions

85
.github/workflows/docker-build.yml vendored Normal file
View File

@@ -0,0 +1,85 @@
# See https://docs.github.com/en/actions/publishing-packages/publishing-docker-images
name: Build and push # to docker registries
on:
workflow_dispatch:
push:
branches:
- "main"
tags:
- "*"
release:
types: [published]
env:
IMAGE_NAME: prtgprobe/multi-platform-probe
jobs:
docker_build:
name: Build and push
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
attestations: write
id-token: write
strategy:
fail-fast: false
matrix:
variant:
- name: systemec_piraeus
registry: "piraeus.systemec.nl"
steps:
- name: Set image for Docker
id: set-image
run: |
if [ "${{ matrix.variant.name }}" == "systemec_piraeus" ]; then
echo "IMAGE_TO_USE=${IMAGE_NAME}" >> $GITHUB_ENV
else
echo "Failing to resolve."
exit 1
fi
- name: Check out the repository
uses: actions/checkout@v5
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: |
- linux/amd64
- linux/arm64
- linux/arm/v7
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Systemec Piraeus
if: matrix.variant.name == 'systemec_piraeus'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PUSH_TOKEN }}
registry: ${{ matrix.variant.registry }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ matrix.variant.registry }}/${{ env.IMAGE_TO_USE }}
tags: |
type=ref,event=branch
type=ref,event=tag
type=sha,format=short,prefix=
- name: Build and push Docker image
id: push
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64,linux/arm/v7

View File

@@ -3,8 +3,8 @@
name: Push to Docker Hub
on:
release:
types: [published]
# release:
# types: [published]
env:
IMAGE_NAME: paessler/multi-platform-probe

View File

@@ -3,9 +3,9 @@
name: Push to GitHub
on:
push:
branches: ["main"]
tags: ["*"]
# push:
# branches: ["main"]
# tags: ["*"]
env:
REGISTRY: ghcr.io

View File

@@ -1,10 +1,11 @@
FROM debian:11-slim
FROM debian:13-slim
LABEL org.opencontainers.image.authors="info@paessler.com"
LABEL org.opencontainers.image.vendor="Paessler GmbH"
LABEL org.opencontainers.image.licenses="MIT"
ARG DEBIAN_FRONTEND=noninteractive
ARG DEBIAN_FB_RELEASE=bookworm
# enforce image to be up to date
RUN \
@@ -21,7 +22,7 @@ RUN \
# - libcap2-bin (for setcap command)
#
RUN \
apt-get update \
apt-get update && apt-get full-upgrade \
&& apt-get -y install --no-install-recommends --no-install-suggests \
ca-certificates \
python3-minimal \
@@ -29,13 +30,15 @@ RUN \
libcap2-bin \
&& apt-get clean
# add paessler's official package repository
# Add Paessler's official package repository with current release specifications.
# If the current release is not present on Paessler's servers fallback to defined fallback release.
RUN \
apt-get update \
apt-get -qq update \
&& apt-get -y install --no-install-recommends --no-install-suggests \
curl \
&& curl --fail --silent https://packages.paessler.com/keys/paessler.asc > /usr/share/keyrings/paessler-archive-keyring.asc \
&& curl --fail --silent https://packages.paessler.com/docs/apt-sources/$(. /etc/os-release && echo $VERSION_CODENAME).sources > /etc/apt/sources.list.d/paessler.sources \
&& curl --fail https://packages.paessler.com/keys/paessler.asc > /usr/share/keyrings/paessler-archive-keyring.asc \
&& curl --fail https://packages.paessler.com/docs/apt-sources/$(. /etc/os-release && $VERSION_CODENAME).sources \
|| curl --fail https://packages.paessler.com/docs/apt-sources/${DEBIAN_FB_RELEASE}.sources > /etc/apt/sources.list.d/paessler.sources \
&& apt-get -y remove --purge curl \
&& apt-get clean
@@ -44,10 +47,11 @@ RUN \
apt-get update \
&& apt-get -y install --no-install-recommends --no-install-suggests \
prtgmpprobe \
&& apt-get autoremove -y \
&& apt-get clean
# add entrypoint script
COPY --chown=root:root --chmod=0555 run-prtgmpprobe.sh /run-prtgmpprobe.sh
COPY --chown=root:root --chmod=0555 run-prtgmpprobe.sh /entrypoint.sh
# specify volumes:
# - /config : configuration directory for the prtgmpprobe, put your config.yml here.
@@ -57,4 +61,5 @@ VOLUME [ "/config", "/opt/paessler/share/scripts" ]
# set WORKDIR to a sane default
WORKDIR /
ENTRYPOINT [ "/run-prtgmpprobe.sh", "service-run" ]
ENTRYPOINT [ "/entrypoint.sh" ]
CMD [ "service-run" ]

View File

@@ -17,7 +17,7 @@ We recommend that you always update to the latest version of PRTG via the Auto-U
Requires a [NATS server](#install-and-configure-a-nats-server) connection configured in PRTG.
[prtg-96]: https://www.paessler.com/prtg/history/stable#24.2.96.1315
[manual]: https://paessler.canto.global/direct/document/qvou34dmut1uh0gg6mqee3ip2k/K-e9xGiEiT58XzlH3s_Nf-B3lVk/original?content-type=application%2Fpdf&name=Multi-Platform+Probe+Manual.pdf
[manual]: https://manuals.paessler.com/multiplatformprobemanual.pdf
## How to use the multi-platform probe container
@@ -37,7 +37,7 @@ Paessler GmbH provides the **NATS Server for Paessler PRTG** Windows installer t
* Configures the NATS server.
* Installs and starts the NATS server service in the background.
For the installer and step-by-step instructions on how to set up a NATS server on Windows, see section **Step 1: Install a NATS server** in the [Multi-Platform Probe for PRTG (PDF)][manual] manual.
For the installer and step-by-step instructions on how to set up a NATS server on Windows, see section **Step 1: Install a NATS server** in the [Multi-Platform Probe for PRTG][manual] manual.
If you want to deploy your NATS server on a non-Windows system, see the NATS documentation on their website.
@@ -46,7 +46,7 @@ For the installer and step-by-step instructions on how to set up a NATS server o
Once you set up your NATS server, you must configure PRTG to accept connections to the NATS server.
This is done from the PRTG web interface via **Setup** | **Cores & Probes** | **[Multi-Platform Probe Connection Settings][prtg-manual:cores]**.
For step-by-step instructions on how to configure PRTG, see section **Step 2: Configure connection in PRTG** in the [Multi-Platform Probe for PRTG (PDF)][manual] manual.
For step-by-step instructions on how to configure PRTG, see section **Step 2: Configure connection in PRTG** in the [Multi-Platform Probe for PRTG][manual] manual.
[prtg-manual:cores]: https://www.paessler.com/manuals/prtg/core_and_probes#multi_platform_probe_connection
@@ -66,19 +66,33 @@ nats:
```
You must put the configuration file into the `/config/config.yml` volume of the docker container.
For all available configuration options, see [config.full-example.yml](./config/config.full-example.yml).
The container also used the `/config` volume to store the [multi-platform probe's GID][GID] and therefore cannot be set as read-only (`:ro`) unless you specify the GID as an environment variable.
If necessary you can put your custom [CA certificate][TLS] into `/config/certs` and specify it in the `/config/config.yml` as well:
```yaml
access_key: YOUR_PROBE_ACCESS_KEY
nats:
url: tls://localhost:23561
authentication:
user: USER
password: PASSWORD
server_ca: /config/certs/ca.crt
```
The container also used the `/config` volume to store the [multi-platform probe's GID][GID] and therefore cannot be set as read-only (`:ro`) unless you specify the [multi-platform probe's GID][GID] as an environment variable.
You can also use the `/opt/paessler/share/scripts` volume for the scripts of the [Script v2][prtgmanual:scriptv2] sensor.
[prtgmanual:scriptv2]: https://www.paessler.com/manuals/prtg/script_v2_sensor
[TLS]: https://kb.paessler.com/en/topic/91877-how-can-i-create-a-tls-certificate
[GID]: https://www.paessler.com/manuals/prtg/prtg_administration_tool_on_remote_probe_systems#:~:text=GID
```sh
docker run -it \
--network bridge \
-v ./scripts:/opt/paessler/share/scripts:ro \
-v ./config:/config \
-v $(pwd)/scripts:/opt/paessler/share/scripts:ro \
-v $(pwd)/config:/config \
--cap-add NET_ADMIN \
--cap-add NET_RAW \
paessler/multi-platform-probe:latest

View File

@@ -13,12 +13,12 @@ _passthrough=0
for _arg in "$@"
do
case "$_arg" in
--help|example-config)
-h|--help|example-config|-V|--version)
_passthrough=1
;;
esac
done
if [ ! $_passthrough -eq 0 ] ; then
if [ $_passthrough -ne 0 ] ; then
exec gosu paessler_mpprobe:paessler_mpprobe \
${PRTGMPPROBE__BINARY} \
"$@"
@@ -42,19 +42,29 @@ done
# Handling Env vars
# Get/Generate a probe id from PRTGMPPROBE__ID_FILE or from PRTGMPPROBE__ID
if [ -z "${PRTGMPPROBE__ID-}" ] ; then
if [ ! -f "${PRTGMPPROBE__ID_FILE}" ] ; then
cat /proc/sys/kernel/random/uuid > ${PRTGMPPROBE__ID_FILE} || (
error "Unable to write to ${PRTGMPPROBE__ID_FILE}. Please either set PRTGMPPROBE__ID in the container environment or make sure the location ${PRTGMPPROBE__ID_FILE} is writable."
echo >&2 " "
echo >&2 "Example:"
echo >&2 "PRTGMPPROBE__ID=$(cat /proc/sys/kernel/random/uuid)"
exit 1
)
if [ ! -f "${PRTGMPPROBE__CONFIG_FILE}" ] ; then
error "Configuration file ${PRTGMPPROBE__CONFIG_FILE} does not exist. Please create one."
echo >&2 " "
echo >&2 "Example:"
${PRTGMPPROBE__BINARY} example-config >&2
exit 1
fi
# Get/Generate a probe id from PRTGMPPROBE__ID_FILE or from PRTGMPPROBE__ID if not set in PRTGMPPROBE__CONFIG_FILE
if ! grep -q "^id:" "${PRTGMPPROBE__CONFIG_FILE}" ; then
if [ -z "${PRTGMPPROBE__ID-}" ] ; then
if [ ! -f "${PRTGMPPROBE__ID_FILE}" ] ; then
cat /proc/sys/kernel/random/uuid > ${PRTGMPPROBE__ID_FILE} || (
error "Unable to write to ${PRTGMPPROBE__ID_FILE}. Please either set PRTGMPPROBE__ID in the container environment, 'id:' in the ${PRTGMPPROBE__CONFIG_FILE} or make sure the location ${PRTGMPPROBE__ID_FILE} is writable."
echo >&2 " "
echo >&2 "Example:"
echo >&2 "PRTGMPPROBE__ID=$(cat /proc/sys/kernel/random/uuid)"
exit 1
)
fi
PRTGMPPROBE__ID=$(cat ${PRTGMPPROBE__ID_FILE})
export PRTGMPPROBE__ID
fi
PRTGMPPROBE__ID=$(cat ${PRTGMPPROBE__ID_FILE})
export PRTGMPPROBE__ID
fi
export PRTGMPPROBE__NAME=${PRTGMPPROBE__NAME:-"multi-platform-probe@$(hostname)"}
@@ -70,14 +80,6 @@ export PRTGMPPROBE__LOGGING__CONSOLE__WITHOUT_TIME=${PRTGMPPROBE__LOGGING__CONSO
export PRTGMPPROBE__LOGGING__JOURNALD__LEVEL=${PRTGMPPROBE__LOGGING__JOURNALD__FIELD_PREFIX:-"off"}
export PRTGMPPROBE__LOGGING__JOURNALD__FIELD_PREFIX=${PRTGMPPROBE__LOGGING__JOURNALD__FIELD_PREFIX:-"PRTGMPPROBE"}
if [ ! -f "${PRTGMPPROBE__CONFIG_FILE}" ] ; then
error "Configuration file ${PRTGMPPROBE__CONFIG_FILE} does not exist. Please create one."
echo >&2 " "
echo >&2 "Example:"
${PRTGMPPROBE__BINARY} example-config >&2
exit 1
fi
env | grep PRTGMPPROBE__ >&2
# add capabilities for icmp to the probe executable