'elastic'에 해당되는 글 130건

  1. 2021.10.19 [Elastic] Elastic Stack Installer + No Ansible ㅠ.ㅠ
  2. 2021.10.18 [Elasticsearch] Deep Pagination.
  3. 2021.10.07 [Logstash] Event, Fields 데이터 사용방법
  4. 2021.10.07 [Filebeat] ignore_older 와 tail_files 관련.
  5. 2021.09.29 [Elastic] 초간단 모니터링 시스템 만들기
  6. 2021.09.15 [Elasticsearch] _analyze API 예제 영단어 처리.
  7. 2021.09.07 [Elasticsearch] Shard Awareness Allocation 사용 시 주의점.
  8. 2021.08.12 [Elasticsearch] _routing 활용에 따른 특정 shard 만 _forcemerge 하고 싶을 경우.
  9. 2021.08.12 [Elasticsearch] RESTful API + ID:PASSWORD 요청.
  10. 2021.08.11 [Elasticsearch] Contribute 하고 싶으세요.

[Elastic] Elastic Stack Installer + No Ansible ㅠ.ㅠ

Elastic 2021. 10. 19. 19:05

이런 저런 이유가 있어서 IaC 적용이 어려워 그냥 Shell Script + SSH Tunneling 기반으로 작성했습니다.

https://github.com/HowookJeong/elastic-stack-installer

 

GitHub - HowookJeong/elastic-stack-installer

Contribute to HowookJeong/elastic-stack-installer development by creating an account on GitHub.

github.com

 

elastic-stack-installer
각 stack 경로로 들어가서 실행 하면 됩니다.
기본 stack 의 start/stop 스크립트는 포함이 되어 있습니다.
$ cd stack/elasticsearch/bin
$ zsh installer
설치 할 운영체제를 선택 하세요.
0. MACOS
1. LINUX_X86_64
2. LINUX_AARCH64
   0
   선택한 운영 체계는 0 번 입니다.
   설치 할 버전을 입력 하세요.
   예) 7.15.1
   7.15.1
   입력한 버전은 7.15.1 입니다.

VPN 연결을 통해 배포가 이루어 지나요? (y/n)
설치 파일을 먼저 다운로드 받습니다. 이후 설치 스크립트를 재실행 하고 이 단계를 'N' 로 입력하고 스킵 합니다.
n
wget --read-timeout=5 --timeout=5 --no-check-certificate https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.1-darwin-x86_64.tar.gz
--2021-10-19 18:31:24--  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.1-darwin-x86_64.tar.gz
artifacts.elastic.co (artifacts.elastic.co) 해석 중... 34.120.127.130
다음으로 연결 중: artifacts.elastic.co (artifacts.elastic.co)|34.120.127.130|:443... 연결했습니다.
HTTP 요청을 보냈습니다. 응답 기다리는 중... 200 OK
길이: 338602042 (323M) [application/x-gzip]
저장 위치: `elasticsearch-7.15.1-darwin-x86_64.tar.gz'

elasticsearch-7.15.1-darwin-x86_64.tar.gz       100%[====================================================================================================>] 322.92M  2.93MB/s    /  1m 57s

2021-10-19 18:33:21 (2.75 MB/s) - `elasticsearch-7.15.1-darwin-x86_64.tar.gz' 저장함 [338602042/338602042]

SSH 통신을 위한 KEY 가 필요 한가요? (y/n)
n
SSH 접속 User 를 입력 하세요.
예) deploy
henry
설치할 인스턴스의 IP 를 입력 하세요.
예)
127.0.0.1
localhost
인스턴스에 설치할 경로를 입력 하세요.
예)
/home/deploy/apps/
/Users/deploy/apps/
인스턴스에 설치 파일을 배포할 경로를 입력 하세요.
예)
/home/deploy/dist/elastic-stack/elasticsearch
/Users/deploy/dist/elastic-stack/elasticsearch
Symbolic link 를 사용하시면 입력 하시고 아니면 엔터를 입력 하세요.
elasticsearch
ssh -p 22 -o StrictHostKeychecking=no henry@localhost mkdir -p /Users/deploy/dist/elastic-stack/elasticsearch
ssh -p 22 -o StrictHostKeychecking=no henry@localhost mkdir -p /Users/deploy/apps/
scp -P 22 -o StrictHostKeychecking=no elasticsearch-7.15.1-darwin-x86_64.tar.gz henry@localhost:/Users/deploy/dist/elastic-stack/elasticsearch
ssh -p 22 -o StrictHostKeychecking=no henry@localhost cd /Users/deploy/dist/elastic-stack/elasticsearch; tar -xvzf elasticsearch-7.15.1-darwin-x86_64.tar.gz
ssh -p 22 -o StrictHostKeychecking=no henry@localhost cd /Users/deploy/dist/elastic-stack/elasticsearch; rm -f elasticsearch-7.15.1-darwin-x86_64.tar.gz
ssh -p 22 -o StrictHostKeychecking=no henry@localhost cd /Users/deploy/dist/elastic-stack/elasticsearch; mv elasticsearch-7.15.1 /Users/deploy/apps/
scp -P 22 -o StrictHostKeychecking=no start henry@localhost:/Users/deploy/apps//elasticsearch-7.15.1/bin/
scp -P 22 -o StrictHostKeychecking=no stop henry@localhost:/Users/deploy/apps//elasticsearch-7.15.1/bin/
ssh -p 22 -o StrictHostKeychecking=no henry@localhost cd /Users/deploy/apps//elasticsearch-7.15.1/bin; chmod 755 start
ssh -p 22 -o StrictHostKeychecking=no henry@localhost cd /Users/deploy/apps//elasticsearch-7.15.1/bin; chmod 755 stop
elasticsearch-7.15.1-darwin-x86_64.tar.gz                      100%  323MB 237.0MB/s   00:01    
x elasticsearch-7.15.1/
...중략...

