Přeskočit obsah

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

  1. V adresáři /etc/systemd/system vytvořit soubor etl-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
    
    1. 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
    2. Pracovní adresář služby
    3. Příkaz, který se spouští. Místo etl-mq.jar je třeba zadat název jaru a místo gctest název profilu
    4. Soubor, do kteŕeho se budou zapisovat logy. Nastavení inherit znamená, ž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

  2. Do adresáře /opt/etl nakopírovat etl jar.

  3. 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)!
  1. Start služby
  2. Zastavení služby
  3. Restart služby
  4. Vypsání informací o službě

Docker

  1. Vytvořit soubor /opt/etl/docker-compose.yml

    /opt/etl/docker-compose.yml
    version: '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'
    
    1. Pod názvem pmc.local bude dostupný podkladový systém. To je důležité pro konfigurační soubor etl.
    2. Nastavení --spring.profiles.active=docker způsobí, že se properties přečtou ze souboru application-docker.properties, který se vytváří v dalším kroku.
  2. Do adresáře /opt/etl/crt nahrát certifikát activemq

  3. Vytvořit soubor /opt/etl/etl-mq/application-docker.properties. Viz Konfigurace datové pumpy.
  4. Spustit kontejner
    cd /opt/etl
    docker-compose up -d
    

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
  1. Konfigurace připojení k databázi BI
  2. Konfigurace připojení k MQ
  3. Pokud etl běží v dockeru, je nutné místo localhost nastavit 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 host pmc.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.
  4. Pokud etl běží v dockeru, je nutné místo 127.0.0.1 nastavit 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 host pmc.local. V takovém případě je ale nutné, aby mq poslouchalo na správném síťovém rozhraní.