쿠버네티스에서 파드를 만들었다하자. 해당 파드에서는 특정 컨테이너가 stdout을 통해 logging을 한다. 그럼 보통 해당 파드의 로그를 확인하고 싶을 때, 아래의 명령어를 사용한다. kubectl logs 좀 더 상세히 보자면, Spring boot container 였다면 아래와 같이 나왔을 것이다. $ kubectl logs Calculating JVM memory based on 14121456K available memory Calculated JVM Memory Configuration: -XX:MaxDirectMemorySize=10M -Xmx13524609K -XX:MaxMetaspaceSize=84846K -XX:ReservedCodeCacheSize=240M -Xss1M (Total..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bhVFGs/btrdVjyYH5w/OjsqjULPIJ3pob6CSixrM1/img.png)
Docker container log는 stdout, stderr output streams로 Log를 찍는다. 기본적으로 이러한 log는 Docker host에 JSON file로 저장되게 된다. Default logging driver로 json-file logging driver를 사용하기 때문. Docker log의 저장 위치에 대해 찾아본다면, 아래의 주소에 저장된다고 나온다. /var/lib/docker/containers//-json.log 하지만 더 자세히 실행 중인 특정 컨테이너의 log 위치를 알고 싶다면, docker inspect 명령어를 사용하면 된다. docker inspect --format "{{.LogPath}}" 만약 container_id가 950925 라면, 위 com..
이전의 완전 초기 스타트업에서 Node.js/Express를 사용할 때, pm2를 통해 서버 관리를 한적이 있었다. pm2를 키면 access log를 바로 찍어줘서 request의 어느 부분에서 어떻게 오류가 나고 있고, 났었는지 확인하기가 편했다. Spring boot를 사용해 개발을 시작한 후, access log를 잊고 있다가 'application log 말고 access log는 어떻게 보지?' 라는 생각이 들자 찾아보게되었다. Spring boot를 사용하면 내부에 embedded tomcat이 있기에 따로 WAS를 띄울 필요가 없다. 이 tomcat에 대한 설정을 application.properties 또는 application.yml을 통해 설정할 수 있으며, 이를 통해 access.l..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/q2tIV/btrcb80hBZh/gfe1Oy6anfbQcVykUlbZ40/img.png)
Cookie Cookie는 HTTP의 속성 중 Connectionless, Stateless 를 해결하기 위한 용도로 사용된다. Cookie를 사용함으로써 서버에선 받은 HTTP 요청이 어떠한 정보를 가진 요청이라는 것을 인식할 수 있다. 즉, HTTP 통신 간에 유지하려는 정보가 있는 경우 사용된다. Cookie는 클라이언트 브라우저(Local)에 저장되는 Key-Value 형태의 데이터이다. 서버 측에서 발급하여 클라이언트에게 보내 줌으로써 활용한다. 발급할 때, key-value 말고도 유효한 시간을 정의하여 만료되는 시간을 정할 수도 있다. 또한, path 및 domain 등을 설정하여 특정 주소에서만 사용될 수 있도록 할 수 있다. 즉, 유효한 시간까지는 브라우저가 종료되더라도 Cookie의 정..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/19u6w/btrbPLjAupK/kpRQC4i9uIHShCp5WrEoX1/img.png)
이 글은 쿠버네티스 공식문서의 '로깅 아키텍처'를 바탕으로 요약 및 생각정리를 한 글 입니다. 잘못된 부분이 있다면, 자유롭게 피드백 부탁드립니다 :) 더 자세한 내용이 보고 싶으시다면, 아래 공식문서를 참고해주세요. 로깅 아키텍처 애플리케이션 로그는 애플리케이션 내부에서 발생하는 상황을 이해하는 데 도움이 된다. 로그는 문제를 디버깅하고 클러스터 활동을 모니터링하는 데 특히 유용하다. 대부분의 최신 애플리케 kubernetes.io 컨테이너 엔진들도 로깅을 지원하도록 설계되었다 → 표준 출력, 표준 에러 스트림 작성 일반적으로 컨테이너 엔진이나 런타임에서 제공하는 기본 기능은 완전한 로깅 솔루션으로 충분하지 않다. 예를 들어, 컨테이너가 crash 되거나, Pod가 축출되거나, Node가 종료된 경우에..
개발하다보면 구동 중인 Docker 내로 접속해 내부 파일들을 확인해야 할 때가 있다. Kubernetes에서도 마찬가지로 Pod 내부로 들어가야 할 때가 있다. 이때 bash를 실행시켜 접속하면 된다. Docker의 경우, docker exec -it container_id /bin/bash Kubernetes의 경우, kubectl exec -it pod_name /bin/bash '-it'의 의미는 다음과 같다 - i: STDIN 표준 입출력을 사용하겠다. - t: STDIN에서 pseudo-TTY를 사용하겠다.
특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶으면 영속성 전이 기능을 사용하면 된다. JPA는 CASCADE 옵션으로 영속성 전이를 제공한다. 쉽게 이해하자면 부모 엔티티를 저장할 때(영속화할 때), 자식 엔티티도 함께 저장할 수 있다. 코드 예제 한 부모에 여러 자식이 존재하는 상황으로 다대일(ManyToOne, OneToMany) 관계를 가진다. // Parent.java @Entity public class Parent { ... @OneToMany(mappedBy = "parent") private List children = new ArrayList(); ... } // Child.java @Entity public class Child { ... @ManyTo..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bMnK9W/btraDAyQUOo/zCs1pEeNIVYXoOPnXAXhn0/img.png)
이번 글은 기본이 부족해 삽질한 경험이 바탕이 되는 글입니다. 🥲 docker-compose에서 multiple commands를 사용하는 법에 대해 알아보겠습니다 😸 docker-compose 에서 multiple commands 가 왜 필요해 ? 아래와 같은 docker-compose 파일을 작성해 개발 중이었습니다. version: "3" services: some_service: container_name: some_service build: . volumes: - ~/some-data:/some-data - ~/some-info:/some-info - ~/some-script:/some-script 위 docker-compose 파일에 대해 설명드리자면, docker registry에 등록된 이..
- Total
- Today
- Yesterday
- Spring boot
- 클린 아키텍처
- Algorithm
- k8s
- Clean Architecture
- gradle
- 일상
- MySQL
- java
- 비동기
- Kubernetes
- Log
- c++
- OpenTelemetry
- Spring
- python
- Istio
- 백준
- container
- tag
- Intellij
- 쿠버네티스
- boj
- 하루
- HTTP
- docker
- 알고리즘
- jasync
- 로그
- WebFlux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |