본문 바로가기
자빅스/Case Study

Case Study- Zabbix를 통한 TCP/UDP 포트 상태 확인

by chloefordmove 2024. 2. 28.

안녕하세요, 디무브입니다.

네트워크 및 애플리케이션의 TCP 및 UDP 연결 상태를 확인하면 데이터 전송 환경을 모니터링할 수 있습니다.
이번 포스트에서는 서버 내부의 TCP와 UDP 포트의 상태와 성능을 Zabbix로 모니터링하는 방법에 대하여 다뤄보도록 하겠습니다.

 

💻 기초 팁 - TCP와 UDP?

■ TCP와 UDP는 전송계층에서 사용되는 프로토콜입니다.
■ 전송계층은 데이터 전달을 담당합니다.
(공통점) TCP와 UDP는 모두 포트 번호를 사용하여 주소를 지정하며 헤더와 데이터에 대한 오류를 체크합니다.
(차이점) TCP는 정확성을 추구하며, UDP는 신속성을 추구합니다.

 

 

0. TCP / UDP 상태 모니터링 구조

  • TCP와 UDP 상태를 모니터링하기 위해서는 반드시 서버 내부에 Zabbix Agent가 구동 되어 있어야 합니다.
  • Passive Agent와 Active Agent 모두 사용 가능하며, 위 이미지는 Passive Agent일 경우를 기준으로 설명되어 있습니다.

 

🚩 Zabbix에서는 다음과 같은 아이템을 통하여 원하는 지표를 수집할 수 있습니다.

Item Key
Item Description
net.tcp.listen[port] 지정된 TCP 포트 번호가 대기상태(LISTEN)인지 체크. 대기상태가 아닌 경우엔 0을 리턴. 대기상태인 경우엔 1을 리턴.
net.tcp.port[<ip>,port] 지정된 포트에 TCP 접속 가능 여부를 체크. 접속할 수 없는 경우엔 0을 리턴, 접속 가능한 경우엔 1을 리턴.
net.tcp.service.perf[service,<ip>,<port>] TCP서비스의 퍼포먼스를 체크. 서비스가 다운된 경우엔 0을 리턴, 초(seconds)를 리턴한 경우엔 서비스에 접속에 걸린 시간을 리턴.
net.tcp.service[service,<ip>,<port>] 서비스 기동과 TCP 접속성 체크. 서비스가 정지되어 있는 경우엔 0을 리턴, 서비스가 기동되어 있는 경우엔 1을 리턴.
net.tcp.socket.count[<laddr>,<lport>,<raddr>,<rport>,<state>] 지정한 파라미터의 TCP Socket 개수를 정수 형태로 리턴.
net.udp.listen[port] 지정된 UDP 포트 번호가 대기상태(LISTEN)인지 체크. 대기상태가 아닌 경우엔 0을 리턴. 대기상태인 경우엔 1을 리턴.
net.udp.service.perf[service,<ip>,<port>] UDP서비스의 퍼포먼스를 체크. 서비스가 다운된 경우엔 0을 리턴, 초(seconds)를 리턴한 경우엔 서비스에 접속에 걸린 시간을 리턴.
net.udp.service[service,<ip>,<port>] 서비스 기동과 UDP 접속성 체크. 서비스가 정지되어 있는 경우엔 0을 리턴, 서비스가 기동되어 있는 경우엔 1을 리턴.
net.udp.socket.count[<laddr>,<lport>,<raddr>,<rport>,<state>] 지정한 파라미터의 UDP Socket 개수를 정수 형태로 리턴.

 

 

1-1. 애플리케이션 별 TCP 사용 포트

해당 포트는 기본 값으로 설정되어 있는 TCP 포트입니다.

 

포트 설명
20 파일 전송 프로토콜 (FTP, File Transfer Protocol) - 데이터 포트
21 파일 전송 프로토콜 (FTP, File Transfer Protocol) - 제어 포트
22 시큐어 셸 (SSH, Secure SHell) - ssh scp, sftp같은 프로토콜 및 포트 포워딩
23 텔넷 프로토콜 (Telnet Protocol) - 암호화되지 않은 텍스트 통신
25 SMTP (Simple Mail Transfer Protocol) - 이메일 전송에 사용
80 HTTP (HyperText Transfer Protocol) - 웹 페이지 전송
110 POP3 (Post Office Protocol version 3) - 전자우편 가져오기에 사용
389 LDAP (Lightweight Directory Access Protocol)
443 HTTPS - 보안 소켓 레이어 (SSL, Secure Socket Layer) 위의 HTTP (암호화 전송)

출처 : TCP/UDP의 포트 목록

 

1-2. TCP Port 상태 확인하기

TCP Port 상태를 모니터링하기 전, 서버에서 현재 TCP 소켓의 상태를 확인해야 합니다.