start                                                        100%  211   572.4KB/s   00:00    
stop                                                     100%   97   283.6KB/s   00:00    
ssh -p 22 -o StrictHostKeychecking=no henry@localhost cd /Users/deploy/apps/; rm -f elasticsearch
ssh -p 22 -o StrictHostKeychecking=no henry@localhost cd /Users/deploy/apps/; ln -s elasticsearch-7.15.1 elasticsearch
다운로드 받은 파일을 삭제 합니다.
rm -f elasticsearch-7.15.1-darwin-x86_64.tar.gz

설치 가능한 Stack 은 Elasticsearch, Filebeat, Kibana, Logstash 입니다.

Elastic 사에서 다운로드 경로와 파일명에 대한 Name Rule 을 바꾸지만 않으면 잘 됩니다. :)

:

[Elasticsearch] Deep Pagination.

Elastic/Elasticsearch 2021. 10. 18. 10:43

Elasticsearch 레퍼런스 문서 입니다.

 

https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html
Deep pagination 기능 구현을 위해서는 Scroll API 를 더 이상 추천 하지 않습니다.
search_after API 를 이용해서 구현 하는 것을 추천 합니다.

Scroll API 는 실시간 서비스를 위한 용도가 아니며, 전체 데이터(대용량 데이터)에 대한 재색인 또는 재구성을 위한 용도로 사용을 합니다.

 

scroll 보다는 search_after 를 사용하라고 하고 있으며, 두 API 모두 전체 또는 특정 질의 조건에 따라 탐색 및 페이징 처리가 가능 합니다.

 

단, 이 기능을 사용 하실 경우

- Cluster 내 Node 의 자원이 충분한지 확인 하시고

- 실시간 서비스 용도로 사용을 하지 마시고

- 색인 요청은 없는지도 확인 하시고

사용 하시길 추천 드립니다.

:

[Logstash] Event, Fields 데이터 사용방법

Elastic/Logstash 2021. 10. 7. 19:40

logstash 사용 시 event, fields 데이터 사용방법에 대한 공홈 레퍼런스 문서 입니다.
처음 사용하시는 분들에게는 유용한 자료라고 생각 되어서 공유 합니다.

https://www.elastic.co/guide/en/logstash/current/event-api.html
https://www.elastic.co/guide/en/logstash/current/event-dependent-configuration.html

:

[Filebeat] ignore_older 와 tail_files 관련.

Elastic/Beats 2021. 10. 7. 19:08

이 두 설정은 같이 고려 하는게 좋습니다.

각 설정은 아래 공홈 문서 참고 하시면 됩니다.

 

https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-log.html#filebeat-input-log-ignore-older

https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-log.html#_tail_files_3

 

[Case 1] filebeat 재시작 시 데이터 유실 없이 사용하기 위한 설정

filebeat.inputs:
- type: log
...중략...
  ignore_older: 0
  tail_files: false
...중략...

 

[Case 2] filebeat 빠른 재시작 시 사용하기 위한 설정

filebeat.inputs:
- type: log
...중략...
  ignore_older: 10m
  tail_files: true
...중략...

가볍게 설정에 대해서 알아보면,

- ignore_older 는 파일의 시간을 가지고 설정된 시간이 지난 파일은 무시 하게 됩니다.

- tail_files 는 파일의 처음 부터 읽을 건지 마지막 부터 읽을 건지 설정을 하게 됩니다.

 

:

[Elastic] 초간단 모니터링 시스템 만들기

Elastic 2021. 9. 29. 17:54

구성요소)

- Elasticsearch

- Kibana

- Elastic Agents

 

Basic 용으로 Security Disabled 하고 사용 합니다. (Security 적용 하실 분은 API Key 생성과 User/Password 구성 하시면 됩니다.)

 

Elasticsearch + Kibana Security Disabled)

- elasticsearch.yml

- kibana.yml

xpack.security.enabled: false

 

Elastic Agents 설치)

https://www.elastic.co/guide/en/fleet/current/elastic-agent-installation.html

Standalone 으로 구성하고 설치가 필요한 장비에 설치 하면 됩니다.

