2022년 2월 23일 수요일

[ Docker ] 명령어 ( image 관련 )

 

도커 실행환경의 상세설정 

$ docker system info

Client:

 Context:    default

 Debug Mode: false

 Plugins:

  buildx: Build with BuildKit (Docker Inc., v0.6.3)

  compose: Docker Compose (Docker Inc., v2.0.0)

  scan: Docker Scan (Docker Inc., v0.8.0)

Server:

 Containers: 0

  Running: 0

  Paused: 0

  Stopped: 0

 Images: 15 ...


도커 디스크 이용상황

$ docker system df

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE

Images          8         0         7.751GB   7.751GB (100%)

Containers      0         0         0B        0B

Local Volumes   29        0         785.6MB   785.6MB (100%)

Build Cache     6         0         0B        0B


웹 서버 실행 예제

# 이미지 다운로드

$ docker pull nginx


# 다운로드 이미지 확인

$ docker image ls  


# 컨테이너 실행 (웹에서 확인 localhost:80) 

$ docker run --name webserver -d -p 80:80 nginx


# 컨테이너 상태 확인

$ docker ps

CONTAINER    ID    IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES

c167    nginx    "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   0.0.0.0:80->80/tcp   webserver


# 실시간 컨테이너 상태 확인

$ docker stats webserver

CONTAINER   ID   NAME   CPU %   MEM   USAGE / LIMIT   MEM %   NET I/O   BLOCK I/O   PIDS

c167   webserver   0.00%     6.707MiB / 3.83GiB   0.17%     4.03kB / 2.5kB   0B / 0B   9


# 컨테이너 정지 및 시작

$ docker stop webserver

$ docker start webserver


도커 이미지 조작

 실행 예제

# 특정 태그(버전)의 이미지 다운

$ docker pull centos:7


# 모든 태그 이미지 다운

$ docker pull -a centos


# 모든 이미지 목록 조회 (+중간파일 )

$ docker image ls -a


# 이미지 목록에 다이제스트 포함 조회

$ docker image ls --digests


# 이미지 검색

$ docker search --limit 5 airflow


$ 이미지 조건 검색

$ docker search --filter=stars=100 airflow


# 이미지 삭제

$ docker image rm


# 사용하지 않는 이미지 모두 삭제

$ docker image prune -a


# 이미지 docker hub에 업로드

$ docker login

$ docker image push 이미지명[:태그명]


# 이미지 생성 시 명령어 실행 히스토리

$ docker history image_name


2022년 2월 17일 목요일

[ AWS ] CloudWatch Event를 통해 Lambda Trigger 생성

 

Awsconsole -> Cloudwatch -> 좌측메뉴 -> 이벤트 -> 규칙 -> 규칙생성


1. 패턴을 이용한 Event 생성

예시는 특정 Glue job이 끝나면 Lambda함수 시작하는 Trigger Event 생성

a) 서비스 이름/ 이벤트 유형을 선택한다.



b) 이벤트 패턴을 작성

{

  "source": [

    "aws.glue"

  ],

  "detail-type":[

    "Glue Job State Change"

  ],

  "detail": {

    "state": [

      "SUCCEEDED"

    ],

    "jobName": [

        "GlueJobName"

    ]

  }

}

참조 : https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/events/EventTypes.html#glue-event-types


c) 우측의 대상추가에서 트리거로 실행할 Lambda함수 선택



2. 일정을 이용한 Event 생성

crontab 표현식 작성 부분만 다를 뿐 1번과 같다.



마지막으로 작성한 cloudwatch event role을 

lambda함수의 trigger로 등록하면 된다






2022년 2월 16일 수요일

[ Docker ] wsl을 통한 메모리 관리

 

windows에서 docker사용 시 .wslconfig file을 통해 docker메모리를 관리한다.


C:\Users\{Name} 경로에 .wslconfig 파일을 생성 후 내용 추가

[wsl2]

memory=4GB

swap=0

 

power shell에서 해당 서비스 재시작 후 

Restart-Service LxssManager


변경 사항 확인

ubuntu shell : free -h












2022년 2월 1일 화요일

[ Docker ] 이미지 다운로드시, 도커 기본 저장경로 변경

Windows Docker사용시 

default로 C:디스크의 C:\Users\My\AppData\Local\Docker\wsl에 

