CIV:Granty/Moderní monitoring IT infrastruktury/Workshop
Z HelpDesk
Instalace
Průvodce instalací
Základní instalace Icingy
- Získání tokenu
usermod -a -G icingaweb2 www-data icingacli setup config directory --group icingaweb2 icingacli setup token create The newly generated setup token is: xxxxxxxxxxxxxxxxxxxx
- Nastaveni databáze
Resource Name: icingaweb_db Database Type: PostgreSQL Host: localhost Port: 5432 Database Name: icinga2 Username: icinga2 Password: z výstupu ansible Character Set: utf8 Use SSL: -> Validate Configuration -> Next
- Nastavení Backendu
Backend Name: icingaweb2 -> Next
- Nastavení administratora:
Username: admin Password: mojeadminheslo Repeat password: mojeadminheslo -> Next
- Základní nastavení aplikace: ponechat defaultní
-> Next
- Přehledová stránka
-> Next
- Welcome
-> Next
Modul Monitoring
- Backend monitoringu
Backend Name: icinga Backend Type: IDO -> Next
- Vytvoření databáze a schématu pro monitoring:
cd /tmp sudo -u postgres psql -c "CREATE ROLE icinga WITH LOGIN PASSWORD 'icinga'" sudo -u postgres createdb -O icinga -E UTF8 icinga
export PGPASSWORD=icinga psql -h localhost -U icinga -d icinga < /usr/share/icinga2-ido-pgsql/schema/pgsql.sql
- Nastavit přístup Icingy do PostgreSQL databáze aby tam ukládala výsledky:
vim /etc/icinga2/features-available/ido-pgsql.conf
/** * The db_ido_pgsql library implements IDO functionality * for PostgreSQL. */ library "db_ido_pgsql" object IdoPgsqlConnection "ido-pgsql" { user = "icinga", password = "icinga", host = "localhost", database = "icinga" }
icinga2 feature enable ido-pgsql systemctl restart icinga2
- Monitoring IDO Resource
Resource Name: icinga_ido Database Type: PostgreSQL Host: localhost Port: 5432 Databese Name: icinga Username: icinga Password: icinga Character Set: utf8 Use SSL: -> Validate Configuration -> Next
- vytvoření certifikátů, okopírování na správná místa a nastavení práv
SERVERNAME=$HOSTNAME.zcu.cz cd /tmp icinga2 pki new-ca icinga2 pki new-cert --cn $SERVERNAME --key $SERVERNAME.key --csr $SERVERNAME.csr icinga2 pki sign-csr --csr $SERVERNAME.csr --cert $SERVERNAME.crt mkdir -p /var/lib/icinga2/certs cp $SERVERNAME.{crt,key} /var/lib/icinga2/certs cp /var/lib/icinga2/ca/ca.crt /var/lib/icinga2/certs chown -R nagios:nagios /var/lib/icinga2/certs chmod 600 /var/lib/icinga2/certs/*.key chmod 644 /var/lib/icinga2/certs/*.crt
- Příprava uživatele pro import dat z Directoru:
cat > /etc/icinga2/conf.d/api-users.conf << EOF object ApiUser "director" { password = "director" permissions = [ "*" ] } EOF
- Povolení Icinga 2 API
icinga2 feature enable api systemctl restart icinga2
- Command Transport
Transport Name: director Transport Type: Icinga 2 API Host: localhost Port: 5665 API Username: director API Password: director -> Validate Configuration -> Next
- Monitoring Security: ponechat defaultní
-> Next -> Finish -> Login to Icinga Web 2
Modul Director
- Příprava databáze (v našem případe PostgreSQL)
su postgres cd /tmp psql -q -c "CREATE DATABASE director WITH ENCODING 'UTF8';" psql director -q -c "CREATE USER director WITH PASSWORD 'some-password'"; psql director -q -c "GRANT ALL PRIVILEGES ON DATABASE director TO director;" exit
- Zrušení předdefinované konfigurace (podívej se, co se teď monitoruje)
cp -r /etc/icinga2/conf.d /etc/icinga2/conf.d.orig rm /etc/icinga2/conf.d/{apt,downtimes,groups,hosts,notifications,services}.conf
- Nastavení resources pro databázi
-> Configuration -> Application -> Resources -> Create a New Resource: Resource Type: SQL Resource Name: director_db Database Type: PostgreSQL Host: localhost Port: 5432 Database Name: director Username: director Password: some-password Character Set: utf8 Use SSL: No -> Validate Configuration -> Save Changes
- Instalace
git clone https://github.com/Icinga/icingaweb2-module-director /usr/share/icingaweb2/modules/director
- Nastavení
-> Configuration -> Modules -> Director -> enable -> Configuration: DB Resource: director_db -> Create Database Schema (čekej) Endpoint Name: aetherXY.zcu.cz Icinga Host: aetherXY.zcu.cz Port: 5665 API user: director Password: director -> Run import (čekej) -> Store configuration
- Deploy připravené konfigurace
Icinga Director -> Deployments -> Render config
Grafana
Grafana je dostupná na /grafana.
- Vytvoření databáze v InfluxDB
influx create database icinga
- Konfigurace InfluxDB - Icinga
icinga2 feature enable influxdb cat > /etc/icinga2/features-enabled/influxdb.conf << EOF /** * The InfluxdbWriter type writes check result metrics and * performance data to an InfluxDB HTTP API */ object InfluxdbWriter "influxdb" { host = "127.0.0.1" port = 8086 database = "icinga" flush_threshold = 1024 flush_interval = 10s host_template = { measurement = "\$host.check_command\$" tags = { hostname = "\$host.name\$" } } service_template = { measurement = "\$service.check_command\$" tags = { hostname = "\$host.name\$" service = "\$service.name\$" } } } EOF systemctl restart icinga2
- První přihlášení
Username: admin Password: admin
- Přidání InfluxDB
Add data source -> Name: influx Type: InfluxDB URL: http://localhost:8086 Access: Server (Default) Database: icinga -> Save & Test
- Přídání dashboardu
-> New Dashboard -> New Panel -> Graph -> Panel Title -> Edit -> Metrics -> A: FROM default load WHERE host = icinga SELECT field(value) mean() GROUP BY time($__interval) fill(null) FORMAT AS Time series ALIAS BY load -> ❌ -> 🖫 (Save dashboard)
Monitorujeme
Host
- Vytvořit template hosta
- Vytvořit hosta
- Deploy & Overview
Service
- Vzdálený test - ping4
- Vytvořit template služby
- Apply rule (ping4 pokud je nastavena adresa)
- Deploy & Overview
- Lokální test - load
- Vytvořit hostgroup linux na aether*.zcu.cz
- Vytvořit template služby
- Apply rule (load pokud je ve skupine linux)
- Deploy & Overview
- Test s parametry - disk usage
- External Commands - přidat parametry
- Vytvořit template služby s parametry
- Apply rule (pokud je ve skupině linux)
- Deploy & Overview
- Vytvořit Host template pro disk usage
- Přidat template hostovi
Rozšíření
- modul pro RT
- modul pro mapy
Ostatní
- ukázka monitoringu na ZČU
- dashboardy
- director
- grafana
- automatizace
- LDAP, DNS
- cfengine - JSON API