본문 바로가기
  • _^**_
무근본 IT 지식 공유/무근본 자바(JAVA)

[무근본자바] Elk 스택에(엘라스틱서치) 쌓인 로그활용해서 내용 분석하기- 자바 코드

by 크리드로얄워터 2024. 3. 2.
반응형

분석하고자 하는 로그 데이터를 처리하기 위해 Java를 사용하여 ELK 스택(Elasticsearch, Logstash, Kibana) 내의 Elasticsearch에 저장된 데이터를 쿼리하고 분석하는 과정은 다음 단계로 구성됩니다.

Elasticsearch의 Java High Level REST Client를 활용할 것입니다.


이 클라이언트는 Elasticsearch와 통신하기 위한 자바 클라이언트 중 하나로, Elasticsearch 7.x 버전부터 권장됩니다.

1. 의존성 추가


Maven 또는 Gradle 프로젝트에 Elasticsearch High Level REST Client 관련 의존성을 추가합니다.

다음은 Maven을 사용하는 경우의 예시입니다.

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.10.1</version>
</dependency>

Gradle을 사용하는 경우, build.gradle 파일에 아래 의존성을 추가합니다.


implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:7.10.1'


2. 클라이언트 설정 및 연결


Elasticsearch High Level REST Client를 초기화하고 Elasticsearch 클러스터에 연결합니다.



import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;

public class ElasticSearchClientExample {
    public static void main(String[] args) {
        final RestHighLevelClient client = new RestHighLevelClient(
            RestClient.builder(
                new HttpHost("localhost", 9200, "http")
            )
        );
        // 클라이언트를 사용하는 코드
    }
}


3. 데이터 쿼리 및 분석


Elasticsearch에서 데이터를 검색하는 예제입니다. 여기서는 간단한 매치 쿼리를 실행하여 특정 필드에서 특정 텍스트를 검색합니다.



import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;

public class QueryExample {
    public static void main(String[] args) throws IOException {
        // 클라이언트 초기화 코드

        SearchRequest searchRequest = new SearchRequest("your_index_name"); // 인덱스명 설정
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 
        searchSourceBuilder.query(QueryBuilders.matchQuery("your_field_name", "your_search_text")); // 검색 쿼리 설정

        searchRequest.source(searchSourceBuilder);
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

        for (SearchHit hit : searchResponse.getHits().getHits()) {
            System.out.println(hit.getSourceAsString()); // 검색 결과 출력
        }
        
        // 클라이언트 종료 코드
    }
}

4. 클라이언트 종료


사용이 끝난 후에는 리소스를 해제하기 위해 클라이언트를 종료해야 합니다.

client.close();


위의 코드는 Elasticsearch에서 특정 조건에 맞는 데이터를 검색하고 결과를 출력하는 기본적인 프로세스를 보여줍니다.

실제 사용 사례에 맞게 쿼리를 조정하고,

필요한 데이터 처리 로직을 추가하여 로그 분석을 수행할 수 있습니다.

@@@자바책추천


https://link.coupang.com/a/bsBPhC

Do it! 자바 프로그래밍 입문 : 개발 10년 강의 10년 명강사의 기초튼튼 코딩 밥상

COUPANG

www.coupang.com

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

반응형

댓글