'2021/10'에 해당되는 글 12건

  1. 2021.10.28 [CURL] proxy 설정에 따른 ERR_ACCESS_DENIED 회피.
  2. 2021.10.27 [Elasticsearch] Term vs Terms Query
  3. 2021.10.27 [Postman] Set Array Variable.
  4. 2021.10.27 [Kibana] Discover 에서 데이터 요청 시 _source 와 fields
  5. 2021.10.26 [Logstash] Proxy 구성을 이용한 Plugin 설치
  6. 2021.10.20 [Spring] Intellij Community + Springboot Profile 활용
  7. 2021.10.19 [Elastic] Elastic Stack Installer + No Ansible ㅠ.ㅠ
  8. 2021.10.18 [Elasticsearch] Deep Pagination.
  9. 2021.10.07 [Logstash] Event, Fields 데이터 사용방법
  10. 2021.10.07 [Filebeat] ignore_older 와 tail_files 관련.

[CURL] proxy 설정에 따른 ERR_ACCESS_DENIED 회피.

ITWeb/개발일반 2021. 10. 28. 15:47

뭐 회피라고 하기도 그렇지만 실행 하는 장비에 proxy 설정이 되어 있어서 발생 하는 문제 입니다.

proxy 를 거치지 않도록 실행 시키면 관련 에러는 없어 질 수 있습니다.

(제 경우를 기록 한거라 다른 환경이면 안될 수도 있으니 참고하세요.)

 

$ curl --noproxy '*' -X POST http://user:token@localhost:8080/job/task/build

 

:

[Elasticsearch] Term vs Terms Query

Elastic/Elasticsearch 2021. 10. 27. 16:14

보셔야 하는 클래스는

- TermQueryBuilder

- TermsQueryBuilder

입니다.

 

두 Query 의 큰 차이는 단독으로 사용 되었을 때 Scoring 이 어떻게 되느냐 인데요.

Term 은 Score 계산이 되어서 나오고 Terms 는 Constant Score Query 처럼 1.0 으로 나온다는 것입니다.

 

코드를 좀 더 따라 가다 보면 

- MapperFieldType

클래스 내 Query API 들에 대한 Interface 나 Implement 코드를 확인해 보실 수 있습니다.

 

아래는 Terms Query 에 대한 코드를 가져온 내용입니다.

    /** Build a constant-scoring query that matches all values. The default implementation uses a
     * {@link ConstantScoreQuery} around a {@link BooleanQuery} whose {@link Occur#SHOULD} clauses
     * are generated with {@link #termQuery}. */
    public Query termsQuery(Collection<?> values, @Nullable SearchExecutionContext context) {
        BooleanQuery.Builder builder = new BooleanQuery.Builder();
        for (Object value : values) {
            builder.add(termQuery(value, context), Occur.SHOULD);
        }
        return new ConstantScoreQuery(builder.build());
    }

뭐 혼자 기억 하기 위한 기록 이라서 이 정도까지만 기록해 두겠습니다.

 

:

[Postman] Set Array Variable.

ITWeb/개발일반 2021. 10. 27. 12:36

참고문서)

https://learning.postman.com/docs/sending-requests/variables/

 

Pre-request Script

pm.environment.set("KEYWORDS", "삼성", "전자", "삼성전자")

 

Body

{
  "query": {
    "terms": {
      "keywords": [
        "{{KEYWORDS}}"
      ]
    }
  }
}

 Array 로 설정을 해야 할 일이 있어서 또 기억 못할까봐 기록해 봅니다.

:

[Kibana] Discover 에서 데이터 요청 시 _source 와 fields

Elastic/Kibana 2021. 10. 27. 09:35

Kibana Discover 에서 데이터 요청 시 _source 는 false 로 가져 오지 않습니다.
다만, View 형식을 Table 에서 JSON 으로 변경 시 _source:true 로 데이터를 가져 오게 됩니다.
그렇기 때문에 기본 fields 를 이용해서 문서의 field 를 가져 오게 됩니다.

 

이걸 기록 하는 이유는 

log file ->

filebeat input log -> filebeat processors decode_json_fields -> filebeat output logstash ->

logstash input beat -> logstash output elasticsearch -> logstash output elasticsearch codec json -> 

elasticsearch ->

kibana

이 과정에서 kibana 에서 불필요한 데이터 요청을 하는 것 같아 확인을 해보니 Table 뷰와 JSON 뷰가 다르다는 걸 확인한 결과를 기록 한 부분 입니다.

 

기본 요청은 _source:false 이기 때문에 불필요한 요청을 하지 않습니다.

 

불필요한 요청이라고 하는 이유는 fields 는 _source 에서 정보를 가져오기 때문에 중복입니다.
:

[Logstash] Proxy 구성을 이용한 Plugin 설치

Elastic/Logstash 2021. 10. 26. 12:21

$ vi .bashrc

export http_proxy=http://proxy.host:port
export https_proxy=https://proxy.host:port

 

$ bin/logstash-plugin install plugins...

 

외부 인터넷 망이 막혀 있는 경우 proxy 를 이용해서 plugin 설치를 하면 됩니다.

output elasticsearch proxy 랑은 다른 내용입니다.

 

:

[Spring] Intellij Community + Springboot Profile 활용

ITWeb/개발일반 2021. 10. 20. 16:43

Intellij Community + Spring Boot Framework Profiles

intellij 에서 바로 springboot application 을 실행 시킬 때 환경 설정 파일을 분리해서 사용하기 위한 내용입니다.
Intellij Community 같은 경우 Ultimate 이랑 다르기 때문에 아래와 같은 방법으로 사용 하시면 됩니다.

application.yml 내 "---" 을 이용한 방식은 검색 해 보시면 많이 나와 있으니 넘어 가겠습니다.
아래 방식이 제가 하고 싶은 방법이라서 기술 합니다.

resources/
  + application.yml
  + application-local.yml

Edit Configuration -> Build and run 에서 Modify options 를 선택해서 add VM options 선택 -> -Dspring.profiles.active=local 입력
또는
Environment variables 에서 아래 key=value 입력 합니다.
spring.profiles.active=local

이와 같이 설정 하고 Application 을 실행 시켜 보시면 동작하는 걸 확인해 볼 수 있습니다.

 

:

[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 는 파일의 처음 부터 읽을 건지 마지막 부터 읽을 건지 설정을 하게 됩니다.

 

: