From 6ad0ed98d2bcf291255ee2a2ba4fc8d570156a18 Mon Sep 17 00:00:00 2001
From: anima
Date: Sun, 2 Feb 2025 19:30:34 +0100
Subject: [PATCH] update some informations after create full stack
---
README.md | 44 +++++++++++++-----------------------
compose.yml | 28 ++++++++++++-----------
env.sample | 6 ++---
grafana/default.source.yml | 3 ++-
grafana/icinga2-default.json | 5 ++--
5 files changed, 39 insertions(+), 47 deletions(-)
diff --git a/README.md b/README.md
index f263716..b8900d3 100644
--- a/README.md
+++ b/README.md
@@ -1,21 +1,29 @@
# Docker IcingaWeb2
[](https://git.ao-it.net/docker/icingaweb2/actions?workflow=docker-build.yml&actor=0&status=0)
-Designed with [https://git.ao-it.net/docker/icinga2](https://git.ao-it.net/docker/icinga2)
+If you need a full stack:
+* [AO-IT: icinga-stack](https://git.ao-it.net/docker/icinga-stack)
+ * [AO-IT: icinga2](https://git.ao-it.net/docker/icinga2)
-## quick start
+Or a additional satellite:
+* [AO-IT: icinga-satellite](https://git.ao-it.net/docker/icinga-satellite)
+
+
+## usage
If you have a functional icinga2 instance only without icingaweb2:
```bash
git clone https://git.ao-it.net/docker/icingaweb2
cd icingaweb2
cp env.sample .env
-nano .env # edit your settings
+# must edit: GRAFANA_HOST with local IP or FQDN
+nano .env # edit your env
docker compose up -d
```
-
-For a full deployment see: [comming soon ...]()
-
-If you run the setup without any environment vars the setup token will be printet in docker log!
+Hints:
+* If you run the setup without any environment vars the setup token will be printet in docker log!
+* If you deploy IcingaDB ENV but it can't be reach, icingaweb looks like broken but it isn't
+* You can remove the environment var `ICINGAWEB2_CONF_ONCE` whan will changes in `compose.yml` environment deploy every time if the container starts.
+ * You can use this for future config changes, but this isn't good tested and i am not sure i will recommend this...
## understand environment
For the configuration (primarily the initial setup) I use a similar method as: https://hub.docker.com/r/icinga/icingaweb2
@@ -77,7 +85,7 @@ Vars for the container have the `2`
## example
See [compose.yml](compose.yml).
-This is for environment priview
+This is for environment priview (minimal setup)
```yaml
services:
icingaweb2:
@@ -96,13 +104,6 @@ services:
- ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__username=${ICINGAWEB_DB_USER:-icingaweb}
- ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__password=${ICINGAWEB_DB_PASS:-icingaweb}
- ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__charset=utf8mb4
- - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__type=db
- - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__db=mysql
- - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__host=${ICINGA_DB_HOST:-db_icinga}
- - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__dbname=${ICINGA_DB:-icingadb}
- - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__username=${ICINGA_DB_USER:-icingadb}
- - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__password=${ICINGA_DB_PASS:-icingadb}
- - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__charset=utf8mb4
- ICINGAWEB2_AUTH__icingaweb2__backend=db
- ICINGAWEB2_AUTH__icingaweb2__resource=${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}
- ICINGAWEB2_GROUPS__icingaweb2__backend=db
@@ -110,14 +111,6 @@ services:
- ICINGAWEB2_ROLES__${ICINGAWEB_DEFAULT_ADMIN_ROLE:-Administrators}__groups=${ICINGAWEB_DEFAULT_ADMIN_ROLE:-Administrators}
- ICINGAWEB2_ROLES__${ICINGAWEB_DEFAULT_ADMIN_ROLE:-Administrators}__permissions="*"
- ICINGAWEB2_ROLES__${ICINGAWEB_DEFAULT_ADMIN_ROLE:-Administrators}__users=${ICINGAWEB_DEFAULT_ADMIN_USER:-icingaadmin}
- - ICINGAWEB2_ICINGADB_CONF__icingadb__resource=icingadb
- - ICINGAWEB2_ICINGADB_REDIS__redis1__host=redis
- - ICINGAWEB2_ICINGADB_REDIS__redis1__port=6379
- - ICINGAWEB2_ICINGADB_CMD__icinga2__transport=api
- - ICINGAWEB2_ICINGADB_CMD__icinga2__host=icinga2
- - ICINGAWEB2_ICINGADB_CMD__icinga2__port=5665
- - ICINGAWEB2_ICINGADB_CMD__icinga2__username=icingaweb
- - ICINGAWEB2_ICINGADB_CMD__icinga2__password=icingaweb
- ICINGAWEB2_DB_RESOURCE_NAME=${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}
- ICINGAWEB2_DEFAULT_ADMIN_USER=${ICINGAWEB_DEFAULT_ADMIN_USER:-icingaadmin}
- ICINGAWEB2_DEFAULT_ADMIN_PASS=${ICINGAWEB_DEFAULT_ADMIN_PASS:-icingaadmin}
@@ -133,11 +126,6 @@ services:
- ICINGAWEB2_GRAFANA_GRAPH__check_command__panelId=
```
-You can remove the environment var `ICINGAWEB2_CONF_ONCE` whan will changes in `compose.yml` environment deploy every time if the container starts.
-You can use this for future config changes, but this isn't tested and i am not sure i will recommend this...
-For now be save and use it only for inital setup.
-
-
## Sources
### Icingaweb2
* [Install Icinga Web 2](https://icinga.com/docs/icinga-web/latest/doc/02-Installation/01-Debian/)
diff --git a/compose.yml b/compose.yml
index 5875f3e..446f991 100644
--- a/compose.yml
+++ b/compose.yml
@@ -1,4 +1,5 @@
services:
+##### ICINGAWEB2 #####
icingaweb2:
image: git.ao-it.net/docker/icingaweb2:latest
hostname: icingaweb2
@@ -12,6 +13,7 @@ services:
networks:
- icinga
environment:
+ - ICINGAWEB2_CONF_ONCE=true
## icingaweb2 general
- ICINGAWEB2_DB_RESOURCE_NAME=${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}
- ICINGAWEB2_DEFAULT_ADMIN_USER=${ICINGAWEB_DEFAULT_ADMIN_USER:-icingaadmin}
@@ -51,16 +53,16 @@ services:
- ICINGAWEB2_ROLES__${ICINGAWEB_DEFAULT_ADMIN_ROLE:-Administrators}__users=${ICINGAWEB_DEFAULT_ADMIN_USER:-icingaadmin}
## module: icingadb
### icingadb: conf.ini
- #- ICINGAWEB2_ICINGADB_CONF__icingadb__resource=icingadb
+ - ICINGAWEB2_ICINGADB_CONF__icingadb__resource=icingadb
### icingadb: redis.ini
- #- ICINGAWEB2_ICINGADB_REDIS__redis1__host=${ICINGADB_REDIS_HOST:-redis}
- #- ICINGAWEB2_ICINGADB_REDIS__redis1__port=${ICINGADB_REDIS_PORT:-6379}
+ - ICINGAWEB2_ICINGADB_REDIS__redis1__host=${ICINGADB_REDIS_HOST:-db_redis}
+ - ICINGAWEB2_ICINGADB_REDIS__redis1__port=${ICINGADB_REDIS_PORT:-6379}
### icingadb: commandtransports.ini
- #- ICINGAWEB2_ICINGADB_CMD__icinga2__transport=${ICINGADB_CMD_TYPE:-api}
- #- ICINGAWEB2_ICINGADB_CMD__icinga2__host=${ICINGA_API_HOST:-icinga2}
- #- ICINGAWEB2_ICINGADB_CMD__icinga2__port=${ICINGA_API_PORT:-5665}
- #- ICINGAWEB2_ICINGADB_CMD__icinga2__username=${ICINGA_API_ICINGAWEB_USER:-icingaweb}
- #- ICINGAWEB2_ICINGADB_CMD__icinga2__password=${ICINGA_API_ICINGAWEB_PASS:-icingaweb}
+ - ICINGAWEB2_ICINGADB_CMD__icinga2__transport=${ICINGADB_CMD_TYPE:-api}
+ - ICINGAWEB2_ICINGADB_CMD__icinga2__host=${ICINGA_API_HOST:-icinga2}
+ - ICINGAWEB2_ICINGADB_CMD__icinga2__port=${ICINGA_API_PORT:-5665}
+ - ICINGAWEB2_ICINGADB_CMD__icinga2__username=${ICINGA_API_ICINGAWEB_USER:-icingaweb2}
+ - ICINGAWEB2_ICINGADB_CMD__icinga2__password=${ICINGA_API_ICINGAWEB_PASS:-icingaweb}
## module: grafana
### grafana: conf.ini
- ICINGAWEB2_GRAFANA_CONF__grafana__host=${GRAFANA_HOST:-grafana}:${GRAFANA_PORT:-3000}
@@ -92,7 +94,6 @@ services:
depends_on:
- icingaweb2
restart: always
- #user: '0'
ports:
- ${GRAFANA_PORT:-3000}:3000
networks:
@@ -105,17 +106,18 @@ services:
## required configs
GF_AUTH_ANONYMOUS_ENABLED: true
GF_SECURITY_ALLOW_EMBEDDING: true
- #GF_AUTH_ANONYMOUS_ORG_NAME: Main Org.
GF_AUTH_ANONYMOUS_ORG_ROLE: Viewer
GF_AUTH_ANONYMOUS_HIDE_VERSION: true
## user settings
GF_SECURITY_ADMIN_USER: ${GRAFANA_ADMIN_USER:-grafanaadmin}
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASS:-grafanaadmin}
## default data source
- GRAFANA_DEFAULT_SOURCE_NAME: ${ICINGA_INFLUX_HOST:-influxdb}
- GRAFANA_DEFAULT_SOURCE_UID: ${ICINGA_INFLUX_HOST:-influxdb}
- GRAFANA_DEFAULT_SOURCE_USER: ${ICINGA_INFLUX_USER:-icinga}
+ GRAFANA_DEFAULT_SOURCE_NAME: ${ICINGA_INFLUX_HOST:-db_influxdb}
+ GRAFANA_DEFAULT_SOURCE_UID: ${ICINGA_INFLUX_HOST:-db_influxdb}
GRAFANA_DEFAULT_SOURCE_DB: ${ICINGA_INFLUX_DB:-icinga}
+ GRAFANA_DEFAULT_SOURCE_HOST: ${ICINGA_INFLUX_HOST:-db_influxdb}
+ GRAFANA_DEFAULT_SOURCE_PORT: ${ICINGA_INFLUX_PORT:-8086}
+ GRAFANA_DEFAULT_SOURCE_USER: ${ICINGA_INFLUX_USER:-icinga}
GRAFANA_DEFAULT_SOURCE_PASS: ${ICINGA_INFLUX_PASS:-icinga}
## default dashboard
GRAFANA_DEFAULT_DASHBOARD_NAME: ${GRAFANA_DASHBOARD_NAME:-icinga2-default}
diff --git a/env.sample b/env.sample
index a27638e..8a9e236 100644
--- a/env.sample
+++ b/env.sample
@@ -31,9 +31,9 @@ ICINGA_API_ICINGAWEB_USER=icingaweb
ICINGA_API_ICINGAWEB_PASS=icingaweb
## grafana settings
-### must be change else you dont have graphs
-### must be a network address what your client can reach
-GRAFANA_HOST=$(hostname -I | awk '{print $1}') # set first ip of system, can be wrong!
+#> GRAFANA_HOST must be change else you dont have graphs
+#> GRAFANA_HOST must be a network address what your client can reach
+GRAFANA_HOST='' # to get ip: $(hostname -I | awk '{print $1}') # sets first ip of system, can be wrong!
GRAFANA_PORT=3000
GRAFANA_DASHBOARD_NAME=icinga2-default
GRAFANA_DASHBOARD_UID=icinga2-default
diff --git a/grafana/default.source.yml b/grafana/default.source.yml
index 07d1e64..270b5f6 100644
--- a/grafana/default.source.yml
+++ b/grafana/default.source.yml
@@ -6,7 +6,8 @@ datasources:
uid: $GRAFANA_DEFAULT_SOURCE_UID
access: proxy
user: $GRAFANA_DEFAULT_SOURCE_USER
- url: http://influxdb:8086
+ url: http://$GRAFANA_DEFAULT_SOURCE_HOST:$GRAFANA_DEFAULT_SOURCE_PORT
+ isDefault: true
jsonData:
dbName: $GRAFANA_DEFAULT_SOURCE_DB
httpMode: GET
diff --git a/grafana/icinga2-default.json b/grafana/icinga2-default.json
index 048c1da..70f3edb 100644
--- a/grafana/icinga2-default.json
+++ b/grafana/icinga2-default.json
@@ -3,6 +3,7 @@
{
"name": "DS_ICINGA2",
"label": "Icinga2",
+ "value": "db_influxdb",
"description": "",
"type": "datasource",
"pluginId": "influxdb",
@@ -80,7 +81,7 @@
"bars": false,
"dashLength": 10,
"dashes": false,
- "datasource": "influxdb",
+ "datasource": "db_influxdb",
"fill": 1,
"id": 1,
"legend": {
@@ -302,6 +303,6 @@
},
"timezone": "",
"title": "icinga2-default",
- "uid": "icinga-default",
+ "uid": "icinga2-default",
"version": 3
}
\ No newline at end of file