개요 일반적으로 NGINX의 access_log, error_log는 라인 단위의 텍스트 형태로 출력한다. 오픈 소스 오브젝트 로깅 솔루션인 Graylog을 이용하여 해당 로그를 적재하면 오브젝트 단위로 검색이 용이하여 장애 발생시 문제 파악이 수월해진다. 이번 글에서는 Syslog UDP의 형태로 NGINX의 로그를 Graylog로 실시간 전송하는 방법을 정리하였다. NGNIX Syslog Content Pack 설치 개인 유저인 scriptingislife가 제작한 NGNIX Syslog Content Pack을 아래와 같이 설치한다. 설치가 완료되면 12401번 UDP 포트를 리스닝하는 Input가 자동 생성된다. Graylog Web Interface → System → Content Packs ..
개요 API를 운영하다보면 가장 흔하게 발생하는 이슈가 아주 짧은 찰나에, 동일한 API 요청이 거의 동시에 들어오는 것이다. 가장 일반적인 원인은 대개 엔드 유저가 브라우저 상에서 특정 버튼을 아주 빠르게 연속으로 클릭하는 것이고, 크리티컬하게는 특정 엔티티의 상태 변화를 유발하는 아주 미세한 차이의 Race Condition이 발생하는 경우도 있다. API는 이런 상황에 대비하여 동일 요청에 대해 중복 실행을 방지하는 로직으로 대응할 필요가 있다. 이번 글에서는 Spring Boot 프로젝트에서 Redis를 이용한 중복 실행 방지 로직을 구현하고 사용하는 예를 설명하고자 한다. 운영체제 환경 변수 추가 Redis 연결을 위한 환경 변수를 아래와 같이 추가한다. (상황에 맞게 application.ya..
개요 오픈 소스 오브젝트 로깅 솔루션인 Graylog는 기본적으로 적재될 로그의 각 필드 데이터 타입을 Dynamic Mapping으로 판단하여 인덱스 템플릿을 자동 생성한다. 장점은 손이 덜 가고 편리하다는 것인데, 단점으로는 문자열이 저장되어야할 필드를 숫자 타입으로 판단해버리면 로그 자체가 인덱스에 적재되지 못하고 유실될 수 있다. 운영 환경에서 로그 유실은 치명적일 수 있으므로 사전에 로그 필드의 데이터 타입을 지정하여 이러한 상황을 예방해야 한다. Graylog는 Custom Index Mapping를 통해 사전 데이터 타입 지정 기능을 제공한다. Graylog Custom Index Mapping 적용 방법 Custom Index Mapping 적용은 Graylog가 사용하는 Elasticse..
개요 클라이언트-서버 관계에서 파일 업로드 구현시 파일의 최종 저장 위치가 Amazon S3일 경우, 서버는 클라이언트에게 제한된 시간을 가지는 업로드 전용의 Presigned URL을 제공하여 파일 업로드 처리를 서버가 직접 부담하지 않고 S3에게 전가할 수 있다. 이를 통해 서버 입장에서는 보안과 서버 자원 절약이라는 2마리 토끼를 모두 잡을 수 있다. 한가지 이슈는 Presigned URL로 업로드 가능한 최대 파일 크기가 5GB로 이 것을 초과하는 대용량 파일은 업로드가 불가능하다. AWS가 권장하는 해결책은 Multipart 기능으로 원본 대용량 파일을 복수개의 작은 단위로 쪼개어 업로드하는 것이다. 이번 글에서는 Spring Boot에서 Amazon S3의 Multipart 기능을 이용하여 클..
- Total
- Today
- Yesterday
- jsp
- 구동계
- Eclipse
- Docker
- Kendo UI Web Grid
- Spring Boot
- bootstrap
- maven
- 자전거
- CentOS
- 로드 바이크
- kotlin
- Tomcat
- DynamoDB
- Kendo UI
- jstl
- 로드바이크
- java
- spring
- MySQL
- chrome
- JavaScript
- jpa
- Spring MVC 3
- JHipster
- 알뜰폰
- 태그를 입력해 주세요.
- graylog
- node.js
- 평속
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |