로그

컨테이너 내부에서 어던 일이 일어나는지 아는 것은 디버깅뿐만 아니라 운영 측면에서도 중요하다. 도커는 컨테이너의 표준 출력(StdOut)과 에러(StdErr) 로그를 별도의 메타데이터 파일로 저장하며 이를 확인하는 명령어를 제공한다. docker logs 명령어를 사용해 컨테이너의 표준 출력을 확인할 수 있다. $ docker run -d --name mysql \ -e MYSQL_ROOT_PASSWORD=1234 \ mysql:5.7 $ docker logs mysql 2022-12-27 10:19:09+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.40-1.el7 started. 2022-12-27 10:19:10+00:00 [N..
· ELK
Filebeat는 로그 데이터를 전달하고 중앙화하기 위한 경량의 Producer이다. Filebeat는 지정한 로그 파일 또는 위치를 모니터링하고 로그 이벤트를 수집해 Logstash로 전달해주고, 가공 작업을 거쳐 Elasticsearch로 보내주고 이 결과를 Kibana로 볼 수 있도록 구축할 예정이다. 1. Application 로그 수집 먼저 Spring Boot Application에서 로그를 수집해야 한다. 나의 경우는 AOP와 Logback을 통해 API 로그와 오류 로그만 수집하도록 설정하였다. 1-1. AOP 설정 LoggingAspect.java @Aspect @Component @RequiredArgsConstructor public class LoggingAspect { privat..
· JPA
모든 엔티티를 대상으로 언제 어떤 사용자가 삭제를 요청했는지 모두 로그를 남겨야 하는 요구사항이 있다고 가정하자. 이때 애플리케이션 삭제 로직을 하나씩 찾아서 로그를 남기는 것은 너무 비효율적이다. JPA 리스너 기능을 사용하면 엔티티의 생명주기에 따른 이벤트를 처리할 수 있다. 이벤트 종류 PostLoad 엔티티가 영속성 컨텍스트에 조회된 직후 또는 refresh를 호출한 후(2차 캐시에 저장되어 있어도 호출된다) PrePersist persist() 메소드를 호출해서 엔티티를 영속성 컨텍스트에 관리하기 직전에 호출된다. 식별자 생성 전략을 사용한 경우 엔티티에 식별자는 아직 존재하지 않는다. 새로운 인스턴스를 merge 할 때도 수행된다. PreUpdate flush나 commit을 호출해서 엔티티를..
· Spring
Prometheus, Grafana에 대한 것은 이전 블로그글에서 확인하면 된다. Spring Boot Project 생성 및 설정 Spring Boot Project(Gradle)를 생성하고 build.gradle에 의존성을 주입해준다. dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.micrometer:micrometer-core' implementation 'io.micrometer:micrometer-registry-prometheus'..
· Spring
프로젝트 중 모니터링 시스템을 구현해보려고 한다. Prometheus + Grafana를 이용해 Spring Boot 애플리케이션을 모니터링 해 볼 것이다. 모니터링 시스템은 너무많은 종류가 있어서 본인이 사용하고 싶은것으로 사용해도 좋을듯하다. 추후에는 cAdviser도 연동해 컨테이너 모니터링까지 해볼 예정이다. 먼저 Prometheus, Grafana가 무엇인지 간단하게 알고 가자. Prometheus Prometheus는 SoundCloud사에서 만든 오픈소스 시스템 모니터링 및 경고 툴킷이다. 지금은 독립형 오픈소스 프로젝트이며 많은 회사들이 사용 하고 있고, 또한 kubernetes에서도 Prometheus를 사용하여 매트릭 수집 및 대시보드 구축하는 방식을 장려하고 있다. Jobs/expor..
· ETC
금융보안원, Apache Log4j2 취약점 긴급 점검 회의 개최 금융보안원(원장 김철웅)은 12월 12일(일) 김철웅 원장이 주재하는 금융권 Apache Log4j2 취약점 긴급 점검 회의를 개최해 금융권에 미치는 영향 등을 분석하고 금융보안원의 대응 상황을 점검했 www.boannews.com 홈페이지 기록 남기는 '로그4j2'서 취약점 발견…과기정통부 "긴급 보안패치 권고" 사진=픽사베이 많은 기업들이 홈페이지를 운영하며 사용하는 아파치(Apache) 로그(Log)4j 2 서비스와 관련된 보안 취약점이 발견된 가운데 정부가 긴급 보 www.bloter.net 애플·아마존도 사용하는 애드온 Log4j, 중대한 보안 결함 사태 발생 - CCTV뉴스 전 세계 주요 인터넷 서비스에서 널리 사용되는 Log4..
환경 변수 API 구현 예시 이번에는 d5라고 하는 디렉터리를 만들고 Dockerfile과 my_daemon이라고 하는 2개 파일을 바탕으로 컨테이너를 개발할 것이다. FROM을 사용해 베이스 이미지로 apline을 지정했다. RUN에서는 apk add bash로 bash 셸을 추가했다. ADD로는 셸 스크립트 my_daemon을 루트 경로에 배치하고 CMD로 컨테이너가 기동할 떄 실행하게 했다. my_daemon은 컨테이너가 기동되면 실행되는 셸 스크립트다. 보통 자바나 파이썬으로 작성한 코드를 컨테이너로 만드는 경우가 많은데 이번에는 간단한 예를 위해 셸 스크립트를 사용했다. 환경 변수 INTERVAL이 없는 경우에는 3초 단위로 현재 시간과 카운트를 표준 출력(STDOUT)에 출력한다. 환경 변수 ..
· Spring
log4j(Log For JAVA)란? Java 기반 Logging 유틸리티로써 debug용 도구로 주로 사용된다. 애플리케이션에 문제 발생 시 문제의 위치를 빠르고 정확히 파악하기 위해 사용한다. 또한 성능 및 속도에 영향을 미치지 않고 편리하게 사용할 수 있다. log4j의 특징 속도 최적화 thread-safe 하다. 즉, 멀티스레드 환경에서도 안전 properties 파일과 xml 형식으로 실행 중 수정 적용 가능 5단계의 레벨의 장애를 사용(DEBUG < INFO < WARN < ERROR
beekei
'로그' 태그의 글 목록