Docker IcingaWeb2
Designed with https://git.ao-it.net/docker/icinga2
quick start
If you have a functional icinga2 instance only without icingaweb2:
git clone https://git.ao-it.net/docker/icingaweb2
cd icingaweb2
cp env.sample .env
nano .env # edit your settings
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!
understand environment
For the configuration (primarily the initial setup) I use a similar method as: https://hub.docker.com/r/icinga/icingaweb2
- In my case a prefix like
ICINGAWEB2_CONFrefers a configuration file. - As a separator I not (longer) use
.rather__(2x_) - After the first
__it follows theSectionfrom this ini file. - After the second
__it follows theKeyfrom thisSectionbefore. - And after the
=is comes thevalue.
So will this:
ICINGAWEB2_CONF__global__config_backend=db
create this:
[global]
config_backend = db
vars icingaweb2
| prefix | file | ref |
|---|---|---|
| ICINGAWEB2_CONF | /etc/icingaweb2/config.ini | General Configuration |
| ICINGAWEB2_RESOURCES | /etc/icingaweb2/resources.ini | Resources |
| ICINGAWEB2_AUTH | /etc/icingaweb2/authentication.ini | Authentication |
| ICINGAWEB2_GROUPS | /etc/icingaweb2/groups.ini | Groups |
| ICINGAWEB2_ROLES | /etc/icingaweb2/roles.ini | Roles |
vars modules
| prefix | module | file | ref |
|---|---|---|---|
| ICINGAWEB2_ICINGADB_CONF | icingadb | /etc/icingaweb2/modules/icingadb/config.ini | General Configuration |
| ICINGAWEB2_ICINGADB_REDIS | icingadb | /etc/icingaweb2/modules/icingadb/redis.ini | Redis® Configuration |
| ICINGAWEB2_ICINGADB_API | icingadb | /etc/icingaweb2/modules/icingadb/commandtransports.ini | Command Transport Configuration |
| ICINGAWEB2_GRAFANA_CONF | grafana | /etc/icingaweb2/modules/grafana/config.ini | General Configuration |
| ICINGAWEB2_GRAFANA_GRAPH | grafana | /etc/icingaweb2/modules/grafana/graphs.ini | Graph Configuration |
external vars
See sources below
static vars
| var | description |
|---|---|
| ICINGAWEB2_CONF_ONCE | if var exists: all configuration setups (above) run only on fist setup. |
| ICINGAWEB2_DB_RESOURCE_NAME | needed for setup script to know witch database is used for users |
| ICINGAWEB2_DEFAULT_ADMIN_USER | default admin username addidional this var is primary identifier to run auto config |
| ICINGAWEB2_DEFAULT_ADMIN_PASS | default admin password |
easy setup
If you use the example, than you can setup the env.sample.
All required variables are included and insert the values in the correct places.
Hint: in this file all vars dont have the 2 behind icingaweb2 or icinga2.
Vars for the container have the 2
example
See compose.yml.
This is for environment priview
services:
icingaweb2:
image: git.ao-it.net/docker/icingaweb2
environment:
- ICINGAWEB2_CONF_ONCE=true
- ICINGAWEB2_CONF__logging__log=php
- ICINGAWEB2_CONF__logging__level=ERROR
- ICINGAWEB2_CONF__logging__application=icingaweb2
- ICINGAWEB2_CONF__global__config_backend=db
- ICINGAWEB2_CONF__global__config_resource=${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}
- ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__type=db
- ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__db=mysql
- ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__host=${ICINGAWEB_DB_HOST:-db_icingaweb}
- ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__dbname=${ICINGAWEB_DB:-icingaweb}
- 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
- ICINGAWEB2_GROUPS__icingaweb2__resource=${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}
- 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}
- ICINGAWEB2_GRAFANA_CONF__grafana__host=grafana
- ICINGAWEB2_GRAFANA_CONF__grafana__defaultdashboard=
- ICINGAWEB2_GRAFANA_CONF__grafana__defaultdashboarduid=
- ICINGAWEB2_GRAFANA_CONF__grafana__defaultdashboardpanelid=1
- ICINGAWEB2_GRAFANA_CONF__grafana__defaultorgid=1
- ICINGAWEB2_GRAFANA_CONF__grafana__timerange=12h
- ICINGAWEB2_GRAFANA_GRAPH__check_command__name=
- ICINGAWEB2_GRAFANA_GRAPH__check_command__dashboard=
- ICINGAWEB2_GRAFANA_GRAPH__check_command__dashboarduid=
- 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
- Installing Icinga DB Web
- Feature: InfluxdbWriter
- Object Type: InfluxdbWriter
- Grafana Integration
Grafana
- Run Grafana Docker image
- Override configuration with environment variable
- Provision Grafana
- Dashboard JSON model
- Original JSON: icinga2-default.json
- Tutorial: Provision dashboards and data sources
- Anonymous authentication
- Docker Hub: grafana/grafana-oos
- Docker Hub: grafana/grafana
- Image Rendering (if you dont want grafana direct accessable, but have many cons)
- Docker Hub: grafana/grafana-image-renderer
- Grafana Plugin: grafana-image-renderer