도커이미지가 저장된다. 

여러 이미지를 다운로드시 저장공간이 커지므로 

파티션된 다른 디스크로 docker path를 설정한다.


# 사용하는 docker app 확인

wsl --list -v

NAME STATE VERSION 

* docker-desktop Running 2 

  docker-desktop-data Running 2


# 종료

wsl --shutdown


# tar파일 export

wsl --export docker-desktop <export path>\docker-desktop.tar 

wsl --export docker-desktop-data <export path>\docker-desktop-data.tar


# wsl에 등록해제

wsl --unregister docker-desktop 

wsl --unregister docker-desktop-data


# 생성한 tar파일 새로 저장한 디렉토리에 import

wsl --import docker-desktop <new location, e.g another drive> <export path>\docker-desktop.tar 

wsl --import docker-desktop-data <new location, e.g another drive> <export path>\docker-desktop-data.tar


# docker 재시작


2022년 1월 27일 목요일

[ AWS ] Lambda함수에서 Athena Table Repartition

 

[ 1. Athena Table Create ] 

테이블 생성 후

-- 설정된 파티션 보기

show partitions test_db.table_name;


-- 해당 파티션의 S3 location 보기

describe formatted test_db.table_name partition (partition_column='123123');



[ 2. Lambda 함수 작성 ]

람다 아테나 쿼리 실행 참조 : 

https://medium.com/dataseries/automating-athena-queries-from-s3-with-python-and-save-it-as-csv-8917258b1045

S3 트리거를 이용하여 Lambda 함수 호출 :

https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/with-s3-example.html



[ 3. Lambda Role 설정 ]

람다함수 -> 구성 -> 권한 -> 실행역활의 Role 정책 추가

AmazonS3FullAccess

AmazonAthenaFullAccess

CloudWatchLambdaInsightsExecutionRolePolicy



[ 4. 실행 테스트 ]

로그는 CloudWatch, Athena log(S3에 저장하도록 설정) 에서 확인


Insufficient Lake Formation permission 에러가 나온다면

LakeFormation -> permissions -> data lake permissions에서 

쿼리적용할 테이블에 대한 iam user 권한 설정


2022년 1월 11일 화요일

[ Grafana ] metadata DB 변경 ( mysql )

meta data storage는 default sqlite이다.

아래는 mysql로 setting하는 작업이다.


1. Mysql set up

  • mysql 설치
  • mysql에 grafana user와 privileges 설정
  • grafana session table 생성

2. grafana.ini 파일에서 mysql enable설정

3. grafana start


mysql

mysql> CREATE DATABASE grafana;

mysql> GRANT ALL ON `grafana`.* to 'grafana'@'%' identified by 'datatech';

mysql> flush privileges;

mysql> SELECT user, host FROM user;

mysql> CREATE TABLE `session` (`key` char(16) not null, `data` blob, `expiry` int(11) unsigned not null, primary key (`key`) ) ENGINE=MyISAM default charset=utf8;


sudo vi $GRAFANA_HOME/conf/grafana.ini

[database]

# Either "mysql", "postgres" or "sqlite3", it's your choice

;type = sqlite3

;host = 127.0.0.1:3306

;name = grafana

;user = root

;password =

type = mysql

host = mysqlserver.example.com:3306

name = grafana

user = grafana

password = grafanamysqluserpasswd

# For "postgres" only, either "disable", "require" or "verify-full"

;ssl_mode = disable

# For "sqlite3" only, path relative to data_path setting

;path = grafana.db



2022년 1월 10일 월요일

[ Grafana ] Alert


  • Alert rules
  • Contact points
  • Notification policies
  • Sliences
  • Alert groups


[ Alert rules ]

조건에 따른 알림 생성



알림을 저장할 Folder가 최소 1개 필요하다

'Run queries'버튼 클릭시 미리 임계값을 적용한 그래프보기 가능



[ Contact points ]

message보낼 template와

알림을 보낼 SNS정보( Contact points ) 등록가능 


[ Sliences ]

알림 설정을 잠시 동안 Off하는 기능


참조 : 

https://velog.io/@hansung/Grafana-8.0-%EA%B0%9C%EC%84%A0%EB%90%9C-%EC%95%8C%EB%A6%BC-%EA%B8%B0%EB%8A%A5