From a1a70d4a3c6a8314dd2ad35344d440e4ba8e86e8 Mon Sep 17 00:00:00 2001 From: Evan Steinkerchner Date: Tue, 1 Mar 2022 20:55:45 -0500 Subject: [PATCH 1/2] Added Portainer custom service --- docs/customservices.md | 16 ++++ src/components/services/Portainer.vue | 122 ++++++++++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 src/components/services/Portainer.vue diff --git a/docs/customservices.md b/docs/customservices.md index 7e3e6b3..cb68e1d 100644 --- a/docs/customservices.md +++ b/docs/customservices.md @@ -125,3 +125,19 @@ For Prometheus you need to set the type to Prometheus and provide a url. url: "http://192.168.0.151/" # subtitle: "Monitor data server" ``` + +## Portainer + +This service displays info about the total number of containers managed by your Portainer instance. +In order to use it, you must be using Portainer version 1.11 or later. Generate an access token from the UI and pass +it to the apikey field. + +See https://docs.portainer.io/v/ce-2.11/user/account-settings#access-tokens + +```yaml +- name: "Portainer" + logo: "assets/tools/sample.png" + url: "http://192.168.0.151/" + type: "Portainer" + apikey: "MY-SUPER-SECRET-API-KEY" +``` diff --git a/src/components/services/Portainer.vue b/src/components/services/Portainer.vue new file mode 100644 index 0000000..0af30eb --- /dev/null +++ b/src/components/services/Portainer.vue @@ -0,0 +1,122 @@ + + + + + From edd2c9ce2dc2d6aaf8e125434ed386de7056ab1d Mon Sep 17 00:00:00 2001 From: Evan Steinkerchner Date: Tue, 1 Mar 2022 21:05:14 -0500 Subject: [PATCH 2/2] Removed number fudging used for testing --- src/components/services/Portainer.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/services/Portainer.vue b/src/components/services/Portainer.vue index 0af30eb..176d92e 100644 --- a/src/components/services/Portainer.vue +++ b/src/components/services/Portainer.vue @@ -48,7 +48,7 @@ export default { } return this.containers.filter((container) => { return container.State.toLowerCase() === "dead"; - }).length || 1; + }).length; }, misc: function () { if (!this.containers) {