From 74d3c1bfbb67c7faa27f170c0ddf59b19cc6e69e Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Thu, 20 Oct 2022 12:25:52 +0200 Subject: [PATCH 1/2] Remove demo Dockerfile --- .docker/apache2-site.conf | 28 ------- .docker/apt-ext.list | 1 - .docker/icinga2-ido.conf | 7 -- .docker/icingaweb2/authentication.ini | 3 - .docker/icingaweb2/config.ini | 7 -- .../icingaweb2/modules/graphite/config.ini | 3 - .../modules/monitoring/backends.ini | 3 - .../modules/monitoring/commandtransports.ini | 3 - .../icingaweb2/modules/monitoring/config.ini | 2 - .docker/icingaweb2/resources.ini | 11 --- .docker/icingaweb2/roles.ini | 3 - .docker/php-icingaweb2.ini | 2 - .docker/supervisord.conf | 60 --------------- Dockerfile.demo | 75 ------------------- doc/06-Demonstration.md | 38 ++-------- 15 files changed, 8 insertions(+), 238 deletions(-) delete mode 100644 .docker/apache2-site.conf delete mode 100644 .docker/apt-ext.list delete mode 100644 .docker/icinga2-ido.conf delete mode 100644 .docker/icingaweb2/authentication.ini delete mode 100644 .docker/icingaweb2/config.ini delete mode 100644 .docker/icingaweb2/modules/graphite/config.ini delete mode 100644 .docker/icingaweb2/modules/monitoring/backends.ini delete mode 100644 .docker/icingaweb2/modules/monitoring/commandtransports.ini delete mode 100644 .docker/icingaweb2/modules/monitoring/config.ini delete mode 100644 .docker/icingaweb2/resources.ini delete mode 100644 .docker/icingaweb2/roles.ini delete mode 100644 .docker/php-icingaweb2.ini delete mode 100644 .docker/supervisord.conf delete mode 100644 Dockerfile.demo diff --git a/.docker/apache2-site.conf b/.docker/apache2-site.conf deleted file mode 100644 index c5c7fe1..0000000 --- a/.docker/apache2-site.conf +++ /dev/null @@ -1,28 +0,0 @@ -WSGIPythonHome /opt/graphite - - - ServerName localhost - ServerAdmin webmaster@localhost - DocumentRoot /var/www/html - ErrorLog /dev/stderr - CustomLog /dev/stdout combined - - - Require all granted - - - WSGIDaemonProcess graphite processes=5 threads=5 display-name='%{GROUP}' inactivity-timeout=120 user=graphite group=graphite - WSGIProcessGroup graphite - WSGIImportScript /opt/graphite/conf/graphite.wsgi process-group=graphite application-group=%{GLOBAL} - WSGIScriptAlias / /opt/graphite/conf/graphite.wsgi - - Alias /static/ /opt/graphite/webapp/content/ - - Require all granted - SetHandler None - - - - - SetEnv REMOTE_USER icingaadmin - diff --git a/.docker/apt-ext.list b/.docker/apt-ext.list deleted file mode 100644 index ac87262..0000000 --- a/.docker/apt-ext.list +++ /dev/null @@ -1 +0,0 @@ -deb https://packages.icinga.com/debian icinga-stretch main diff --git a/.docker/icinga2-ido.conf b/.docker/icinga2-ido.conf deleted file mode 100644 index d140a01..0000000 --- a/.docker/icinga2-ido.conf +++ /dev/null @@ -1,7 +0,0 @@ -library "db_ido_mysql" - -object IdoMysqlConnection "ido-mysql" { - host = "localhost" - user = "nagios" - database = "icinga2" -} diff --git a/.docker/icingaweb2/authentication.ini b/.docker/icingaweb2/authentication.ini deleted file mode 100644 index 5a9fdc5..0000000 --- a/.docker/icingaweb2/authentication.ini +++ /dev/null @@ -1,3 +0,0 @@ -[icingaweb2] -strip_username_regexp = "" -backend = "external" diff --git a/.docker/icingaweb2/config.ini b/.docker/icingaweb2/config.ini deleted file mode 100644 index 8863ddd..0000000 --- a/.docker/icingaweb2/config.ini +++ /dev/null @@ -1,7 +0,0 @@ -[global] -show_stacktraces = "1" -config_backend = "ini" - -[logging] -log = "php" -level = "INFO" diff --git a/.docker/icingaweb2/modules/graphite/config.ini b/.docker/icingaweb2/modules/graphite/config.ini deleted file mode 100644 index 63c8ba2..0000000 --- a/.docker/icingaweb2/modules/graphite/config.ini +++ /dev/null @@ -1,3 +0,0 @@ -[graphite] -url = "http://127.0.0.1" -insecure = "0" diff --git a/.docker/icingaweb2/modules/monitoring/backends.ini b/.docker/icingaweb2/modules/monitoring/backends.ini deleted file mode 100644 index 702a1a4..0000000 --- a/.docker/icingaweb2/modules/monitoring/backends.ini +++ /dev/null @@ -1,3 +0,0 @@ -[icinga] -type = "ido" -resource = "icinga_ido" diff --git a/.docker/icingaweb2/modules/monitoring/commandtransports.ini b/.docker/icingaweb2/modules/monitoring/commandtransports.ini deleted file mode 100644 index 3d5d591..0000000 --- a/.docker/icingaweb2/modules/monitoring/commandtransports.ini +++ /dev/null @@ -1,3 +0,0 @@ -[icinga2] -transport = "local" -path = "/var/run/icinga2/cmd/icinga2.cmd" diff --git a/.docker/icingaweb2/modules/monitoring/config.ini b/.docker/icingaweb2/modules/monitoring/config.ini deleted file mode 100644 index 9b69fe8..0000000 --- a/.docker/icingaweb2/modules/monitoring/config.ini +++ /dev/null @@ -1,2 +0,0 @@ -[security] -protected_customvars = "*pw*,*pass*,community" diff --git a/.docker/icingaweb2/resources.ini b/.docker/icingaweb2/resources.ini deleted file mode 100644 index de071df..0000000 --- a/.docker/icingaweb2/resources.ini +++ /dev/null @@ -1,11 +0,0 @@ -[icinga_ido] -type = "db" -db = "mysql" -host = "localhost" -port = "" -dbname = "icinga2" -username = "www-data" -password = "" -charset = "utf8" -persistent = "0" -use_ssl = "0" diff --git a/.docker/icingaweb2/roles.ini b/.docker/icingaweb2/roles.ini deleted file mode 100644 index a38fbd3..0000000 --- a/.docker/icingaweb2/roles.ini +++ /dev/null @@ -1,3 +0,0 @@ -[Administrators] -users = "icingaadmin" -permissions = "*" diff --git a/.docker/php-icingaweb2.ini b/.docker/php-icingaweb2.ini deleted file mode 100644 index aa104f1..0000000 --- a/.docker/php-icingaweb2.ini +++ /dev/null @@ -1,2 +0,0 @@ -[Date] -date.timezone = UTC diff --git a/.docker/supervisord.conf b/.docker/supervisord.conf deleted file mode 100644 index 9b1c67b..0000000 --- a/.docker/supervisord.conf +++ /dev/null @@ -1,60 +0,0 @@ -[supervisord] -nodaemon = true -logfile = /dev/stdout -loglevel = info - -[unix_http_server] -file = /run/supervisord.s - -[supervisorctl] -serverurl = unix:///run/supervisord.s - -[program:icinga2] -command = /bin/bash -exo pipefail -c 'set -a; . /etc/default/icinga2; set +a; exec icinga2 daemon -e "$ICINGA2_ERROR_LOG"' -depends_on = carbon-cache, mariadb -stdout_logfile = /dev/stdout -redirect_stderr = true -autostart = true -autorestart = true -startsecs = 10 -startretries = 3 -exitcodes = 0 -stopsignal = TERM -stopwaitsecs = 5 - -[program:apache2] -command = /bin/bash -exo pipefail -c 'set -a; . /etc/apache2/envvars; set +a; exec apache2 -k start -DFOREGROUND' -depends_on = mariadb -stdout_logfile = /dev/stdout -redirect_stderr = true -autostart = true -autorestart = true -startsecs = 10 -startretries = 3 -exitcodes = 0 -stopsignal = TERM -stopwaitsecs = 5 - -[program:mariadb] -command = /usr/sbin/mysqld -u mysql -stdout_logfile = /dev/stdout -redirect_stderr = true -autostart = true -autorestart = true -startsecs = 10 -startretries = 3 -exitcodes = 0 -stopsignal = TERM -stopwaitsecs = 5 - -[program:carbon-cache] -command = nosu graphite graphite /opt/graphite/bin/carbon-cache.py --config=/opt/graphite/conf/carbon.conf --nodaemon start -stdout_logfile = /dev/stdout -redirect_stderr = true -autostart = true -autorestart = true -startsecs = 10 -startretries = 3 -exitcodes = 0 -stopsignal = TERM -stopwaitsecs = 5 diff --git a/Dockerfile.demo b/Dockerfile.demo deleted file mode 100644 index fcf7b75..0000000 --- a/Dockerfile.demo +++ /dev/null @@ -1,75 +0,0 @@ -FROM debian:9 as icingaweb2-module-graphite -SHELL ["/bin/bash", "-exo", "pipefail", "-c"] - -ADD . /icingaweb2-module-graphite - -RUN rm -rf /icingaweb2-module-graphite/.* || true - - -FROM debian:9 -SHELL ["/bin/bash", "-exo", "pipefail", "-c"] - -RUN apt-get update ;\ - DEBIAN_FRONTEND=noninteractive apt-get install --no-install-{recommends,suggests} -y \ - apt-transport-https gnupg2 dirmngr ca-certificates ;\ - apt-get clean ;\ - rm -vrf /var/lib/apt/lists/* ;\ - apt-key adv --fetch-keys 'https://packages.icinga.com/icinga.key' ;\ - DEBIAN_FRONTEND=noninteractive apt-get purge -y gnupg2 dirmngr ;\ - DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y - -ADD .docker/apt-ext.list /etc/apt/sources.list.d/ext.list - -RUN apt-get update ;\ - DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --no-install-suggests -y \ - icinga2-{bin,ido-mysql} dbconfig-no-thanks mariadb-server \ - apache2 icingaweb2{,-module-monitoring} icingacli php7.0-{intl,imagick,mysql,curl} locales \ - gcc libapache2-mod-wsgi libcairo2 libffi-dev python{,-dev} virtualenv ;\ - apt-get clean ;\ - rm -vrf /var/lib/apt/lists/* /etc/icinga2/conf.d/* /etc/icingaweb2/* ;\ - a2dissite 000-default ;\ - perl -pi -e 's~//~~ if /const NodeName/' /etc/icinga2/constants.conf ;\ - perl -pi -e 'if (!%locales) { %locales = (); for my $d ("", "/modules/monitoring") { for my $f (glob "/usr/share/icingaweb2${d}/application/locale/*_*") { if ($f =~ m~/(\w+)$~) { $locales{$1} = undef } } } } s/^# ?// if (/ UTF-8$/ && /^# (\w+)/ && exists $locales{$1})' /etc/locale.gen ;\ - perl -e 'print "object GraphiteWriter \"graphite\" {\n enable_send_thresholds = true\n enable_send_metadata = true\n}\n"' > /etc/icinga2/features-available/graphite.conf - -RUN adduser --system --group --home /opt/graphite/home graphite ;\ - chown graphite:graphite /opt/graphite ;\ - su -ls /bin/bash -c 'set -exo pipefail; /usr/bin/virtualenv /opt/graphite; . /opt/graphite/bin/activate; export PYTHONPATH=/opt/graphite/lib/:/opt/graphite/webapp/; /opt/graphite/bin/pip install --no-binary=:all: https://github.com/graphite-project/whisper/tarball/87ae6def1bece7e079d49a61ac8d09c6ebfe4e96; /opt/graphite/bin/pip install --no-binary=:all: https://github.com/graphite-project/carbon/tarball/f36da0f77aaf83a61f9880dec7abbf5c14a7d2bb; /opt/graphite/bin/pip install --no-binary=:all: https://github.com/graphite-project/graphite-web/tarball/53d96432b6ba1c30797405dff97ba01af009cb25; for f in /opt/graphite/conf/*.example; do ln -vs "$f" "/opt/graphite/conf/$(basename "$f" .example)"; done; /opt/graphite/bin/django-admin migrate --settings=graphite.settings' graphite - -COPY --from=grandmaster/nosu:latest /usr/local/bin/nosu /usr/local/bin/nosu - -COPY --from=icingaweb2-module-graphite /icingaweb2-module-graphite /usr/share/icingaweb2/modules/graphite - -RUN set -a; . /etc/default/icinga2; set +a ;\ - /usr/lib/icinga2/prepare-dirs /etc/default/icinga2 - -RUN install -m 755 -o mysql -g root -d /var/run/mysqld - -RUN mysqld -u mysql & \ - MYSQLD_PID="$!" ;\ - while ! mysql <<<''; do sleep 1; done ;\ - mysql <<<"CREATE DATABASE icinga2; USE icinga2; $(< /usr/share/icinga2-ido-mysql/schema/mysql.sql) GRANT ALL ON icinga2.* TO nagios@localhost IDENTIFIED VIA unix_socket; GRANT SELECT ON icinga2.* TO 'www-data'@localhost IDENTIFIED VIA unix_socket;" ;\ - kill "$MYSQLD_PID" ;\ - while test -e "/proc/$MYSQLD_PID"; do sleep 1; done - -COPY .docker/icinga2-ido.conf /etc/icinga2/features-available/ido-mysql.conf - -RUN set -a; . /etc/default/icinga2; set +a ;\ - for f in command graphite ido-mysql; do icinga2 feature enable $f; done - -COPY .docker/php-icingaweb2.ini /etc/php/7.0/apache2/conf.d/99-icingaweb2.ini -ADD --chown=www-data:icingaweb2 .docker/icingaweb2 /etc/icingaweb2 - -RUN install -o www-data -g icingaweb2 -m 02770 -d /etc/icingaweb2/enabledModules ;\ - ln -vs /usr/share/icingaweb2/modules/monitoring /etc/icingaweb2/enabledModules/monitoring ;\ - ln -vs /usr/share/icingaweb2/modules/graphite /etc/icingaweb2/enabledModules/graphite ;\ - locale-gen -j 4 - -COPY .docker/apache2-site.conf /etc/apache2/sites-available/icingaweb2.conf -RUN a2enmod proxy; a2enmod proxy_http; a2ensite icingaweb2 - -COPY --from=ochinchina/supervisord:latest /usr/local/bin/supervisord /usr/local/bin/supervisord -COPY .docker/supervisord.conf /etc/ - -CMD icingacli graphite icinga2 config >/etc/icinga2/conf.d/graphite.conf ;\ - exec supervisord -c /etc/supervisord.conf diff --git a/doc/06-Demonstration.md b/doc/06-Demonstration.md index fa88099..c37dcd3 100644 --- a/doc/06-Demonstration.md +++ b/doc/06-Demonstration.md @@ -1,37 +1,15 @@ # Demonstration -This repository ships a [Dockerfile](../Dockerfile.demo) for demonstrating -and/or developing this module (but not for using it in production). - -Build: +This module provides a CLI command for demonstrating +graph templates (useful for developing them): ```bash -docker build -t icingaweb2-module-graphite-demo -f Dockerfile.demo . +icingacli graphite icinga2 config ``` -Run: +It generates Icinga 2 config based on the present graph templates. +With this config Icinga will (also) "monitor" dummy services yielding random +perfdata as expected by the graph templates. -```bash -docker run -itp 8080:80 icingaweb2-module-graphite-demo -``` - -The container serves an Icinga Web 2 with this module and all dependencies -at http://localhost:8080/icingaweb2 and Graphite Web at http://localhost:8080. - -Icinga monitors dummy services yielding random perfdata -as expected by the shipped graph templates. - -Use the container for development without re-building: - -```bash -docker run -itp 8080:80 -v "$(pwd):/usr/share/icingaweb2/modules/graphite" icingaweb2-module-graphite-demo -``` - -Code changes are visible immediately, but graph template changes -require a container restart. - -Preserve graphs: - -```bash -docker run -itp 8080:80 -v "$(pwd)/.whisper:/opt/graphite/storage/whisper" icingaweb2-module-graphite-demo -``` +I. e.: If that Icinga is also writing to the Graphite that is +read by this module, you'll get dummy graphs for all templates. From 3329714effb6f3c575ffec368d986ead19db2aab Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Fri, 21 Oct 2022 10:51:46 +0200 Subject: [PATCH 2/2] Rename Demonstration section to Development --- README.md | 2 +- doc/{06-Demonstration.md => 06-Development.md} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename doc/{06-Demonstration.md => 06-Development.md} (91%) diff --git a/README.md b/README.md index 0a79c5e..8b3b529 100644 --- a/README.md +++ b/README.md @@ -22,4 +22,4 @@ the monitoring module. * [Installation](doc/02-Installation.md) * [Configuration](doc/03-Configuration.md) * [Templates](doc/04-Templates.md) -* [Demonstration](doc/06-Demonstration.md) +* [Development](doc/06-Development.md) diff --git a/doc/06-Demonstration.md b/doc/06-Development.md similarity index 91% rename from doc/06-Demonstration.md rename to doc/06-Development.md index c37dcd3..103e0c9 100644 --- a/doc/06-Demonstration.md +++ b/doc/06-Development.md @@ -1,4 +1,4 @@ -# Demonstration +# Development This module provides a CLI command for demonstrating graph templates (useful for developing them):