도커 컨테이너에 파일을 저장하게 되면, 컨테이너 레이어에 저장이 되어 컨테이너가 내려가게 되면 지워지는 임시 저장소이다. Docker에서 컨테이너가 호스트 머신에 파일을 저장하기 위해서는 두가지 방법을 제공한다. ( Linux 에서 Docker를 구동하면, tmpfs mount 도 사용할 수 있다. ) 아래 그림은 각 mount에 대해, 차이점을 설명하고 있다. volumes Volumes 은 도커 컨테이너에 의해 생성, 사용되는 호스트 파일 시스템에 저장이 된다. 따라서, 파일을 많이 생성하더라도 컨테이너 이미지의 사이즈가 커지지 않는다. 아래와 같이 볼륨을 생성해서 보면, 도커에 의해 관리되는 위치는 /var/lib/docker/volumes/ 이다. ( 도커가 아닌 프로세스에서는 이 파일시스템을 수..
Spring Cloud Config 를 사용해, Config 서버 구축을 알아보도록 하겠습니다. 먼저, Config 서버 란 application의 config 파일( property )의 최신 정보를 전달해주는 서버입니다. Config 클라이언트에서는 자체적으로 config 파일 가지고 있지 않고, 서버에 config 파일을 요청합니다. 그리고, 변경된 내용이 있으면 클라이언트에서 변경된 내용을 업데이트 할 수 있도록 해줍니다. config 파일의 저장과 버전은 GIT 에서 관리 됩니다. Spring 에서는 Spring Cloud Config 라는 모듈로 이 기능을 제공해 주고 있습니다. 대략 그림을 그려보자면 아래와 같습니다. 1. Client 에서 property 를 요청합니다. 2 ~ 4. Ser..
logstash에서 elasticsearch로 index 시에 아래와 같은 에러가 발생 되었다. [2020-07-28T15:01:08,012][WARN ][logstash.outputs.elasticsearch] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"spring-logback-2020.07.28", :_type=>"_doc", :routing=>nil}, #], :response=>{"index"=>{"_index"=>"spring-logback-2020.07.28", "_type"=>"_doc", "_id"=>nil, "status"=>400, "error"=>{"typ..
서버 개발을 하다보면, 터미널에서 SSH 로 접속을 주로 하게 된다. SSH는 Secure Shell 의 준말이고, 네트워크 상에 다른 컴퓨터에 접속, 명령을 실행할 수 있게 해주는 소프트웨어를 말한다. SSH는 client, server 간에 연결을 안전하게 하기위해 암호화를 하여 처리한다. 암호화된 데이터를 주고 받을 때는, public / private key 를 사용하는데 public key 는 말 그대로 외부에 공개해도 되는 키이고 데이터를 암호화 하는데 사용한다. private key는 절대 공개되어서는 안되고 public key로 암호화된 데이터를 복호화 하는데 사용한다. 로컬 머신에( SSH client ) private key를 가지고, 리모트 머신( SSH server )에서는 publ..
APM Server 를 구동하고, ElasticSearch를 연동해두면, 아래와 같은 형식의 인덱스들이 저장되어 있는 것을 보게 됩니다. apm-%{[version]}-transaction-%{+yyyy.MM.dd} apm-%{[version]}-span-%{+yyyy.MM.dd} apm-%{[version]}-error-%{+yyyy.MM.dd} apm-%{[version]}-metric-%{+yyyy.MM.dd} apm-%{[version]}-sourcemap APM 에서 수집되는 데이터를 타입에 따라 분류해서 저장을 하고 있는 것인데 이를 위해서는 먼저 APM Data Model 에 대해서 먼저 알아야 됩니다. APM Data Model APM Agent에서는 span, transaction, er..
요즘은 ChatOps로 대부분 메신저로 알림을 즉각 받아보고 대응을 하고 있습니다. Jenkins 에서도 슬랙 연동을 제공하고 있어, 설정하는 방법에 대해 알아보겠습니다. Jenkins + Git 연동으로 자동 빌드 시스템을 구축을 해두었지만, 막상 자동 빌드가 잘 되고 있나 확인을 위해서는 Jenkins에 접속해서 확인을 꼭 하곤했었는데 마침 시간이 나서 슬랙 연동을 해두어 구지 빌드 상황을 알기 위해 jenkins에 접속하는 일이 없도록 하려고 합니다. 먼저 슬랙 에 Jenkins 를 설치해야 합니다. 슬랙 좌측 아래에 Apps에 + 버튼을 누르고, 설치할 App인 Jenkins를 검색해서 설치를 합니다. 설치 후, Slack 의 Jenkins CI 앱에서 Add Configuration 을 눌러 설..
kibana 로그는 디폴트로 stdout에 출력을 하게 된다. 데몬으로 동작되고 있는 ( systemctl ) kibana 서비스의 로그를 보기 위해서는, journalctl -u kibana.service 를 이용하여 볼 수 있다. $ journalctl -u kibana.service --since=today > ~/kibana.log 파일로 출력하도록 변경하기 위해서는 kibana.yml에 logging.dest 를 변경해주면 된다. $ sudo cat /etc/kibana/kibana.yml | grep logging.dest #logging.dest: stdout logging.dest: /var/log/kibana.log
Java Exception에는 Exception과 RuntimeException이 있다. 차이는 먼저 아래 표를 참조하자. Exception - Checked Exception RuntimeException - Unchecked Exception 처리 여부 반드시 예외 처리 해야 한다 예외 처리를 하지 않아도 된다 트랜잭션 롤백 롤백이 되지 않음 롤백 진행 예외 처리 확인 컴파일 중 런타임 중 발생 외부 영향으로 발생 할 수 있는 것들 ( 사용자 동작, 운영체제 등 ) 프로그래머 실수에 의해서 발생 Checked Exception은 try~catch 구문이나 throws를 이용하여, 예외를 바로 처리하거나 호출하는 함수에서 처리를 해야 한다. 그렇지 않으면 컴파일 시에 처리하지 않은 예외가 있다고 에러를..
Spring 에서는 다른 환경에서 같은 어플리케이션 코드로 동작할 수 있도록 외부에서 설정을 할 수 있도록 제공해 준다. 로컬, 개발, 상용 등의 환경에서 그에 맞는 설정 파일을 참조하여, 설정 값을 코드에서 읽어 사용을 한다는 뜻이다. 프로파일( Profile ) 프로그래밍적으로 활성화 되는, 논리적 그루핑의 이름이라고 할 수 있다. 위에서 언급 한 것 처럼, 일반적으로 개발 환경에 따라 프로파일 명을 지정하여 주로 사용을 한다. 프로파일은 코드 단에서 빈에 정의를 할 수 있고, 설정 파일에도 정의를 할 수 있다. 이러한 프로파일은 한번에 하나 이상의 프로파일을 활성화 할 수 있다. 프로파일 활성화는, 프로그래밍 방식, 환경변수( SPRING_PROFILES_ACTIVE ), JVM -D옵션( -Dsp..
목차 1. 로깅 프레임워크 SLF4J SLF4J는 Simple Logging Facade의 약자로 프레임워크라기 보다는 여러 로깅 프레임워크의 인터페이스 역활을 합니다. 로깅 프레임워크는 SLF4J 규약에 맞게 구현을 하고, 개발자는 SLF4J 인터페이스를 호출하여 원하는 프레임워크를 사용하면 됩니다. 직접 로깅 프레임워크를 사용하지 않고, SLF4J라는 인터페이스를 사용하는 이유는 여러 이유로 로깅 프레임워크를 변경하게 될 경우 로깅 프레임워크 의존성만 변경하면 코드 변경 없이 전환이 가능하기 때문입니다. Log4j 가장 오래된 로깅 프레임워크지만, 15년도 부터 더 이상 개발이 되지 않고 있는 프레임워크로 사용하지 않는 것이 좋습니다. Logback Log4j 이후에 출시한 프레임워크로 성능이 더 향..
- Total
- Today
- Yesterday
- Size
- plugin
- maven
- Git
- apm
- Container
- docker
- scala
- tomcat
- Spark
- Postman
- Filter
- SpringBoot
- elasticsearch
- install
- Kibana
- Linux
- intellij
- logstash
- AWS
- error
- gradle
- Index
- JPA
- mac
- Java
- JSON
- spring
- Log
- spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |