Integrált

informatikai rendszerek

Dr Csala Dénes

UBB FSEGA

2025 tavasz

1. Automatikus adatgyűjtés és monitorizálás

a. Bevezető

Órarend - 1a- 1. nap

  • 16:10-17:00 Bevezető / Ismétlés
  • 17:10-18:00 Cloud computing
    • AWS, GCP, Azure
  • 18:10-19:00 Containerized computing
    • Docker
  • 19:10-20:00 Adatfeldolgozási környezet
    • Linux, Jupyter, Docker

Órarend - 1a- 2. nap

  • 16:10-17:00 Monitorizálási platformok - Grafana
  • 17:10-18:00 Grafana bemutató
  • 18:10-19:00 Idősor adatbázisok - InfluxDB
  • 19:10-20:00 InfluxDB adatfeltöltés
  • (ha lesz időnk) Chronograf
ezelink.com
vividcomm.com
fmsystems.com

1. Automatikus adatgyűjtés és monitorizálás

Cloud computing

Amazon Web Services

Felhő-számítástechnikai kifejezések szótára

2. Automatikus adatgyűjtés és monitorizálás

Containerized computing

Docker install

  • Telepítés direkt módon
  • Ha nem működik a telepítő
  • Ha nem indul el a Docker telepítés után
    • Memória és tárhely beállítása minimumra

Docker install

  • Ha WSL 2 üzenet kapsz, akkor olvasd ezt el
  • Utána meg ezt
    • Telepítsd az Ubuntu-t a Store-ból
  • Engedélyezd a WSL-t egy PowerShell-ből
    • Adminént indíts el egy új PowerShell-t
    • Állítsd át a WSL 1-et WSL 2-esre így
  • Valószínű, hogy kell frissítsd a kernel-t
  • Állítsd át az Ubuntu-t WSL 2-esre így. Kész!

Docker install

Docker install

  • Ubuntu 18 operációs rendszer
  • t2.micro típusú (ingyenes)

Docker install

  • Edit storage → 29GB
  • Edit security groups → Create new

Docker install

  • All traffic / Anywhere
  • Nem biztonságos, ez csak teszt!

Docker install

  • New key pair
  • Mentsd el!

Docker install

  • Kiválaszt
  • Connect
  • browser-based Ubuntunál nem működik egyből!

Docker install

  • WIndows: Download & install SmarTTY → New SSH Connection
  • Linux/Mac: ssh

Host name

Docker install

Docker install

Docker config

sudo bash

apt-get update

apt-get upgrade

apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
   
apt-get update

apt-get install docker-ce docker-ce-cli containerd.io

docker run hello-world

docker ps

Docker config

sudo snap instal docker

Docker config

docker volume create portainer_data

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always \
	-v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data portainer/portainer
    
docker ps

your-host-name.amazonaws.com:9000

Portainer!

Docker config

docker ps

docker ps -a

docker ps -q

docker ps -aq

docker stop 37e4eb95ddad

docker start 37e4eb95ddad

docker stop 37e4eb95ddad

docker rm 37e4eb95ddad

docker ps

(linux only)
docker stop `docker ps -q`

(linux only)
docker rm `docker ps -aq`

3. Automatikus adatgyűjtés és monitorizálás

Data processing environment

Jupyter in Docker

Jupyter in Docker

docker run -p 8888:8888 jupyter/base-notebook

docker run -d -p 8888:8888 jupyter/base-notebook


docker ps -q

docker exec -it <mycontainer> bash

jupyter lab list

exit

(CLEANUP)
https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes

docker system prune

(CAUTION!)
docker system prune -a

4. Automatikus adatgyűjtés és monitorizálás

Monitoring

 ~ Grafana ~

Grafana in Docker

docker run -p 3000:3000 --name grafana grafana/grafana

docker run -d -p 3000:3000 --name grafana grafana/grafana

// alap user/jelszó: admin/admin
  • admin/admin

Chronograf in Docker

docker run -p 8888:8888 -v chronograf:/var/lib/chronograf chronograf

docker run -p 8889:8888 -v chronograf:/var/lib/chronograf chronograf

docker run -d -p 8889:8888 -v chronograf:/var/lib/chronograf chronograf

5. Automatikus adatgyűjtés és monitorizálás

Recording

 ~ InfluxDB ~

Influx in Docker

docker run -p 8083:8083 -p 8086:8086 -v influxdb:/var/lib/influxdb influxdb:1.8

docker run -d -p 8083:8083 -p 8086:8086 -v influxdb:/var/lib/influxdb influxdb:1.8

(linux only)
curl -G http://localhost:8086/query --data-urlencode "q=SHOW USERS"

docker run -d -p 8083:8083 -p 8086:8086 -v influxdb:/var/lib/influxdb influxdb

6. Automatikus adatgyűjtés és monitorizálás

b. Workshop

docker-compose

