Nodes Info API

Nodes Info API

1.0에서 도입

Nodes Info API는 클러스터 노드의 대부분 정적인 정보를 보여줘요. 여기에는 다음이 포함돼요.

  • 호스트 시스템 정보
  • JVM
  • 프로세서 유형
  • 노드 설정
  • 스레드 풀 설정
  • 설치된 플러그인

출처: 문서

본문

엔드포인트 (Endpoints)

GET /_nodes
GET /_nodes/{nodeId}
GET /_nodes/{metrics}
GET /_nodes/{nodeId}/{metrics}
# 또는 전체 경로 등가물
GET /_nodes/{nodeId}/info/{metrics}

경로 매개변수 (Path parameters)

다음 표는 사용 가능한 경로 매개변수예요. 모든 경로 매개변수는 선택 사항이에요.

매개변수 타입 설명
node_id String 결과를 필터링하는 데 사용하는 쉼표로 구분된 노드 ID 목록이에요. 노드 필터를 지원해요. 기본값은 _all이에요.
metrics String 응답에 포함할 메트릭 그룹의 쉼표로 구분된 목록이에요. 예: jvm,thread_pool. 기본값은 모든 메트릭이에요.

다음 표는 사용 가능한 모든 메트릭 그룹을 정리한 거예요.

메트릭 설명
settings 노드의 설정이에요. 기본 설정, 설정 파일의 사용자 지정 설정, 동적으로 업데이트된 설정이 합쳐진 것이에요.
os 버전, 프로세서 아키텍처, 사용 가능/할당된 프로세서를 포함한 호스트 운영체제의 정적 정보예요.
process 프로세스 ID를 담고 있어요.
jvm 인수를 포함해 실행 중인 JVM에 대한 상세한 정적 정보예요.
thread_pool 모든 개별 스레드 풀에 대해 설정된 옵션이에요.
transport transport 계층에 대한 대부분 정적인 정보예요.
http HTTP 계층에 대한 대부분 정적인 정보예요.
plugins 설치된 플러그인과 모듈에 대한 정보예요.
ingest ingest 파이프라인과 사용 가능한 ingest 프로세서에 대한 정보예요.
search_pipelines 노드에 설정된 검색 파이프라인에 대한 정보예요.
aggregations 사용 가능한 집계에 대한 정보예요.
indices 노드 수준에서 설정된 정적 인덱스 설정이에요.

쿼리 매개변수 (Query parameters)

요청에 다음 쿼리 매개변수를 포함할 수 있어요. 모든 쿼리 매개변수는 선택 사항이에요.

매개변수 타입 설명
flat_settings Boolean 응답의 settings 객체를 평면(flat) 형식으로 반환할지 지정해요. 기본값은 false예요.
timeout Time 노드 응답의 시간 제한을 설정해요. 기본값은 30s예요.

예시 요청 (Example request)

다음 쿼리는 클러스터 매니저 노드의 process와 transport 메트릭을 요청해요:

GET /_nodes/cluster_manager:true/process,transport

Python 클라이언트로는 이렇게 호출해요:

response = client.nodes.info(
metric = "process,transport",
node_id = "cluster_manager:true"
)

클러스터 매니저 노드만의 스레드 풀 정보를 가져오려면 다음 쿼리를 사용해요:

GET /_nodes/master:true/thread_pool

Python 클라이언트로는 이렇게 호출해요:

response = client.nodes.info(
metric = "thread_pool",
node_id = "master:true"
)

예시 응답 (Example response)

응답에는 <metrics> 요청 매개변수에 지정된 메트릭 그룹(이 경우 process와 transport)이 들어 있어요:

{
"_nodes": {
"total": 1,
"successful": 1,
"failed": 0
},
"cluster_name": "opensearch",
"nodes": {
"VC0d4RgbTM6kLDwuud2XZQ": {
"name": "node-m1-23",
"transport_address": "127.0.0.1:9300",
"host": "127.0.0.1",
"ip": "127.0.0.1",
"version": "1.3.1",
"build_type": "tar",
"build_hash": "c4c0672877bf0f787ca857c7c37b775967f93d81",
"roles": [
"data",
"ingest",
"master",
"remote_cluster_client"
],
"attributes": {
"shard_indexing_pressure_enabled": "true"
},
"process" : {
"refresh_interval_in_millis": 1000,
"id": 44584,
"mlockall": false
},
"transport": {
"bound_address": [
"[::1]:9300",
"127.0.0.1:9300"
],
"publish_address": "127.0.0.1:9300",
"profiles": { }
}
}
}
}

응답 본문 필드 (Response body fields)

응답에는 <nodeId> 요청 매개변수와 일치하는 모든 노드의 기본 노드 식별 정보와 빌드 정보가 들어 있어요. 다음 표는 응답 필드를 정리한 거예요.

필드 설명
name 노드의 이름이에요.
transport_address 노드의 transport 주소예요.
host 노드의 호스트 주소예요.
ip 노드의 호스트 IP 주소예요.
version 노드의 OpenSearch 버전이에요.
build_type rpm, docker, tar 같은 빌드 유형이에요.
build_hash 빌드의 git 커밋 해시예요.
total_indexing_buffer 새로 색인된 문서를 담는 데 사용하는 최대 힙 크기(바이트)예요. 이 힙 크기를 넘으면 문서가 디스크에 기록돼요.
roles 노드의 역할 목록이에요.
attributes 노드의 속성이에요.
os 이름, 버전, 아키텍처, 새로고침 간격, 사용 가능·할당된 프로세서 수를 포함한 운영체제 정보예요.
process PID, 새로고침 간격, 프로세스 주소 공간이 메모리에 성공적으로 잠겼는지 지정하는 mlockall을 포함해 현재 실행 중인 프로세스 정보예요.
jvm PID, 버전, 메모리 정보, 가비지 컬렉터 정보, 인수를 포함한 JVM 정보예요.
thread_pool 스레드 풀 정보예요.
transport 바인드 주소, publish 주소, 프로파일을 포함한 transport 주소 정보예요.
http 바인드 주소, publish 주소, 최대 콘텐츠 길이(바이트)를 포함한 HTTP 주소 정보예요.
plugins 이름, 버전, OpenSearch 버전, Java 버전, 설명, 클래스 이름, 사용자 지정 폴더 이름, 확장 플러그인 목록, 네이티브 컨트롤러 프로세스 보유 여부를 지정하는 has_native_controller를 포함한 설치된 플러그인 정보예요.
modules 이름, 버전, OpenSearch 버전, Java 버전, 설명, 클래스 이름, 사용자 지정 폴더 이름, 확장 플러그인 목록, 네이티브 컨트롤러 프로세스 보유 여부를 지정하는 has_native_controller를 포함한 모듈 정보예요. 모듈은 OpenSearch에 자동으로 로드되지만 플러그인은 수동으로 설치해야 한다는 점에서 플러그인과 달라요.
ingest ingest 파이프라인과 프로세서 정보예요.
search_pipelines 노드에 설정된 검색 파이프라인 정보예요.
aggregations 사용 가능한 집계 유형 정보예요.

필요한 권한 (Required permissions)

Security 플러그인을 사용한다면 적절한 권한이 있는지 확인해야 해요: cluster:monitor/nodes/info.

더 알아보기