sentry-netstat
원격 센트리에서 네트워크 연결 목록을 조회합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 관리자 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 지원 |
| 분산 실행 | 미지원 |
문법
옵션
timeout=INT- 초 단위 RPC 타임아웃. 1 이상 600 이하의 값을 지정할 수 있습니다. (기본값:
30)
입력 필드
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| guid | 문자열 | 필수 | 센트리 고유 식별자 |
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| guid | 문자열 | 센트리 고유 식별자 |
| pid | 32비트 정수 | 프로세스 ID. 운영체제별 값은 아래 표 참고 |
| protocol | 문자열 | 프로토콜(tcp, tcp6, udp, udp6) |
| local_ip | IP 주소 | 로컬 IP 주소 |
| local_port | 32비트 정수 | 로컬 포트 번호 |
| remote_ip | IP 주소 | 원격 IP 주소. UDP 항목에는 없음 |
| remote_port | 32비트 정수 | 원격 포트 번호. UDP 항목에는 없음 |
| state | 문자열 | 연결 상태. 운영체제별 값은 아래 표 참고 |
| _error | 문자열 | 오류 발생 시 원본 레코드에 추가되는 오류 메시지 |
state와 pid 필드의 값은 센트리가 설치된 운영체제에 따라 다음과 같이 다릅니다.
| 운영체제 | state | pid |
|---|---|---|
| 리눅스 | TCP 항목은 ESTABLISHED, SYNSENT, SYNRECV, FINWAIT1, FINWAIT2, TIMEWAIT, CLOSE, CLOSEWAIT, LASTACK, LISTEN, CLOSING, UNKNOWN 중 하나이고, UDP 항목은 항상 LISTEN | lsof 명령 결과에서 찾은 프로세스 ID. 찾지 못하면 0 |
| 윈도우 | TCP 항목은 CLOSED, LISTEN, SYNSENT, SYNRECEIVED, ESTABLISHED, FINWAIT1, FINWAIT2, CLOSEWAIT, CLOSING, LASTACK, TIMEWAIT, DELETETCB, UNKNOWN 중 하나이고, UDP 항목은 항상 LISTEN | 소켓을 소유한 프로세스 ID |
| AIX, HP-UX | TCP 항목은 netstat -na 명령 출력의 상태 값(예: LISTEN, ESTABLISHED)을 그대로 할당하며, 상태가 CLOSED인 연결은 출력하지 않음. UDP 항목은 null | 출력하지 않음 |
| Solaris | netstat -na 명령 출력의 State 열 값(예: TCP 항목은 LISTEN, IDLE, ESTABLISHED, UDP 항목은 Idle, Unbound)을 그대로 할당 | 출력하지 않음 |
AIX·HP-UX·Solaris 센트리는 netstat -na 명령 출력의 주소가 *이면 0.0.0.0(IPv6 항목은 ::)을, 포트가 *이면 null을 할당합니다.
리눅스 센트리는 lsof 명령으로 소켓을 가진 프로세스를 찾습니다. 센트리 호스트에 lsof 패키지가 없으면 pid가 모두 0이고, lsof 패키지가 있어도 센트리 실행 계정이 접근할 수 없는 다른 계정의 프로세스가 가진 소켓은 pid가 0입니다. 리눅스 센트리 호스트에 필요한 패키지는 필수 패키지 설치를 참고하세요.
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 23100 | 센트리 RPC 호출 권한이 없습니다. | 관리자 권한이 없는 사용자가 명령어를 실행한 경우 |
| 23101 | 유효하지 않은 센트리 RPC 타임아웃 옵션 값입니다. 1부터 600 사이의 값을 사용하세요. | timeout 옵션 값이 정수가 아니거나 1~600 범위를 벗어난 경우 |
런타임 오류
_error 필드를 통해 오류 내용을 반환합니다.
| 오류 메시지 | 설명 |
|---|---|
| guid is null | 입력 레코드의 guid 필드 값이 null인 경우 |
| guid should be string | 입력 레코드의 guid 필드 값이 문자열이 아닌 경우 |
| guid should be non empty string | 입력 레코드의 guid 필드 값이 빈 문자열인 경우 |
| not connected | 센트리가 접속된 상태가 아닌 경우 |
| timeout | RPC 요청 타임아웃 시간을 초과한 경우 |
| disconnected | RPC 요청을 보낼 때 센트리 연결이 이미 끊어져 있는 경우 |
위에 정의된 오류 메시지 이외에 센트리가 설치된 시스템 상태에 따라 다른 RPC 예외 메시지가 반환될 수 있습니다.
설명
sentry-netstat 명령어는 입력 레코드의 guid 필드를 읽어 해당 센트리에 비동기 RPC 메시지를 전송하고, 네트워크 연결 목록을 조회합니다. TCP, TCP6, UDP, UDP6 프로토콜의 연결 정보를 모두 반환하며, 각 연결 정보에 protocol 필드를 추가하여 프로토콜 유형을 구분합니다.
이 명령어는 센트리의 RPC 응답 메시지를 수신하는 순서대로 결과를 반환하기 때문에 출력 레코드의 순서는 입력 레코드의 순서와 다를 수 있습니다.
비동기 RPC 요청 대기열의 최대 길이는 기본값 100이며, 로그프레소 환경 변수 logpresso.core.sentry_rpc_parallel로 조정할 수 있습니다.
클러스터 환경에서 모든 수집 노드의 결과를 한 번에 조회하려면 sonar-sentry-netstat 명령어를 사용하세요.
사용 예
-
모든 센트리의 네트워크 연결 목록 조회
sentry | fields guid | sentry-netstat -
연결 대기(LISTEN) 상태인 TCP 소켓 조회
sentry | fields guid | sentry-netstat | search protocol == "tcp*" and state == "LISTEN"UDP 항목의
state값은 센트리 운영체제마다 다르므로protocol조건으로 TCP 항목만 고릅니다. -
타임아웃을 60초로 설정하여 조회
sentry | fields guid | sentry-netstat timeout=60
변경 이력
sentry-netstat 명령어는 소나 4.0 이전 버전부터 제공되었습니다.