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
let's 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
node drain
null
openjdk
partial matching
phpstorm
poddisruptionbudget
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
만들면서 배우는 클린 아키텍처
시작하세요 도커
엔터프라이즈 애플리케이션 아키텍처 패턴
쿠버네티스 시작하기