ETL MQ
info
V případě, že jste nainstalovali Superset podle příručky instalace Supersetu, je již etl-mq nainstalovano a není třeba provádět instalaci manuálně.
ETL MQ je aplikace, která poslouchá ... a data ukládá do databáze BI. Je možné ji provozovat dvěma způsoby - v dockeru a nebo jako službu.
Služba¶
-
V adresáři
/etc/systemd/systemvytvořit souboretl-mq.service/etc/systemd/system/etl-mq.service[Unit] Description=ETL MQ After=network.target [Service] Type=simple Restart=on-failure RestartSec=5s # (1)! User=etl Group=etl # (2)! WorkingDirectory=/opt/etl # (3)! ExecStart=java -jar etl-mq.jar --spring.profiles.active=gctest # (4)! StandardOutput=append:/var/log/etl/etl-mq.log StandardError=inherit ExecStop=/bin/kill "$MAINPID" [Install] WantedBy=multi-user.target- Zadat uživatele a skupinu, pod kterou bude proces spuštěn. Pozor, musí mít práva ke čtení souboru, který se spouští. Pokud chceme pro provoz ETL vytvořit nového uživatele, který bude sloužit pouze k tomuto účeu (doporučeno), můžeme to udělat příkazem useradd např.
useradd -m -d /var/lib/etl etl - Pracovní adresář služby
- Příkaz, který se spouští. Místo
etl-mq.jarje třeba zadat název jaru a místogctestnázev profilu - Soubor, do kteŕeho se budou zapisovat logy. Nastavení
inheritznamená, že se do stejného souboru zapisuje jak stdout, tak stderr viz systemd.exec.
note
Po editaci tohoto souboru je třeba načíst novou konfiguraci příkazem
sudo systemctl daemon-reload - Zadat uživatele a skupinu, pod kterou bude proces spuštěn. Pozor, musí mít práva ke čtení souboru, který se spouští. Pokud chceme pro provoz ETL vytvořit nového uživatele, který bude sloužit pouze k tomuto účeu (doporučeno), můžeme to udělat příkazem useradd např.
-
Do adresáře
/opt/etlnakopírovat etl jar. - Nastavit automatické spuštění služby příkazem
sudo systemctl enable etl-mq
info
Ovládání služby probíhá standardním spůsobem
sudo systemctl start etl-mq # (1)!
sudo systemctl stop etl-mq # (2)!
sudo systemctl restart etl-mq # (3)!
sudo systemctl status etl-mq # (4)!
- Start služby
- Zastavení služby
- Restart služby
- Vypsání informací o službě
Docker¶
-
Vytvořit soubor
/opt/etl/docker-compose.yml/opt/etl/docker-compose.ymlversion: '3.1' services: etl-mq: image: docker.greencenter.site/etl-mq:1.0.8 restart: always extra_hosts: - "pmc.local:host-gateway" # (1)! volumes: - './etl-mq/application-docker.properties:/opt/etl/application-docker.properties' - './crt:/usr/local/share/ca-certificates/extra:ro' environment: TZ: Europe/Prague ETL_FLAGS: "--spring.profiles.active=docker -Duser.country=CZ -Duser.language=cs" # (2)! logging: driver: 'journald' options: tag: 'etl-mq'- Pod názvem pmc.local bude dostupný podkladový systém. To je důležité pro konfigurační soubor etl.
- Nastavení
--spring.profiles.active=dockerzpůsobí, že se properties přečtou ze souboruapplication-docker.properties, který se vytváří v dalším kroku.
-
Do adresáře
/opt/etl/crtnahrát certifikát activemq - Vytvořit soubor
/opt/etl/etl-mq/application-docker.properties. Viz Konfigurace datové pumpy. - Spustit kontejner
Konfigurace etl mq¶
# (1)!
# DB postgreSQL configuration BI
spring.datasource.platform=postgres
spring.datasource.driver-class-name=org.postgresql.Driver
# (3)!
spring.datasource.jdbcUrl=jdbc:postgresql://localhost:5434/bi
spring.datasource.username=pmc-bi
spring.datasource.password=xxxxxxx
spring.datasource.idle-timeout=180000
spring.datasource.connection-timeout=30000
spring.datasource.minimum-idle=5
spring.datasource.maximum-pool-size=5
spring.datasource.pool-name=PmcBiPool
spring.datasource.max-lifetime=1800000
spring.datasource.connection-test-query=SELECT 1
#show SQL and parameters
#spring.jpa.show-sql=true
#logging.level.org.hibernate.SQL=DEBUG
#logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
# SQL batch
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.jpa.properties.hibernate.jdbc.batch_size=50
spring.jpa.properties.hibernate.order_inserts=true
# (2)!
# MQ setting
# (4)!
pmc.etlmq.url = ssl://127.0.0.1:61616
pmc.etlmq.username = pos_broker
pmc.etlmq.password = xxxxxxx
pmc.etlmq.queuename = etldb
pmc.etlmq.timeout = 20000
pmc.etlmq.dbreader = reporting
- Konfigurace připojení k databázi BI
- Konfigurace připojení k MQ
- Pokud etl běží v dockeru, je nutné místo
localhostnastavit odpovídající název hosta. Ten lze nakonfigurocat v docker-compose souboru. Pokud by docker-compose soubor vypadal jako na příkladu výše, nastavil by se zde hostpmc.local. V takovém případě je ale nutné, aby databáze poslouchala na správném síťovém rozhraní. Pokud je databáze BI součástí docker-compose souboru, můžeme se zde odkázat na název kontejneru. - Pokud etl běží v dockeru, je nutné místo
127.0.0.1nastavit odpovídající název hosta. Ten lze nakonfigurocat v docker-compose souboru. Pokud by docker-compose soubor vypadal jako na příkladu výše, nastavil by se zde hostpmc.local. V takovém případě je ale nutné, aby mq poslouchalo na správném síťovém rozhraní.