version: '3'
services:
   grafana:
      image: grafana/grafana
      container_name: grafana
      restart: always
      ports:
         - '3000:3000'
   influxdb:
      image: influxdb:1.8
      container_name: influxdb
      restart: always
      ports:
         - '8086:8086'
         - '8083:8083'
  • Egyszerre több Docker-konténer indítása

docker-compose

version: '3'
services:
   grafana:
      image: grafana/grafana
      container_name: grafana
      restart: always
      ports:
         - '3000:3000'
      volumes:
         - ./az_en_grafana_mappam:/var/lib/grafana
  • volume: permanens tárhely

docker-compose

version: '3'
services:
   grafana:
      image: grafana/grafana
      container_name: grafana
      restart: always
      ports:
         - '3000:3000'
      volumes:
         - ./az_en_grafana_mappam:/var/lib/grafana
      networks:
         dc2net:
            ipv4_address: 172.28.1.1
networks:
    dc2net:
        ipam:
            driver: default
            config:
                - subnet: 172.28.0.0/16
  • network: fix IP-cím

docker-compose

version: '3'
services:
   grafana:
      image: grafana/grafana
      container_name: grafana
      restart: always
      user: '0'
      ports:
         - '3000:3000'
      volumes:
         - ./az_en_grafana_mappam:/var/lib/grafana
      networks:
         dc2net:
            ipv4_address: 172.28.1.1
networks:
    dc2net:
        ipam:
            driver: default
            config:
                - subnet: 172.28.0.0/16
  • Linux-on: user: '0' = root/admin jogok

docker-compose

version: '3'
services:
   grafana:
      image: grafana/grafana
      container_name: grafana
      restart: always
      user: '0'
      ports:
         - '3000:3000'
      volumes:
         - ./az_en_grafana_mappam:/var/lib/grafana
      networks:
         dc2net:
            ipv4_address: 172.28.1.3
   chronograf:
      image: chronograf
      container_name: chronograf
      restart: always
      ports:
         - '8889:8888'
      volumes:
         - ./az_en_chronograf_mappam:/var/lib/chronograf
      networks:
         dc2net:
            ipv4_address: 172.28.1.4
   influxdb:
      image: influxdb
      container_name: influxdb
      restart: always
      ports:
         - '8086:8086'
         - '8083:8083'
      volumes:
         - ./az_en_influxdb_mappam:/var/lib/influxdb
      networks:
         dc2net:
            ipv4_address: 172.28.1.2
   jupyter:
      image: jupyter/base-notebook
      container_name: jupyter
      restart: always
      user: '0'
      ports:
         - '8888:8888'
      volumes:
         - ./az_en_jupyter_mappam:/home/jovyan/work
      networks:
         dc2net:
            ipv4_address: 172.28.1.1
networks:
    dc2net:
        ipam:
            driver: default
            config:
                - subnet: 172.28.0.0/16
  • teljes docker-compose.yml

docker-compose

mkdir az_en_projektem

cd az_en_projektem

<ide jön a docker-compose.yml>

docker-compose up

docker-compose down

docker-compose up -d

docker-compose down --volumes
  • docker-compose up

docker-compose

version: '3'
services:
   jupyter:
      build: ./az_en_jupyter_mappam
      container_name: jupyter
      restart: always
      user: '0'
      ports:
         - '8888:8888'
      volumes:
         - ./az_en_jupyter_mappam:/home/jovyan/work
  • docker image build

Dockerfile

FROM jupyter/base-notebook
RUN pip install pandas
RUN pip install influxdb
ENTRYPOINT ["jupyter", "lab", "--ip=0.0.0.0", "--allow-root" , "--NotebookApp.token=UBBxBI2"]
  • ./az_en_jupyter_mappam/Dockerfile

Jupyer ➡ InfluxDB

import pandas as pd
from influxdb import DataFrameClient

user = 'root'
password = 'root'
host='influxdb' #172.28.1.2 #localhost #3.14.5.146 - kozos osztaly InfluxDB szerver
port=8086
dbname='base' #az en adatbazis nevem
protocol = 'line' #json
client = DataFrameClient(host, port, user, password, dbname)

client.query('show databases')

client.drop_database(dbname)
client.drop_retention_policy(dbname)
client.create_database(dbname)
client.create_retention_policy(dbname, '1000d', 1, default=True)

client.query('show databases')
  • parser.ipynb

Jupyer ➡ InfluxDB

import time
from random import randrange

measurement='teszt'

for i in range(5000):
    now=pd.to_datetime('now')
    value=randrange(10)
    print(now)
    time.sleep(2)
    data={'a':{'date':now,'value':value,'szin':'piros','nev':'Denes'}}
    df=pd.DataFrame(data).T.set_index('date')
    df.index=pd.to_datetime(df.index)
    df['value']=df['value'].astype(int)
    client.write_points(df, measurement, protocol=protocol,
                        field_columns=['value'],
                        tag_columns=['szin','nev'])
    print('success')
  • parser.ipynb

Integrált informatikai rendszerek

By Dénes Csala

Integrált informatikai rendszerek

  • 72