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 [![Build Status](https://git.ao-it.net/docker/icingaweb2/actions/workflows/docker-build.yml/badge.svg?branch=main&event=push)](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