지난 장에서 매우 간단한 파이프라인을 만들어 테스트했다. 허나 현실에선 파이프라인은 간단치 않다. 일반적으로 하나 이상의 입력을 가지며 필터와 출력 또한 한 개 이상이다. 이번 장에서, 파일비트를 이용해 아파치 웹 로그 인풋을 만들고 특정하고 구체적인 필드 포맷을 갖는 로그를 만들기 위해 분석하며(parse) 이를 탄성조사 클러스터에 전달할 것이다. 명령줄에 파이프라인 설정을 정의하기보단 설정 파일을 만들 것이다. 시작하기 전에 학습 자료를 다운받자. 압축은 풀어라. Logstash에 Filebeat를 통해 로그를 전달하기 위한 설정 파이프라인을 만들기 전에 Filebeat를 설정해서 Logstash로 로그를 보내도록 하자. Filebeat클라이언트는 가볍고 서버 파일로부터 로그를 수집해 Logstash..
Logstash 파이프라인은 두 개의 필수 요소를 필요로 한다. input과 output이 그것이며 옵션 요소로 filter를 둔다. 파이프라인이란 입력 자원으로부터 출력 자원 까지의 데이터 처리 흐름을 뜻한다. 입력 플러그인(input에 적용되는 요소들)은 자원으로부터 데이터를 입력받으며, 필터 플러그인은 우리가 명시한 대로 데이터를 가공한다. 출력 플러그인은 목적지로 데이터를 전송하는 역할을 맡는다. [출처 : Logstash 공식 홈페이지]설치여부를 확인하기 위해 아래처럼 최대한 간단한 파이프라인을 실행시켜 본다.cd logstash-5.5.0 bin/logstash -e 'input { stdin { } } output { stdout {} }'-e 옵션은 명령줄로 직접 설정을 명시하겠다는 뜻이다..
자바 8이 필요하다. 9는 지원하지 않는다. 자바 버전 체크부터 해보자.java -version 정상적으로 설치됐다면 이같은 출력을 볼 것이다.java version "1.8.0_65" Java(TM) SE Runtime Environment (build 1.8.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)몇 리눅스 시스템에서는 JAVA_HOME 환경 변수를 설정해야 할 필요가 있다. Tar 파일을 이용해 Java를 설치한 경우 특히. Logstash가 해당 변수를 참조하여 적절한 시동법을 찾게 되는데, 없으면 에러를 볼 것이다. 바이너리로 다운받아 설치하는 법. 호스트 환경에 알맞는 파일을 다운받는다. 압축을 풀되, ..
이제 로그스타시를 설치하고 증명하여 모든 것이 정상적으로 구동되는 절차를 인도한다. 첫 이벤트를 받는 방법을 배운 뒤, 아파치 웹 로그를 입력으로 받는 파이프라인과 로그를 파싱하는 것 그리고 최종 목적지에 분석된 데이터를 쓰는(write) 것을 확인한다. 이후 다양한 수신지에서 오는 받아서 어떻게 호율적으로 처리할지 확인해본다. 설치기본 개념과 첫 간단 예제Logstash로 로그 분석Logstash로 로그 분석2 (필터)복합줄 처리 & 출력 플러그인
[출처] 람다식과 함수 스트림과 같은 새 기능의 변화가 Java 8에서 두드러졌기에 이에 관련한 수많은 소개 글과 학습가이드가 제공된다. 그러나 이 외에도 JDK 8 API에는 기존하던 클래스들에도 상당히 유용한 기능 향상이 있었다. 본 글에서는 Java 8 API에서 나타난 이러한 작은 변화들에 대해서 소개하고자 한다. 각각을 쉬운 예제와 함께 살펴보자. 고로 Strings, Numbers, Math 그리고 Files에 대해 깊이 알아봅세. Slicing Strings join()과 chars라는 새 메서드가 추가되었다. 첫번째 메서드는 여러 문자열을 단 하나의 문자열로 치환시킨다. 이때 인자로 두어진 구분자(delimiter)를 이용한다. String.join(":", "foobar", "foo", ..
문서를 읽고 특징을 파악하는데 예제가 너무 간단하나, 내용이 너무 방대하여 중요 요점을 기록하기 위하여 본 페이지를 작성한다. >> 이후 정리된 내용을 다시 깨끗하게 정리할 예정이다. 1. BSD 소켓과 마찬가지로 4개의 단계를 거쳐 연결을 수립한다.소켓을 생성하고 파괴한다. 문서에선 숙명적인 소켓의 삶의 순환이라 한다. zmq_socket(), zmq_close()를 통해 수행한다.옵션을 지정하여 소켓의 특성을 정의하며 필요시 조회한다. zmq_setsockopt(), zmq_getsockopt() 를 통해 수행한다.네트워크 토폴로지에 소켓을 부착한다. zmq_bind()와 zmq_connect()를 통해 수행한다.소켓을 통해 메시지를 송수신한다. zmq_msg_send(), zmq_msg_recv()..
으아, 귀찮음을 이겨내고 수행한다. ConcurrentHashMap ConcurrentMap 인터페이스에서 설명된 메서드들은 인터페이스의 구현체에서 모두 사용가능하다. 이를 가장 정말로, 최고로 유용하게 구현한 것중 지대하게 중요한 구현체가 있는데 그것이 바로 ConcurrentHashMap이다. 이 구현체는 맵에 대해 병행 연산을 수행하기 위해 더 진보된, 강화된 새 메서드들을 탑재하고 있다. 병행 스트림(Parallel streams)과 마찬가지로 이러한 메서드들은 자바 8에서 제공되는 ForkJoinPool.commonPool()을 통한 특별한 ForkJoinPool을 사용한다. 이 풀은 가용가능한 코어 수에 적합한 미리 정의된 병행유사성(?;parallelism;아 어휘의 한계)을 사용한다. 4개..
출처 : http://winterbe.com/posts/2015/05/22/java8-concurrency-tutorial-atomic-concurrent-map-examples/ 글을 쓴지 어연 1년. 본인의 게으름에 치를 떤다. 사설은 관두고 각설, 본문을 게시한다. ConcurrentMap 이 ConcurrentMap은 Map 인터페이스를 확장한 것으로 병행 컬렉션 타입중 가장 유용한 기능을 갖는다. Java8에서 이 인터페이스에 새로운 메서드가 추가되었고 이들을 통해 함수형 프로그래밍이 가능해졌다. 다음 코드를 기반으로 하여 이러한 새로운 메서드를 사용할 것이다.ConcurrentMap map = new ConcurrentHashMap();map.put("foo", "bar");map.put("h..
(블로그 게시물 이동중입니다) 출처 : http://winterbe.com/posts/2015/05/22/java8-concurrency-tutorial-atomic-concurrent-map-examples/ 마지막이다. 이제 자바의 Conncurecy API에서 중요한 두 부분을 다룬다. Atomic Variables과 Concurrent Map 이 그것이다. 두 개념 모두 자바 8에서 람다식과 함수형 프로그래밍의 도입과 함께 상당히 개선되었다. 새로운 특징들을 쉬운 예제와 함께 살펴보게 된다. Part 1. Threads and Executors (완) Part 2. Synchronzation and Locks (완) Part 3. Atomic Variables and ConcurrentMap 여기..
(블로그 게시물 이동중입니다) 출처 : http://winterbe.com/posts/2015/04/30/java8-concurrency-tutorial-synchronized-locks-examples/ Java 8의 무지 쉬운 예제를 통하여 멀티 프로그래밍에 대한 개념을 소개하는 두번째 튜토리얼의 글을 보게 된 것을 환영한다. 또다시 약 15분을 투자하여 어떻게 자바에서 락, 세마포어와 같은 동기화 키워드로 대표되는 개념들을 통해 공용 변수에 동기적으로 접근할 수 있는지 알게 될 것이다. Part 1. Threads and Executors(완) Part 2. Synchronization and Locks Part 3. Atomic Variables and ConcurrentMap 여기서는 Part ..