소나 4.0.2308 출시 - 세대 교체 및 편의성 향상

로그프레소 소나 4.0.2308.0 버전이 출시되었습니다. 이번 릴리스는 약 140가지의 변경사항을 포함하고 있으며, 로그프레소 엔터프라이즈 제품군 단종 이후 전면적인 세대 교체와 운영 편의성 향상을 목표로 합니다. 이전에 엔터프라이즈에서만 사용 가능하던 기능들은 최대한 빠른 시일 내에 소나 제품군에서 지원할 예정입니다.

통합 빌드

로그프레소 스탠다드, 엔터프라이즈, 소나, 마에스트로 4종의 모델에 따라 별도의 패키지를 구분하여 설치하고 관리하는 것은 그 복잡성으로 인해 운영자와 엔지니어에게 어려움을 가중시키는 문제가 있었습니다. 이에 스탠다드 및 엔터프라이즈는 단종시키고, 단일 서버 패키지로 3종의 모델을 지원하도록 개선했습니다:

  • Logpresso Sonar Light: 통합로그 관리
  • Logpresso Sonar: 통합보안관제
  • Logpresso Maestro: 보안운영 자동화

이에 따라 4.0.2308.0 버전부터는 라이선스 설치만으로 메뉴 구성과 기능 집합이 즉각적으로 변경됩니다.

수집 설정 단순화

이전 버전에서는 수집 모델, 추출 모델, 원본 로그 파서, 정규화 로그 파서, 로그 스키마가 모두 구분되어 있었습니다. 이 때문에 새 유형의 수집기를 정의하려면 5개 메뉴를 오가며 설정해야 하는 어려움이 있었습니다.

새 수집 모델 편집 화면

원본 로그 파서와 정규화 로그 파서는 하나의 파서 메뉴로 통합하고, 추출 모델 메뉴는 수집 모델 설정 화면에서 탭으로 즉시 편집할 수 있도록 하였습니다. 이제 파서를 생성하고, 파싱 결과를 확인하면서 로그 스키마를 정의한 후, 수집 모델을 편집하는 이전보다 훨씬 간결한 흐름으로 새 수집 유형을 정의할 수 있게 되었습니다.

앱 기능 향상

통합로그관리 또는 통합보안관제 솔루션을 구축할 때 통상 많은 기간이 수집 설정과 필드 정규화에서 소요됩니다. 모든 필드를 정확하게 파싱하면서도 성능 문제가 없는 정규표현식을 작성하거나, 필드 이름의 공통 표준화를 수행하고, 드릴다운 분석 가능한 대시보드를 설정하기까지 수많은 설정과 검증을 거쳐야 합니다.

이전의 엔터프라이즈 4.0은 최소한의 설정으로 대시보드 시각화까지 구성하는 기능을 선보였습니다. 하지만 지금까지 소나는 필요에 따라 확장된 쿼리 명령어, 파서, 수집기를 사용할 수 있는 기능만을 앱으로 지원해왔습니다.

이번 소나 릴리스부터는 파서, 로그 스키마, 수집 모델, 데이터셋, 위젯, 대시보드 객체를 앱에 내장하여 지원합니다. 즉, 소나에서도 이제 앱을 설치하고 수집기를 추가하기만 하면 즉시 대시보드를 사용할 수 있다는 의미입니다. 로그프레소 스토어에서 제공하는 60종의 앱을 설치하기만 하면 이제 소나에서도 설치 당일 운영을 시작할 수 있습니다.

다만 아직까지는 plugin 디렉터리에 앱을 설치해야 합니다. 다음 릴리스에서는 웹 브라우저에서 클러스터 전체에 앱을 설치 및 관리할 수 있는 기능을 지원할 예정이니 조금만 더 기다려주세요.

매니지드 시큐리티 서비스 지원