✔ Step 1 서버 내부의 TCP Socket 상태 확인

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      576846/sshd: /usr/s 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1273955/nginx: mast 
tcp        0      0 0.0.0.0:8086            0.0.0.0:*               LISTEN      1273955/nginx: mast 
tcp        0      0 0.0.0.0:8087            0.0.0.0:*               LISTEN      1273955/nginx: mast 
tcp        0      0 0.0.0.0:8085            0.0.0.0:*               LISTEN      1273955/nginx: mast 
tcp        0      0 0.0.0.0:8097            0.0.0.0:*               LISTEN      1273955/nginx: mast 
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1269146/zabbix_agen 
tcp        0      0 IP:10050                IP:45544                TIME_WAIT   -                   
tcp        0      0 IP:10050                IP:56118                TIME_WAIT   -                   
tcp        0      0 IP:10050                IP:45520                TIME_WAIT   -                   
tcp        0      0 IP:10050                IP:45488                TIME_WAIT   -                   
tcp        0      0 IP:10050                IP:36830                TIME_WAIT   -                   
tcp        0   3168 IP:22                   IP:8431                 ESTABLISHED 1880246/sshd: root            
tcp        0      0 IP:10050                IP:45572                TIME_WAIT   -                   
tcp6       0      0 :::22                   :::*                    LISTEN      576846/sshd: /usr/s 
tcp6       0      0 :::10050                :::*                    LISTEN      1269146/zabbix_agen

 

✔ Step 2 상위에서 생성한 아이템을 기반으로 TCP Port 관련 템플릿 생성

 

✔ Step 3 TCP 템플릿 내부에 관련 아이템 생성 및 커스터마이징

  • 위 챕터에서 생성한 아이템을 기준으로 새로운 TCP 템플릿 내부에 아이템을 생성합니다.
  • 사용 용도에 따라 해당 아이템을 기반으로 아이템을 생성하여 커스터마이징 합니다.

 

✔ Step 4 TCP Port 트리거 아이템 생성 및 커스터마이징

  • 상위 챕터에서 생성한 아이템을 기준으로 새로운 TCP 템플릿 내부에 트리거를 생성합니다.
  • 사용 용도에 따라 해당 아이템을 기반으로 트리거를 생성하여 커스터마이징 합니다.

 

✔ (옵션) TCP Port 관련 그래프 생성

  • 상위 챕터에서 생성한 아이템을 기준으로 새로운 TCP 탬플릿 내부에 그래프를 생성합니다.
  • 해당 항목은 필수가 아니며 최근 데이터에서 한눈에 모든 지표를 확인해야 할 경우에 생성합니다.

 

✔ Step 5 TCP Port 관련 지표 최근 데이터 그래프 형식으로 확인

아이템을 생성한 뒤 최근 데이터에서 지표를 그래프 / 값 (텍스트) 형태로 확인할 수 있습니다.

 

✔ Step 6 TCP Port 관련 지표 그래프 확인

해당 형식으로 확인하려면 그래프가 생성되어 있어야 합니다.

 

상위 챕터에서 그래프를 생성했다면 다음과 같이 그래프 매뉴에서 한눈에 확인할 수 있습니다.

 


 

2-1. 애플리케이션 별 UDP 사용 포트

해당 포트는 기본 값으로 설정되어 있는 UDP 포트입니다.

 

포트 설명
123 NTP (Network Time Protocol) - 시간 동기화
514 syslog 프로토콜 - 시스템 로그 작성
161 SNMP (Simple Network Management Protocol) - Agent 포트
162 SNMP - Manager 포트

출처: TCP/UDP의 포트 목록

 

2-2. UDP Port 상태 확인하기

UDP Port 상태를 모니터링하기 전, 서버에서 현재 TCP 소켓의 상태를 확인해야 합니다.

 

✔ Step 1 서버 내부에서 사용 중인 서비스들의 UDP Socket 상태 확인

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 127.0.0.1:323           0.0.0.0:*                           43127/chronyd       
udp6       0      0 ::1:323                 :::*                                43127/chronyd

 

✔ Step 2 상위에서 생성한 아이템을 기반으로 UDP Port 관련 템플릿 생성

 

✔ Step 3 UDP Port 관련 아이템 생성

  • 위 챕터에서 생성한 아이템을 기준으로 새로운 UDP 템플릿 내부에 아이템을 생성합니다.
  • 사용 용도에 따라 해당 아이템을 기반으로 아이템을 생성하여 커스터마이징 합니다.

 

✔ Step 4 UDP Port 트리거 아이템 생성

  • 상위 챕터에서 생성한 아이템을 기준으로 새로운 UDP 템플릿 내부에 트리거를 생성합니다.
  • 사용 용도에 따라 해당 아이템을 기반으로 트리거를 생성하여 커스터마이징 합니다.

 

✔ 옵션 UDP Port 관련 그래프 생성

  • 상위 챕터에서 생성한 아이템을 기준으로 새로운 UDP 탬플릿 내부에 그래프를 생성합니다.
  • 해당 항목은 필수가 아니며 최근 데이터에서 한눈에 모든 지표를 확인해야 할 경우에 생성합니다.

 

✔ Step 5 UDP Port 관련 지표 최근 데이터 그래프 형식으로 확인

아이템을 생성한 뒤 최근 데이터에서 지표를 그래프 / 값 (텍스트) 형태로 확인할 수 있습니다.

 

✔ Step 6 UDP Port 관련 지표 그래프 확인

해당 형식으로 확인하려면 그래프가 생성되어 있어야 합니다.

 

상위 챕터에서 그래프를 생성했다면 다음과 같이 그래프 매뉴에서 한눈에 확인할 수 있습니다.

 


 

지금까지 Zabbix를 활용한 네트워크 및 애플리케이션 TCP/UDP 모니터링 방법에 대하여 상세히 알아보았습니다. TCP와 UDP는 데이터 전송 환경을 책임지기 때문에 인프라 관리에 있어 중요한 부분입니다 😉 사용하고 계시는 TCP 또는 UDP 포트의 모니터링에 대한 상세한 설정이 필요하시다면 Zabbix 공식 파트너사 디무브에게 문의하세요!