일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- jsp
- javascript
- redis
- Oracle
- MySQL
- Git
- AWS
- 요리
- 맛집
- JVM
- java
- devops
- db
- elasticsearch
- ubuntu
- jenkins
- Spring Boot
- linux
- php
- laravel
- Web Server
- tool
- Gradle
- Spring
- springboot
- ReactJS
- IntelliJ
- Spring Batch
- Design Patterns
- it
- Today
- Total
아무거나
AWS S3를 활용한 ELK 스택 로그 백업 및 복원 본문
[AWS S3를 활용한 ELK 스택 로그 백업 및 복원]
1. 설치(S3 repository plugin)
- elasticsearch 와 같은 서버에 설치한다.
- cd /usr/share/elasticsearch
- sudo bin/elasticsearch-plugin install repository-s3
- sudo service elasticsearch restart
2. s3 백업을 등록(aws IAM 기준)
- curl -XPUT 'http://127.0.0.1:9200/_snapshot/s3_elk_backup' -d '{
"type":"s3",
"settings":{
"access_key":"[YOUR_ACCESS_KEY]",
"secret_key":"[YOUR_SECRET_KEY]",
"bucket":"YOUR_BUCKET",
"region":"YOUR_REGION",
"base_path":"elasticsearch",
"max_retries":3
}
}'
3. s3로 백업하는걸 crontab에등록(/etc/cron.d/s3_backup_cron)
[추가내용]
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
HOME=/
# daily
0 0 * * * ubuntu /home/ubuntu/daily_elk_backup.sh > /home/ubuntu/log/elk_backup.log 2>&1
4. 백업 스크립트
[스크립트내용]
// YESTERDAY=$(date --date="1 days ago" +'%Y.%m.%d') : 어제동안 있었던 모든 로그들을 받도록 한다.
// INDEX_... : 모든 인덱스 및 프리픽스 지정
// for.... done : 백업을 s3에 저장
// 확인은 curl -XGET 'localhost:9200/_snapshot/s3_elk_backup/_all?pretty' 로 백업여부확인
TODAY=$(date +'%Y.%m.%d')
YESTERDAY=$(date --date="1 days ago" +'%Y.%m.%d')
echo Today is $TODAY
echo Yesterday $YESTERDAY indices will be stored in S3
INDEX_PREFIXES=''
INDEX_PREFIXES+='tomcat- '
#INDEX_PREFIXES+='filebeat- '
#INDEX_PREFIXES+='database- '
for prefix in $INDEX_PREFIXES;
do
INDEX_NAME=${prefix}$YESTERDAY
SNAPSHOT_NAME=$INDEX_NAME"-snapshot"
echo Start Snapshot $INDEX_NAME
curl -XPUT "http://localhost:9200/_snapshot/s3_elk_backup/$SNAPSHOT_NAME?wait_for_completion=true" -d '{
"indices": "'"$INDEX_NAME"'",
"ignore_unavailable": "true",
"include_global_state": false
}'
echo Successfully completed storing "$INDEX_NAME" in S3
done
5. 복원
- 키바나 데이터 삭제 curl -XDELETE 'localhost:9200/tomcat-2' // 기존 인덱스삭제
- sh elk_restore.sh tomcat-2017.08.06 // 스크립트를 이용하여 복원
[스크립트]
if [[ $# -ne 1 ]] ; then
echo "Missing argument. Please provide index name"
echo "Usage: elk_restore.sh tomcat-2017.08.05"
exit 1
fi
# Store environment from command argument which will be used for S3 location
INDEX_NAME=$1
echo "INDEX_NAME: $1"
curl -XPOST "localhost:9200/_snapshot/s3_elk_backup/$INDEX_NAME-snapshot/_restore" -d '{
"indices": "'"$INDEX_NAME"'",
"ignore_unavailable": "true",
"include_global_state": false
}'
'Data Store > Elastic Stack' 카테고리의 다른 글
[logstash] db에서 es로 데이터 전송 (0) | 2019.05.28 |
---|---|
검색쿼리 요청시 count(size) 10000이 넘을 경우 에러 (0) | 2019.05.27 |
[qurator] 큐레이터 (0) | 2019.05.23 |
[FileBeat] 설치 및 테스트 (0) | 2019.05.22 |
[logstash] 실전 주식 분석 (0) | 2019.05.22 |