LG CNS와 매니지드 탐지 및 대응(MDR) 협업을 진행하면서 다수의 고객사를 효율적으로 관리할 수 있는 프레임워크를 구현하였습니다. “사이트” 개념이 새로 추가되었으며, 자산 IP와 수집기에 사이트를 매핑할 수 있습니다. 로그 수집 시점에 사이트 이름이 태깅되고, 시나리오 탐지 시 티켓에 사이트가 매핑되며, 티켓 목록에서 사이트 단위로 검색 및 대응을 수행할 수 있습니다.

티켓 목록의 사이트 열 활성화

이 뿐 아니라, 티켓에 태그를 추가할 수 있도록 하여 위협 분류 및 대응 상태 가시성을 향상시켰습니다.

성능 모니터

시스템 담당자는 누구나 안정적인 시스템 운영을 목표로 합니다. 그러나 이전의 성능 모니터링은 초심자가 직관적으로 장애 상황을 인지하기 어려웠습니다. 이번 릴리스는 성능 모니터 메뉴를 추가하여 대규모 클러스터에서 장애나 로그 유실 여부를 직관적으로 파악할 수 있도록 개선하였습니다.

예를 들어 아래는 장애 발생 시의 그래프 예입니다.

로그프레소 성능 모니터 장애 예시

수집 추이는 노란색으로 지난 주 추이를 출력합니다. 1번의 현재 수집 추이와 지난 주 추이를 비교하기만 해도 직관적으로 장애 여부를 파악할 수 있습니다. 특히 2번의 힙 메모리 추이 패턴과 3번의 GC 추이를 보면 현재 힙 메모리 고갈로 인한 장애가 발생하고 있다는 사실을 즉시 파악할 수 있습니다.

이 뿐만 아니라, 네트워크 인터페이스 카드의 패킷 유실, 커널 스택에서의 패킷 유실, 로그프레소 데몬에서의 패킷 유실을 한 눈에 확인할 수 있도록 표시하여, 시스템 운영자가 현재 클러스터 상태가 정상인지 확신을 가질 수 있도록 개선하였습니다.

REST API

이번 릴리스부터 100가지 이상의 REST API가 지원됩니다. 계정에서 API 키 발급 버튼을 클릭하여 새 API 키를 생성하고 사용할 수 있습니다. 타 SOAR 솔루션 또는 보안포털에서 로그프레소를 연동하려는 경우, 로그프레소 REST API 레퍼런스를 참고하여 즉시 연동하실 수 있습니다.

로그프레소 소나 API 키 발급

프로그램을 작성하기 전이라도 웹 브라우저에서 API를 즉시 테스트 할 수 있습니다. https://hostname/api/ 경로로 이동하면 사용 가능한 API 그룹이 표시되고, 각 API 그룹을 클릭하면 아래와 같이 API 테스트 화면이 제공됩니다.

로그프레소 REST API 테스트 화면

맺음말

이 외에도 매우 많은 기능들이 개선되었습니다. 4.0.2308 릴리스 노트에서 세부사항을 확인해보세요!

둘러보기

더보기

GraalVM 소개

