2.X/7. Administration Monitoring Deployment

7-3-2. Logging

drscg 2017. 9. 23. 12:03

Elasticsearch emits a number of logs, which are placed in ES_HOME/logs. The default logging level is INFOIt provides a moderate amount of information, but is designed to be rather light so that your logs are not enormous.

Elasticsearch는 ES_HOME/logs 에 많은 로그를 출력한다. 기본 로깅 수준은 INFO 이다. 그것은 적당한 양의 정보를 제공하지만, 로그가 많지 않도록 오히려 가볍게 설계되었다.

When debugging problems, particularly problems with node discovery (since this often depends on finicky network configurations), it can be helpful to bump up the logging level to DEBUG.

문제점을 디버깅하는 경우, 특히 node 탐색 문제인 경우, (이 문제는 흔히 네트워크 설정에 의존하기 때문에) 로깅 수준을 DEBUG 로 올리는 것이 도움이 된다.

You could modify the logging.yml file and restart your nodes—but that is both tedious and leads to unnecessary downtime. Instead, you can update logging levels through the cluster-settings APIthat we just learned about.

logging.yml 파일을 수정하고, node를 다시 시작 할 수 있다. 하지만, 그것은 지루하고, 불필요한 가동 중지가 일어난다. 대신에, 예전에 배웠던, cluster-settings API를 통해, 로깅 수준을 업데이트할 수 있다.

To do so, take the logger you are interested in and prepend logger. to it. You can refer to the root logger as logger._root.

이렇게 하려면, 관심있는 logger 를 가져와, 거기에 logger. 을 덧붙인다. logger._root 로 root logger를 참조할 수 있다.

Let’s turn up the discovery logging:

discovery 로깅을 바꿔보자.

PUT /_cluster/settings
{
    "transient" : {
        "logger.discovery" : "DEBUG"
    }
}

While this setting is in effect, Elasticsearch will begin to emit DEBUG-level logs for the discoverymodule.

이 설정이 효과가 있는 동안에는, Elasticsearch는 discovery 모듈에 대해 DEBUG 수준의 로그를 출력한다.

Tip

Avoid TRACE. It is extremely verbose, to the point where the logs are no longer useful.

TRACE 는 피하자. 로그는 더 이상 쓸모 없을 정도로 매우 장황하다.

Slowlogedit

There is another log called the slowlog. The purpose of this log is to catch queries and indexing requests that take over a certain threshold of time. It is useful for hunting down user-generated queries that are particularly slow.

slowlog 라는 또 다른 log가 있다. 이 로그의 목적은 특정 임계 시간 이상 소요되는 query와 색인 요청을 잡아내는 것이다. 사용자가 생성한 특별히 느린 query를 잡아내는데 유용하다.

By default, the slowlog is not enabled. It can be enabled by defining the action (query, fetch, or index), the level that you want the event logged at (WARNDEBUG, and so forth) and a time threshold.

기본적으로, slowlog는 비활성화되어 있다. action(query, fetch, index 등), 로그될 이벤트의 수준(WARNDEBUG 등), 임계 시간을 정의하여 활성화할 수 있다.

This is an index-level setting, which means it is applied to individual indices:

이것은 index 수준의 설정이다. 즉, 개별 index에 적용되어야 한다.

PUT /my_index/_settings
{
    "index.search.slowlog.threshold.query.warn" : "10s", 
    "index.search.slowlog.threshold.fetch.debug": "500ms", 
    "index.indexing.slowlog.threshold.index.info": "5s" 
}

query가 10s 보다 더 느리면, WARN 로그를 출력한다.

fetch가 500ms 보다 더 느리면, DEBUG 로그를 출력한다.

색인이 5s 이상 소요되면, INFO 로그를 출력한다.

You can also define these thresholds in your elasticsearch.yml file. Indices that do not have a threshold set will inherit whatever is configured in the static config.

이런 임계 값을 elasticsearch.yml 파일에서도 정의할 수 있다. 임계 값을 설정하지 않은 index는 정적 구성으로 구성되어 있는 값을 이어 받을 것이다.

Once the thresholds are set, you can toggle the logging level like any other logger:

임계 값이 설정되면, 다른 logger와 마찬가지로, 로깅 수준을 전환할 수 있다.

PUT /_cluster/settings
{
    "transient" : {
        "logger.index.search.slowlog" : "DEBUG", 
        "logger.index.indexing.slowlog" : "WARN" 
    }
}

검색의 slowlog는 DEBUG 수준으로 설정한다.

색인의 slowlog는 WARN 수준으로 설정한다.


'2.X > 7. Administration Monitoring Deployment' 카테고리의 다른 글

7-3. Post-Deployment  (0) 2017.09.23
7-3-1. Changing Settings Dynamically  (0) 2017.09.23
7-3-3. Indexing Performance Tips  (0) 2017.09.23
7-3-4. Delaying Shard Allocation  (0) 2017.09.23
7-3-5. Rolling Restarts  (0) 2017.09.23