If you work from the command line often, the cat
APIs will be helpful to you. Named after the linux cat
command, these APIs are designed to work like *nix command-line tools.
command line에서 작업하는 경우, cat
API는 매우 유용하다. linux의 cat
명령어에서 이름을 딴, 이 API는 *nix의 command line tool처럼 동작하도록 설계되었다.
They provide statistics that are identical to all the previously discussed APIs (Health, node-stats
, and so forth), but present the output in tabular form instead of JSON. This is very convenient for a system administrator, and you just want to glance over your cluster or find nodes with high memory usage.
이전에 언급했던 API(health, node-stats
등) 모두와 동일한 통계를 제공한다. 하지만, JSON 대신 표 형식으로 출력을 나타낸다. 이것은 시스템 관리자에게, cluster를 한 눈에 살펴보거나, 메모리를 많이 사용하는 node를 찾을 때 매우 편리하다.
Executing a plain GET
against the cat
endpoint will show you all available APIs:
GET
의 마지막에 cat
을 넣어 실행하면, 이용 가능한 모든 API를 보여준다.
GET /_cat =^.^= /_cat/allocation /_cat/shards /_cat/shards/{index} /_cat/master /_cat/nodes /_cat/indices /_cat/indices/{index} /_cat/segments /_cat/segments/{index} /_cat/count /_cat/count/{index} /_cat/recovery /_cat/recovery/{index} /_cat/health /_cat/pending_tasks /_cat/aliases /_cat/aliases/{alias} /_cat/thread_pool /_cat/plugins /_cat/fielddata /_cat/fielddata/{fields}
Many of these APIs should look familiar to you (and yes, that’s a cat at the top :) ). Let’s take a look at the Cat Health API:
이들 API 중 대부분은 여러분에게 친숙할 것이다. cat health API를 살펴보자.
GET /_cat/health 1408723713 12:08:33 elasticsearch_zach yellow 1 1 114 114 0 0 114
The first thing you’ll notice is that the response is plain text in tabular form, not JSON. The second thing you’ll notice is that there are no column headers enabled by default. This is designed to emulate *nix tools, since it is assumed that once you become familiar with the output, you no longer want to see the headers.
첫 번째는 response가 JSON이 아니라 표 형식에 일반 텍스트이다. 두 번째는 기본적으로 활성화된 칼럼 header가 없다. header가 없는 출력에 익숙하다고 가정했기 때문에, *nix tool을 모방하여 설계되었다.
To enable headers, add the ?v
parameter:
header를 활성화하려면, ?v
매개변수를 추가하자.
GET /_cat/health?v epoch time cluster status node.total node.data shards pri relo init 1408[..] 12[..] el[..] 1 1 114 114 0 0 114 unassign
Ah, much better. We now see the timestamp, cluster name, status, the number of nodes in the cluster, and more—all the same information as the cluster-health
API.
훨신 낫다. 이제, timestamp, cluster name, status, cluster의 node 수 등을 볼 수 있다. cluster-health
API와 모두 동일한 정보이다.
Let’s look at node-stats
in the cat
API:
cat
API에서 node-stats
을 살펴보자.
GET /_cat/nodes?v host ip heap.percent ram.percent load node.role master name zacharys-air 192.168.1.131 45 72 1.85 d * Zach
We see some stats about the nodes in our cluster, but the output is basic compared to the full node-stats
output. You can include many additional metrics, but rather than consulting the documentation, let’s just ask the cat
API what is available.
cluster의 node에 대한 몇 가지 통계를 볼 수 있지만, 전체 node-stats
출력과 비교하면, 기본적인 것이다. 거기에 많은 통계를 추가할 수 있는데, 참조 문서를 참고하는 것보다, 이용할 수 있는 API를 cat
에게 물어보자.
You can do this by adding ?help
to any API:
특정 API에 ?help
를 추가하면 된다.
GET /_cat/nodes?help id | id,nodeId | unique node id pid | p | process id host | h | host name ip | i | ip address port | po | bound transport port version | v | es version build | b | es build hash jdk | j | jdk version disk.avail | d,disk,diskAvail | available disk space heap.percent | hp,heapPercent | used heap ratio heap.max | hm,heapMax | max configured heap ram.percent | rp,ramPercent | used machine memory ratio ram.max | rm,ramMax | total machine memory load | l | most recent load avg uptime | u | node uptime node.role | r,role,dc,nodeRole | d:data node, c:client node master | m | m:master-eligible, *:current master ... ...
(Note that the output has been truncated for brevity).
The first column shows the full name, the second column shows the short name, and the third column offers a brief description about the parameter. Now that we know some column names, we can ask for those explicitly by using the ?h
parameter:
첫 번째 칼럼은 full name 을, 두 번째는 short name 을, 그리고 세 번째는 매개변수에 대한 간단한 설명을 제공한다. 이제 몇 개의 칼럼 이름을 알았고, ?h
매개변수를 사용하여, 명시적으로 request할 수 있다.
GET /_cat/nodes?v&h=ip,port,heapPercent,heapMax ip port heapPercent heapMax 192.168.1.131 9300 53 990.7mb
Because the cat
API tries to behave like *nix utilities, you can pipe the output to other tools such as sort
grep
or awk
. For example, we can find the largest index in our cluster by using the following:
cat
API는 *nix 유틸리티처럼 동작하려 하기 때문에, sort
, grep
, awk
처럼, 다른 tool로 출력을 보낼 수 있다. 예를 들어, 아래처럼 사용하여, cluster에서 가장 큰 index를 찾을 수 있다.
% curl 'localhost:9200/_cat/indices?bytes=b' | sort -rnk8 yellow test_names 5 1 3476004 0 376324705 376324705 yellow .marvel-2014.08.19 1 1 263878 0 160777194 160777194 yellow .marvel-2014.08.15 1 1 234482 0 143020770 143020770 yellow .marvel-2014.08.09 1 1 222532 0 138177271 138177271 yellow .marvel-2014.08.18 1 1 225921 0 138116185 138116185 yellow .marvel-2014.07.26 1 1 173423 0 132031505 132031505 yellow .marvel-2014.08.21 1 1 219857 0 128414798 128414798 yellow .marvel-2014.07.27 1 1 75202 0 56320862 56320862 yellow wavelet 5 1 5979 0 54815185 54815185 yellow .marvel-2014.07.28 1 1 57483 0 43006141 43006141 yellow .marvel-2014.07.21 1 1 31134 0 27558507 27558507 yellow .marvel-2014.08.01 1 1 41100 0 27000476 27000476 yellow kibana-int 5 1 2 0 17791 17791 yellow t 5 1 7 0 15280 15280 yellow website 5 1 12 0 12631 12631 yellow agg_analysis 5 1 5 0 5804 5804 yellow v2 5 1 2 0 5410 5410 yellow v1 5 1 2 0 5367 5367 yellow bank 1 1 16 0 4303 4303 yellow v 5 1 1 0 2954 2954 yellow p 5 1 2 0 2939 2939 yellow b0001_072320141238 5 1 1 0 2923 2923 yellow ipaddr 5 1 1 0 2917 2917 yellow v2a 5 1 1 0 2895 2895 yellow movies 5 1 1 0 2738 2738 yellow cars 5 1 0 0 1249 1249 yellow wavelet2 5 1 0 0 615 615
By adding ?bytes=b
, we disable the human-readable formatting on numbers and force them to be listed as bytes. This output is then piped into sort
so that our indices are ranked according to size (the eighth column).
?bytes=b
를 추가하여, 숫자를 읽기 쉬운 형식으로 표시하는 것을 비활성화하고, 강제로 byte로 표시한다. 그 다음에, index를 크기에 따라 정렬(8번째 칼럼)하기 위해, 이 출력은 sort
로 전달된다.
Unfortunately, you’ll notice that the Marvel indices are clogging up the results, and we don’t really care about those indices right now. Let’s pipe the output through grep
and remove anything mentioning Marvel:
불행히도, marvel indices가 결과를 채우고 있다. 지금은 그 indices에 대해 관심이 없다. grep
으로 출력을 보내, marvel이 언급된 모든 것을 제거하자.
% curl 'localhost:9200/_cat/indices?bytes=b' | sort -rnk8 | grep -v marvel yellow test_names 5 1 3476004 0 376324705 376324705 yellow wavelet 5 1 5979 0 54815185 54815185 yellow kibana-int 5 1 2 0 17791 17791 yellow t 5 1 7 0 15280 15280 yellow website 5 1 12 0 12631 12631 yellow agg_analysis 5 1 5 0 5804 5804 yellow v2 5 1 2 0 5410 5410 yellow v1 5 1 2 0 5367 5367 yellow bank 1 1 16 0 4303 4303 yellow v 5 1 1 0 2954 2954 yellow p 5 1 2 0 2939 2939 yellow b0001_072320141238 5 1 1 0 2923 2923 yellow ipaddr 5 1 1 0 2917 2917 yellow v2a 5 1 1 0 2895 2895 yellow movies 5 1 1 0 2738 2738 yellow cars 5 1 0 0 1249 1249 yellow wavelet2 5 1 0 0 615 615
Voila! After piping through grep
(with -v
to invert the matches), we get a sorted list of indices without Marvel cluttering it up.
grep
으로 보낸(-v
는 일치하지 않는 것을 의미) 후에, marvel이 제거된 index의 정렬된 목록을 얻었다.
This is just a simple example of the flexibility of cat
at the command line. Once you get used to using cat
, you’ll see it like any other *nix tool and start going crazy with piping, sorting, and grepping. If you are a system admin and spend any time SSH’d into boxes, definitely spend some time getting familiar with the cat
API.
이것은 command line에서 cat
의 유연성에 대한 간단한 예제이다. cat
사용에 익숙해지면, 그것을 *nix tool처럼 보게 되고, pipe, sort, grep와 함께 사용하게 될 것이다. 관리자이고, ssh daemon과 많은 시간을 보낸다면, 확실히 cat
API에 익숙해질 필요가 있다.
'2.X > 7. Administration Monitoring Deployment' 카테고리의 다른 글
7-1-5. Index Stats (0) | 2017.09.23 |
---|---|
7-1-6. Pending Tasks (0) | 2017.09.23 |
7-2. Production Deployment (0) | 2017.09.23 |
7-2-1. Hardware (0) | 2017.09.23 |
7-2-2. Java Virtual Machine (0) | 2017.09.23 |