(Fleet 구성은 테스트 해보지 않았구요. 필요 시 해보겠습니다.)
$ sudo ./elastic-agent install

 

EA Start & Stop on Mac)

- Start

$ sudo launchctl load /Library/LaunchDaemons/co.elastic.elastic-agent.plist
- Stop

$ sudo launchctl unload /Library/LaunchDaemons/co.elastic.elastic-agent.plist

 

Dashboard & Visualize)

Kibana 를 이용하시면 됩니다.

 

Alert)

이건 Elasticsearch 로 RESTful API 요청해서 Rule 에 따른 알람을 보내면 됩니다.

보통, WAS 로 구현해서 Slack 으로 보내거나, Scheduler 를 이용해서 Script 를 실행시켜 Slack 으로 보내거나 합니다.

 

:

[Elasticsearch] _analyze API 예제 영단어 처리.

Elastic/Elasticsearch 2021. 9. 15. 11:44

아리랑을 이용한 영단어 처리와 특수문자 제거 예제 입니다.

_analyze API 예제 이고 index 에는 settings 에 선언 하시면 됩니다.

{
    "tokenizer" : "arirang_tokenizer",
    "filter": [        
        "arirang_filter",
        {
            "type": "stemmer",
            "language": "possessive_english"
        },
        "lowercase",
        "classic",
        {
            "type": "stemmer",
            "language": "english"
        }
    ],
    "char_filter": {
        "type": "pattern_replace",
        "pattern": "\\p{Punct}",
        "replacement": ""
    },
    "text": ""
}

text 부분에 분석할 문자열을 넣으세요.

:

[Elasticsearch] Shard Awareness Allocation 사용 시 주의점.

Elastic/Elasticsearch 2021. 9. 7. 23:30

로컬에서 테스트 할 때 주의 해야 하는 점이 있습니다. 

같은 shard 가 같은 host 장비에 할당 되게 하려고 아래와 같은 설정을 합니다.

 

cluster.routing.allocation.same_shard.host: true

 

그런데 이 설정으로 인해서 shard allocation 적용 시 동작 하지 않게 됩니다.

사용 시 위 설정에 대해서 반드시 확인 하고 사용 하세요.

(같은 실수를 몇 번 하는 지 ㅡ.ㅡ;;)

:

[Elasticsearch] _routing 활용에 따른 특정 shard 만 _forcemerge 하고 싶을 경우.

Elastic/Elasticsearch 2021. 8. 12. 14:07

그냥 pull request 날렸습니다.

https://github.com/elastic/elasticsearch/pull/76400


그러나 Contributor Agreement 를 안했다고 하는데 이것 참.. 
했는데 왜 저게 나오는지 도대체 Docu Sign 을 몇 번을 했는지 모르겠네요 ㅡ.ㅡ;


코드를 확인해 보니 _forcemerge API 에는 특정 shard 만 지정 하는 기능은 없었습니다.

뭐 어떻게 보면 당연한 이야기지만, 그래도 _routing 을 사용 하면서 특정 shard 로 operation 이 집중되게 되면 해당 shard 의  segments 파일이 많이 생성 될 수도 있습니다.

 

그래서 코드를 좀 고쳤습니다.

contribute 을 위해 pull request 를 올려야 하는데 이 귀차니즘을 어찌 하죠.

암튼 별건 아니라서 일단 코드 부터 올려 놓습니다. 

 

 

:

[Elasticsearch] RESTful API + ID:PASSWORD 요청.

Elastic/Elasticsearch 2021. 8. 12. 13:18

분명 어딘가에 기록해 두었는데 이걸 왜 못찾고 있는 거지..ㅡ.ㅡ;

 

http://elastic:password@localhost:9200/test-index

 

elasticsearch 에서 기본 인증을 사용 할 경우 API token 사용 이런게 아니라면 단순하게는 저렇게 보낼 수 있습니다.

 

https://www.ietf.org/rfc/rfc2617.txt

공식 스펙은 위 문서 참고 하시면 됩니다. (Basic Authentication)

 

URL 로 보내기 싫으시면 header 로 보내시면 됩니다.

 

elastic:password 를 base64 인코딩 하시고 "Authorization" 헤더로 값을 보내시면 되겠습니다.

 

KEY : Authorization

VALUE : Basic ZWxhc3RpYzpwYXNzd29yZA==

 

:

[Elasticsearch] Contribute 하고 싶으세요.

Elastic/Elasticsearch 2021. 8. 11. 14:00

Quick 하게 아래 처럼 일단 시작 부터 해봅시다.

 

[Elasticsearch Contribute]
https://github.com/elastic/elasticsearch/blob/master/CONTRIBUTING.md

소스코드 내려 받고 elasticsearch 7.14.0 빌드 및 실행
운영 환경에서 실행 시 jdk 11 로 가능 하지만 빌드 시는 jdk 16 을 요구 합니다.

% jenv local 16
% ./gradlew :run

 

: