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.