SW 개발

Graylog, Custom Index Mapping 적용하기

지단로보트 2023. 3. 15. 14:40

개요

  • 오픈 소스 오브젝트 로깅 솔루션인 Graylog는 기본적으로 적재될 로그의 각 필드 데이터 타입을 Dynamic Mapping으로 판단하여 인덱스 템플릿을 자동 생성한다. 장점은 손이 덜 가고 편리하다는 것인데, 단점으로는 문자열이 저장되어야할 필드를 숫자 타입으로 판단해버리면 로그 자체가 인덱스에 적재되지 못하고 유실될 수 있다. 운영 환경에서 로그 유실은 치명적일 수 있으므로 사전에 로그 필드의 데이터 타입을 지정하여 이러한 상황을 예방해야 한다. GraylogCustom Index Mapping를 통해 사전 데이터 타입 지정 기능을 제공한다.

Graylog Custom Index Mapping 적용 방법

  • Custom Index Mapping 적용은 Graylog가 사용하는 ElasticsearchPUT /_template/graylog-custom-mapping을 요청하면 적용된다. 방법은 아래와 같다.
# 현재 Custom Index Mapping 정보 확인
$ curl -X GET {elasticsearch-base-url}/_template/graylog-custom-mapping?pretty
{ }

# 등록할 Custom Index Mapping 파일 작성
# 문자열 타입으로 등록할 필드 정보를 담은 Custom Index Mapping 파일 작성
# foo, bar 필드를 keyword 타입으로 선언하는 예
$ nano graylog-custom-mapping.json
{
  "template": "*",
  "mappings": {
    "properties": {
      "foo": {
        "type": "keyword"
      },
      "bar": {
        "type": "keyword"
      }
    }
  }
}

# Custom Index Mapping 등록
$ curl -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' '{elasticsearch-base-url}/_template/graylog-custom-mapping?pretty'
{
  "acknowledged" : true
}

# 등록된 Custom Index Mapping 확인
{
  "graylog-custom-mapping" : {
    "order" : 0,
    "index_patterns" : [
      "*"
    ],
    "settings" : { },
    "mappings" : {
      "properties" : {
        "foo" : {
          "type" : "keyword"
        },
        "bar" : {
          "type" : "keyword"
        }
      }
    },
    "aliases" : { }
  }
}
  • Custom Index Mapping 등록을 완료했으면 마지막으로 현재 적용할 인덱스를 새로 생성해야 한다. Graylog Web Interface에서 아래 방법대로 실행한다.
Graylog Web Interface → System → Indices → [적용할 인덱스명] 클릭 → [Maintenance] 클릭 → [Rotate active write index] 클릭
  • 인덱스 로테이션 작업이 완료되어 새 인덱스가 생성되면 최종적으로 앞서 작성한 Custom Index Mapping로 정상적으로 적용되었는지 여부를 아래와 같이 확인할 수 있다.
# 특정 인덱스의 Index Mapping 정보 조회
$ curl -X GET {elasticsearch-base-url}/{index-name}/_mapping?pretty

참고 글