본문 바로가기
Engineering/OS -Linux, Windows, EXSi

linux + docker 환경에서 netstat 로 ESTABLISHED socket 조회하기

by 알탱2 2022. 1. 24.
반응형

금일 팀 멤버분이 docker image를 통해 검증 환경을 구성하고, Application -> RabbitMQ로 socket connection 핸들링하는 기능을 확인해보려고 하였다. 기존에 이런 network socket 확인을 하기 위해서 netstat -anp 명령어를 사용하고 있었는데, ESTABLISHED socket 조회가 되지 않는다고 하여 자료 검색을 시작하게 되었다.
** RabbitMQ 또한 docker image를 통해 docker container로 실행하였으며, 기본 접속 port를 5672 로 설정하였다.


기존에 LISTEN 또는 ESTABLISHED 상태의 socket을 검색하던 명령어는 아래와 같다.
** 기존에는 주로 CentOS 6 OS를 주로 사용하였고, 최근에는 CentOS7 과 Ubuntu 20.04 버전 OS를 많이 사용하고 있다.
** 아래 테스트 환경은 CentOS 7.6 , Ubuntu 20.04 버전이다.
** 각 환경에 환경 구성은 다를 수 있으나, 기본적으로 RabbitMQ에 ESTABLISHED 상태의 socket이 1개 이상 존재하는 상황이다.

$ netstat -anp | grep 5672

CentOS 7.6 에서의 결과 :

Ubuntu 20.04 에서의 결과 :


-> Ubuntu 20.04 환경에서는 docker-proxy 에서 ESTABLISHED 상태의 socket 정보를 포함하여 간접적(?) 확인은 가능하지만 CentOS 7.6 환경에서는 LISTEN 상태만 조회되는 결과가 발생하였다!!


관련하여 조회를 하다보니 아래 2가지 내용을 확인할 수 있었다.

(1) CentOS 7.x 에서는 netstat command가 deprecated 되어 ss로 대체 되었음

netstat 에서 지원되던 기능이 ss 명령어(옵션도 거의 비슷)에서 지원이 된다고 하여 ss로 조회를 시도하였으나 결과는 크게 달라지지 않았다. 다만 netstat 보다는 ss에 익숙해져야겠다 하는 생각만 하고 넘어가 본다.

$ ss -anp | grep 5672


** deprecated command 에 대한 대체 command 정보 참고 링크 : https://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/#netstat

Deprecated Linux networking commands and their replacements

In my article detailing the command line utilities available for configuring and troubleshooting network properties on Windows and Linux, I mentioned some Linux tools that, while still included and…

dougvitale.wordpress.com


(2) docker container 안에서 LISTEN 하고 있는 application에 대한 ESTABLISHED socket 목록은 docker container 안에서 조회해야 함

어찌 생각하면 당연한(?) 내용이겠지만... docker-proxy를 통해 host OS에서도 ESTABLISHED socket 목록이 당연히 조회가 될 것이라 생각하고 있었기 때문에 애꿎은 application만 구현을 잘못한게 아닐까 잠시 의심을 했었더랬다;;
아래 명령어를 통해 docker container 안에서 ESTABLISHED 상태의 socket을 조회해 보았더니 원하는 결과를 얻을 수 있었다.

** 아래 명령어에서 "rabbitmq"는 필자의 테스트 환경에서 rabbitmq container의 name에 해당한다. container name이 다른 경우 해당 이름을 넣고 실행하자.

docker exec rabbitmq netstat -anp
docker exec rabbitmq netstat -anp 결과




** 한정된 시간안에 빠르게 확인해본 내용이라 포스트 내용에 틀린 내용이나 다른 조회 방법을 아시는 분이 계시면 댓글로 알려주시면 감사하겠습니다!! ^^

반응형

댓글