Do Not Think!!!

Posted
Filed under 글로 기록하기
로그로 남기면 좋은 것들

1.6. Log Domains

로그를 남기는 이유는 몇가지로 분류될수 있습니다.

1.6.1. 개발 로그(Development Log)

개발자가 디버깅 및 흐름 추적을 위해 기록하는 내용입니다.보통 debug, trace레벨로 기록합니다.

1.6.2. 운영 로그(Maintenance Log)

운영에 관련된 로그입니다. 디스크가 꽉 찼거나, 인터페이싱 과정에서 타입아웃이 발생했거나 하는등 운영을 모니터링하기 위한 용도의 로그입니다. 보통 WARNING이나 ERROR로 기록됩니다.

1.6.3. 비지니스 로그(Business log)

비지니스적으로 의미가 있고 추후 추적하기 위한 로그입니다. 장바구니 상품추가, 로그인, 결제등이 대표적입니다. 보통 INFO로 기록합니다.

1.6.4. 감사 로그(Audit log)

감사 로그는 보안 관련 시간순 기록, 기록 집합 및 / 또는 대상 및 기록 데이터 소스입니다. 특정 작업, 절차 또는 기록에 언제든지 영향을 미친 활동 순서에 대한 증빙 자료를 제공하기 위해 기록됩니다. 보통 INFO이지만 운영자가 수정가능하지 않는 곳에 저장합니다.

1.7. 로그로 남기면 좋은 것들

  • 중요한 기동관련 설정

  • 에러

  • 경고

  • DB에 저장해야 하는 변경된 데이터

  • 주요 시스템간 요청과 응답

  • 중요한 상태 변화

  • 사용자 Interaction

  • 실패할 가능성이 있는 호출

  • 특정 상태를 기다리는데 시간이 걸릴때

  • 오래 걸리는 작업에 대해 주기적으로 진행상태 기록

  • 중요한 로직 분기점과 그 분기로 이끈 상태

  • 고수준 함수를 처리하는 스텝이나 이벤트에 대한 요약 ( 저수준 복잡한 프로세스의 매 스텝마다 로그를 남기는것은 피할것)

1.8. 로그로 남기지 말것

  • 함수 진입. 중요한 함수에 대해서만 기록할것. 또는 디버그 레벨로만 기록할것

  • 반복문 안의 데이터. 많은 반복을 가지는 데이터를 기록하지 말것. 작은 반복은 OK. 큰 반복에 대해서는 주기적으로 요약 형태로 기록

  • 큰 메시지나 파일 내용을 로그로 기록하지 말것. 디버깅을 위해 일부만 기록하거나 요약만 기록할것

  • 인자한 에러. 실제로는 오류가 아닌 오류. 읽는 사람을 혼란스럽게 할수 있음. 오류 처리가 정상 실행 경로의 일부일때 발생함

  • 반복적 에러: 동일하거나 유사한 로그를 반복적으로 기록하지 말것. 로그를 에러로 가득채우게 되며 실제 오류를 숨기게 됨. 에러 타입의 빈도는 로그 모니터링에 중요함.


출처 : https://narusas.github.io/2017/11/14/logging.html
Posted
Filed under 01010101
http://deepoove.com/swagger-diff/

이전 버전의 API 와 신규 버전의 API 를 비교하여 변경 내용을 html 파일로 출력
$ java -jar swagger-diff.jar \
-old http://petstore.swagger.io/v2/swagger.json \
-new http://petstore.swagger.io/v2/swagger.json \
-v 2.0 \
-output-mode html > diff.html


Posted
Filed under 01010101

운영 상태

nginx + spring boot application


에러 증상

실제 spring boot application 실행 완료후 브라우저 접속하면 무한 대기상태


에러 로그

SessionIdGeneratorBase        : Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [xxx,xxx] milliseconds


에러 해결

spring boot application 실행 옵션 추가
-Djava.security.egd=file:/dev/./urandom
Posted
Filed under 01010101

운용 환경

nginx + spring boot embedded tomcat
spring security login page

현상

다른 페이지는 접속이 잘 되지만 로그인이 필요한 화면은 한번에 접속이 안되는 현상

해결

nginx 설정
proxy_set_header Connection "";
proxy_pass http://localhost:5000;


참고

https://stackoverflow.com/questions/24453388/nginx-reverse-proxy-causing-504-gateway-timeout#36589120
https://yckwon2nd.blogspot.com/2018/06/nginx-http-proxy-protocol-http-502-case.html

Posted
Filed under 01010101

MariaDB 암호화


참고문서: Data at Rest Encryption

키 생성

$ openssl enc -aes-256-cbc -P -md sha1
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
salt=AB748EBD04D3F18C
key=D8ED4A206B8A8FFD56072AA4AF3560590EE960E9EFE6F916A0B544FE037DBD48
iv =B8E1FCF32932F1DDE85565032D505DC


키 파일 생성

$ vi keys.txt
1;B8E1FCF32932F1DDE85565032D505DC4;D8ED4A206B8A8FFD56072AA4AF3560590EE960E9EFE6F916A0B544FE037DBD48


암호화 플러그인 설치

$ vi my.cnf
plugin-load-add = file_key_management.so
file-key-management-filename = keys.txt


MariaDB 재시작



테이블 변경

MariaDB> alter table tests encrypted=yes encryption_key_id=1;

데이터 확인

$ vi test.ibd
암호화 전/후 비교


Posted
Filed under 01010101
깔당
https://www.bbbtech.com/ggaldang

매일 밤 10시 대결 결과 처리하는 로직

현상
사용자수 808명 처리시간 24s 에서
사용자수 2890명 처리시간 164s 로
사용자수 대비 더 큰 폭으로 처리시간 증가

1차 개선
사용자수 2966명 처리시간 54s
- entity 하나씩 저장하던 로직을 200개씩 모아서 저장하도록 변경
- 모든 entity 삭제하는 로직을 커스텀 쿼리로 변경

2차 개선
사용자수 4365명 처리시간 23s
- AWS RDS 인스턴스 타입 변경
- t2.medium -> m4.large
- t2.medium 타입이 평소엔 괜찮지만 쿼리가 한번에 몰리는 경우 병목 현상 발생

3차 개선 예정
- bulk insert query

Posted
Filed under 01010101

업데이트

$ sudo apt update ; sudo apt upgrade -y


zsh

$ sudo apt install zsh
$ curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
$ sudo chsh -s $(which zsh) ubuntu


java (spring boot application 실행을 위해)

$ sudo apt install openjdk-8-jdk


nginx (웹서버 및 SSL 적용을 위해)

nginx 설치
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:nginx/stable
$ sudo apt-get update
$ sudo apt-get install nginx

nginx 설정

ssl 설정

badbot blocker
https://github.com/mariusv/nginx-badbot-blocker/tree/master/VERSION_2