host.docker.internal

컨테이너 내부에서 호스트를 호출해야 할 경우 예를 들어 Host에 telegraf로 statsd 서버가 떠 있는 상태에서 컨테이너 내부의 Metric를 Host로 보낼때 호스트의 IP를 알기는 어렵고 이럴때 많이 사용하는게 host.docker.internal 이다. 하지만 해당 도메인은  Mac 또는 Windows(확실하지는 않음)에서만 가능하다. Linux에서 사용하기 위해서는 –add-host 로 실행시 옵션을 주어야 한다. docker-compose.yml 에서는 아래 처럼 설정하면 된다.

Ractor Netty Connection Pool

Reactor Netty Reference Guide – https://projectreactor.io/docs/netty/snapshot/reference/index.html TCP 통신 TCP 통신의 경우 데이터를 주고 받기 위해 HandShake 과정이 필요하다. 연결 (3 way HandShake) – 데이터 전송(request/response) – 연결해제 (4 way HandShake) Keep-Alive ? http는 기본적으로 통신때마다 Connection 연결하고 끊고가 기본이다. 그러다 보니 네트워크 측면에서 손실이 많은 편이다. 웹서비스의 경우 요청이 많은데 그때 마다 위에서 설명한 HandShake를 한다면 손해가 막심(?) 할… Read More »

TcpDump Rolling command

이러저러한 이유로 패킷을 캡쳐해서 분석해야 일이 있을때 좋은 명령이다. 해당 패킷을 캡쳐하는 시기를 알 수 있으면 쉽게 캡쳐하면 되지만 언제인지 알 수 없을 경우에는 난감하다. 계속 패킷을 캡쳐하자니 용량이 너무 커지고.. 그런 걱정을 덜기위해 tcpdump해 rolling 을 할 수 있는 옵션이 있다. -i eth0 : 캡쳐할 장치 -C 100 : 한 파일당 최대 100메가 -W… Read More »

Network monitoring by process using nethogs

서비스를 하다보면 원인 모를 트래픽이 증가하는 경우가 있다. 대부분 이런 경우는 크롤링일 경우가 많은데 그렇지 않을경우 어디서 트래픽을 발생되는지 궁금할 때가 있다. 그럴때 좋은툴이 nethogs 이다. 네트워크를 사용하는 프로세스별로 송/수신 양을 보여준다. ubuntu 나 centos 경우는 패키지 매니저로 쉽게 설치 할 수 있다. 그 외에 리눅스의 경우 소스를 빌드해서 사용하면 된다. 나같은 경우는 Amazon Linux에서… Read More »

Elasticsearch Plugin Build

전체 과정 요약 elasticsearch 소스 다운로드 소스에서 plugin example 별도 복사 build.gradle 수정 및 plugin 빌드 elasticsearch 에 빌드한 플러그인 설치 테스트 1. elasticsearch source download 2. copy plugin example – rest-handler 3. edit build.gradle and build 4. elasticsearch plugin install 5. Test

Elasticsearch 7.x build via IntelliJ IDEA

Intellij 에서 elasticsearch 빌드 및 디버그 환경 구성하기. 사전 준비 IntelliJ JDK 15 or high 소스 다운로드 및 빌드 3. Intellij 에서 해당 프로젝트를 열기File -> Open -> elasticsearch 를 다운받은 폴더를 선택합니다. ( /Users/mars1/Temp/elasticsearch) 4. 빌드하기Build -> Build Project 5. 실행server프로젝트의 src/main/java/org/elasticsearch/bootstrap/Elasticsearch 의 main 클래스를 실행하면 됩니다. 하지만 그냥 실행하면 몇가지 오류를 만나게 됩니다.

Docker Logging Disk Full

어느날 서버 디스크가 full이 되었다. 원인을 찾아보니 원인은 docker container의 log파일이 17기가였다. 한 컨테이너의 로그파일이…;; docker의 기본 loggin driver는 json-file (그 외에도 local, syslog 등 여러가지가 있음.) json-file의 경우 max-size는 -1이다. 즉 무제한이다…;; 설정값 참고 : https://docs.docker.com/config/containers/logging/json-file/ 요렇게 max-size를 지정해주면 지정한 사이즈 이상 커지지 않는다. docker-compose에서 적용은