Table of Contents
ElasticSearch를 로그 분석용으로 사용할 때 인덱스의 mapping
은 template
을 사용해서 생성되도록 설정하면 편리하다.
로그 분석용으로 ElasticSearch 를 사용하면 주로 인덱스는 daily/weekly/monthly 중에 하나로 구성하는게 일반적이다. 동일한 유형의 인덱스를 계속해서 생성하게 되는데, 예를 들자면 nginx log의 인덱스를 다음과 같이 생성한다고 해보자.
- nginx-access-log-2018.06.20
- nginx-access-log-2018.06.21
- nginx-access-log-2018.06.22
- nginx-access-log-2018.06.23
- …
위와 같은 인덱스를 자동으로 생성할 때 사용 할 mapping
을 미리 지정할 수 있는데 이 기능이 바로 template
이다.
템플릿 생성하기
다음은 nginx-access-log
라는 템플릿을 생성하는 것으로, 인덱스가 nginx-access-*
에 해당하는 패턴이라면, 지정된 mapping
으로 인덱스를 생성한다.
## nginx-access-log 템플릿 생성
curl -X "PUT" "http://my-elasticsearch-server-host:9200/_template/nginx-access-log" \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"index_patterns": [
"nginx-access-*"
],
"mappings": {
"log": { // type name
"properties": {
"ip": {
"type": "text"
},
"host": {
"type": "keyword"
},
"uri": {
"type": "text"
},
"datetime": {
"type": "date"
},
"@timestamp": {
"type": "date"
}
}
}
........
}
}'
setting
설정하기
mapping
뿐만 아니라 setting
도 지정할 수 있다.
curl -X "PUT" "http://my-elasticsearch-server-host:9200/_template/new-template-name" \
-d $'{
"index_patterns": [
"nginx-access-*"
],
"settings": { // setting
"number_of_shards": 1
},
"mappings": {
"type1": {
"properties": {
"host_name": {
"type": "keyword"
},
"created_at": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z YYYY"
}
}
}
}
}'
여러개의 패턴 지정하기
인덱스 패턴을 여러개를 지정하고자 할 때는 배열 안에 계속 추가하면 된다.
curl -X "PUT" "http://my-elasticsearch-server-host:9200/_template/new-template-name" \
-d $'{
"index_patterns": [
"pattern1*",
"pattern2*",
"pattern3*",
"pattern4*"
],
"settings": { // setting
"number_of_shards": 1
},
"mappings": {
"type1": {
"properties": {
"host_name": {
"type": "keyword"
},
"created_at": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z YYYY"
}
}
}
}
}'
참고
comments powered by Disqus
FEATURED TAGS
accesscontrol
adaptive-growth
alpine-linux
ansible
ansible-tower
apache2.4
architecture
argocd
asgi
aws
awx
backoffice
beautiful-goodbye
begining-docker
benchmark
blockhound
blocking-code
blog
book
brew-cask
build-cache
collaboration
communication
composer
confluence
cronjob
curl
customizing
customlog
data.sql
database
developer
difference
docker
docker-desktop
dockerize
dos-attack
eks
elasticsearch
empty-string
environment-to-do-well
errorlogformat
event-driven
experience
file-upload
filebeat
fluentd
forwarded-option
framework
fuse.js
golang
graceful-deploy
happy-new-year
haproxy
haproxy-1.8
haproxy-acl-logging
haproxy-custom-variable-logging
haproxy-metric
haproxy-reload-fail
haproxy-stat
heap-memory
hedgehog-sharp
how-do-i-work
hugo
index-alias
install
installation
instance-type
inverted-index
istio
iterm
java
jdk-21
jekyll
jekyll-to-hugo
jetbrains
json
k8s
k8s-api
kmooc
kubernetes
leadership
learning-in-2019
lets-encrypt
letsencrypt
limit_req_zone
litestar
logstash
m1-macbook-pro
macro
macro-key-mapping
mapping
match
match_phrase
maven
microservice-설계-및-구현
migration
mm
multi-datasource
mysql
nginx
nginx-ingress
nginx-regexp
ngram
null
openjdk
partial-matching
phpstorm
poeaa
portfolio-expansion
product-strategy
python
query-dsl
rate-limit
rate-litmiting
rds
reindex
rss-template
seamless-reload
search-on-hugo
service-account-role
sidebar-search
speed-up
speedup
spring
spring-boot
spring-camp
spring-camp-2023
spring-event
ssh
struct
study
system-manager
systemd-reload
template
term
throughput
timezone
tips
traffic-management
ulid
unused-plugins
uuid
ux-consideration
virtual-thread
vm-options
webflux
wildcard
zero-downtime
만들면서-배우는-클린-아키텍처
시작하세요-도커
엔터프라이즈-애플리케이션-아키텍처-패턴
쿠버네티스-시작하기