SW 개발
Graylog, Custom Index Mapping 적용하기
지단로보트
2023. 3. 15. 14:40
개요
- 오픈 소스 오브젝트 로깅 솔루션인 Graylog는 기본적으로 적재될 로그의 각 필드 데이터 타입을 Dynamic Mapping으로 판단하여 인덱스 템플릿을 자동 생성한다. 장점은 손이 덜 가고 편리하다는 것인데, 단점으로는 문자열이 저장되어야할 필드를 숫자 타입으로 판단해버리면 로그 자체가 인덱스에 적재되지 못하고 유실될 수 있다. 운영 환경에서 로그 유실은 치명적일 수 있으므로 사전에 로그 필드의 데이터 타입을 지정하여 이러한 상황을 예방해야 한다. Graylog는
Custom Index Mapping
를 통해 사전 데이터 타입 지정 기능을 제공한다.
Graylog Custom Index Mapping 적용 방법
- Custom Index Mapping 적용은 Graylog가 사용하는 Elasticsearch에
PUT /_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