로그프레소 빅데이터 플랫폼은 복잡한 사용자 분석 기능 확장을 지원하기 위하여 2014년 이래 그루비, 자바스크립트 엔진을 내장하여 지원하고 있습니다. 지금까지는 자바스크립트를 구동하는데 Nashorn 엔진을 사용했는데요. 자바 11이 출시되면서 Nashorn은 제거 예정 상태로 변경되었고 GraalVM으로 대체를 권고하고 있습니다. 이번 글에서는 GraalVM에 대한 전반적인 개요를 소개합니다. ## GraalVM 개발 배경 GraalVM은 2005년에 썬 마이크로시스템즈에서 Maxine 가상머신 프로젝트로 시작되었습니다. 자바 가상머신(JVM)은 C++ 언어로 구현되어 있는데, 이 프로젝트의 목표는 자바 가상머신 전체를 자바 언어로 다시 작성하는 것이었습니다. 그러나 모든 코드를 한 번에 다 갈아엎는다는 것이 현실적으로 매우 달성하기 어렵기 때문에, 기존 핫스팟 런타임을 최대한 재사용하면서 플러그인으로 JIT 컴파일러를 끼워넣는 방향으로 선회하여 오늘에 이르렀습니다. ## GraalVM 구성 ![](/media/ko/2020-05-10-graalvm/graal-arch.png) GraalVM JIT 컴파일러는 자바 9 버전에 추가된 JVMCI (JVM 컴파일러 인터페이스)를 이용하여 기존 핫스팟 런타임에 플러그인 되는 구조로 동작합니다. 자바나 스칼라 같은 JVM 기반 언어는 GraalVM JIT 컴파일러의 최적화를 통해 성능 향상을 기대할 수 있습니다. 그 위에 Truffle 프레임워크가 올라가는데, 이는 자바스크립트, R, 파이썬, 루비 등 JVM 기반이 아닌 기존 언어의 새로운 구현을 지원합니다. ## GraalVM 활용 분야 * 기존 자바 응용 프로그램의 성능 향상 * 트위터의 경우 GraalVM을 적용해서 기존 Scala 코드에 대해 약 20%의 성능 향상 달성 * 다양한 언어 확장 * 자바 코드에서 자바스크립트, R, 파이썬, LLVM IR, 웹 어셈블리 실행 가능 * 각 언어별 라이브러리 활용 가능 (예: R이나 파이썬에서 데이터 분석 후 자바스크립트로 출력) * 고성능이 필요한 모듈을 C/C++로 구현 * 호스트 접근 필터링 기능으로 스크립트 실행 시 보안성 향상 * 네이티브 이미지 생성 * AOT 컴파일을 통해 부팅 시간 단축, 이미지 크기 최소화 * 특히 최근의 컨테이너 기반 마이크로서비스 아키텍처에 활용성 높음 * 기존 언어의 대량 메모리 사용 지원 * 자바 가상머신은 수십 년간 GC를 개선하여 테라바이트 단위의 힙 메모리까지 지원 가능 * GraalVM 기반으로 구현된 기존 언어는 대량 메모리 사용 시나리오도 지원할 수 있음 ## GraalVM 구동 방법 OpenJDK 11 버전 이상을 사용하고 있다면 아래와 같이 부팅 스위치를 추가하여 GraalVM JIT을 활성화 할 수 있습니다. 아래 구성은 Graal JIT만 사용하는 최소 구성입니다: ``` -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI --module-path=graalvm --upgrade-module-path=graalvm/compiler.jar ``` 아래 3개의 파일이 graalvm 위치에 있어야 합니다. (20.0.0 버전 기준으로 약 21MB) * [compiler.jar](https://repo1.maven.org/maven2/org/graalvm/compiler/compiler/20.0.0/compiler-20.0.0.jar) * [graal-sdk.jar](https://repo1.maven.org/maven2/org/graalvm/sdk/graal-sdk/20.0.0/graal-sdk-20.0.0.jar) * [truffle-api.jar](https://repo1.maven.org/maven2/org/graalvm/truffle/truffle-api/20.0.0/truffle-api-20.0.0.jar) 시스템 프로퍼티에 아래 속성들이 추가되면 정상적으로 GraalVM이 핫스팟 런타임에 플러그인 된 것입니다. ``` jdk.internal.vm.ci.enabled=true jdk.module.path=graalvm jdk.module.upgrade.path=graalvm/compiler.jar ``` 다음 글에서는 자바스크립트, 파이썬 코드를 실제 구동하는 방법에 대해 알아보겠습니다. ### 레퍼런스 * [Maxine Virtual Machine](https://en.wikipedia.org/wiki/Maxine_Virtual_Machine) * [Running GraalJS on stock JDK11](https://github.com/graalvm/graal-js-jdk11-maven-demo) * [Understanding How Graal Works - a Java JIT Compiler Written in Java](https://chrisseaton.com/truffleruby/jokerconf17/)

2020-05-10