YScope의 CLP(Compressed Log Processor)는 로그를 압축하여 압축을 풀지 않고도 압축된 로그를 검색할 수 있도록 해줍니다. CLP는 JSON 로그와 구조화되지 않은(예: 자유 텍스트) 로그를 모두 지원합니다. 또한 여러 로깅 라이브러리 내에서 실시간 로그 압축을 지원합니다. CLP에는 압축된 로그를 검색하고 보기 위해 특별히 제작된 웹 인터페이스도 포함되어 있습니다. 이에 대해 자세히 알아보려면 구조화되지 않은 로그 처리에 관한 2021년 백서와 이를 JSON 로그로 확장하는 방법에 대한 2024년 백서를 읽어보세요.
위 그림은 다른 도구와 비교하여 CLP의 압축 및 검색 성능을 보여줍니다. (1) 일부 도구는 한 가지 유형의 로그만 처리할 수 있고 (2) 두 유형을 모두 처리할 수 있는 도구는 유형별로 디자인이 다른 경우가 많기 때문에(예: CLP) JSON과 구조화되지 않은 로그 간의 실험을 구분합니다.
압축 비율은 다양한 로그 데이터세트의 평균으로 측정됩니다. 이러한 데이터 세트 중 일부는 여기에서 찾을 수 있습니다. 검색 성능은 MongoDB 로그(JSON의 경우) 및 Hadoop 로그(비정형 로그의 경우)에 대한 쿼리를 사용하여 측정됩니다. CLP는 인덱스 없는 설계를 사용하므로 공정한 비교를 위해 MongoDB 및 PostgreSQL의 인덱스를 비활성화했습니다. 활성화된 상태로 두면 MongoDB와 PostgreSQL의 압축 비율이 더 나빠질 것입니다. Elasticsearch 또는 Splunk는 기본적으로 인덱스 기반 도구이므로(즉, 인덱스 없이는 로그를 검색할 수 없음) 인덱싱을 비활성화하지 않았습니다. 실험 방법론에 대한 자세한 내용은 2021년 논문과 2024년 논문에서 확인할 수 있습니다.
CLP는 압축, 검색, 분석, 보기로 구성된 엔드투엔드 로그 관리 파이프라인을 제공합니다. 위 그림은 CLP 생태계 아키텍처를 보여줍니다. 다음과 같은 기능으로 구성됩니다.
압축 및 검색 : CLP는 로그를 아카이브로 압축하여 웹 UI에서 검색하고 분석할 수 있습니다. 입력은 원시 로그이거나 CLP의 로깅 라이브러리에서 생성된 CLP의 압축 IR(중간 표현)일 수 있습니다.
CLP 로깅 라이브러리를 사용한 실시간 압축 : CLP는 Python 및 Java(Log4j 및 Logback)용 로깅 라이브러리를 제공합니다. 로깅 라이브러리는 로그를 실시간으로 압축하므로 압축된 로그만 디스크에 기록되거나 네트워크를 통해 전송됩니다. 압축된 로그는 Zstandard와 같은 범용 압축기보다 더 높은 압축 비율을 달성하는 CLP의 IR(중간 표현) 형식을 사용합니다. IR을 아카이브로 압축하면 압축률이 두 배로 증가하고 전역 검색이 가능하지만, 충분한 로그를 버퍼링해야 하므로 더 많은 메모리 사용량이 필요합니다. IR과 아카이브에 대한 자세한 내용은 Uber 엔지니어링 블로그에서 확인할 수 있습니다.
로그 뷰어 : 압축된 IR은 웹 기반 로그 뷰어에서 볼 수 있습니다. 편집기에서 로그를 보는 것과 비교하여 CLP의 로그 뷰어는 로그 수준 세부 정보를 기반으로 로그 필터링(예: 로그 수준이 ERROR 이상인 로그만 표시)과 같은 고급 기능을 지원합니다. 이러한 기능은 CLP의 로깅 라이브러리가 로그를 IR로 압축하기 전에 구문 분석하기 때문에 가능합니다.
IR 분석 라이브러리 : 압축된 IR을 분석할 수 있는 Python 라이브러리와 Go 라이브러리도 제공합니다.
로그 파서 : CLP에는 RE2와 같은 최첨단 정규식 엔진보다 3배 빠른 사용자 정의 푸시다운 자동 기반 로그 파서도 포함되어 있습니다. 로그 파서는 다른 애플리케이션에서 사용할 수 있는 라이브러리로 제공됩니다.
분산 압축 및 검색 지원이 포함된 릴리스 패키지를 다운로드할 수 있습니다. 또는 CLP의 핵심 압축 및 검색을 빠르게 시도하기 위해 사전 빌드된 컨테이너를 사용할 수 있습니다.
또한 소스에서 패키지 및 CLP 코어를 빌드하기 위한 가이드도 있습니다.
CLP를 테스트하는 데 사용할 수 있는 일부 로그는 오픈 소스 데이터세트를 확인하세요.
온라인에서 문서를 찾거나 docs/src
에서 소스를 볼 수 있습니다.
GitHub 문제를 사용하여 버그를 보고하거나 기능을 요청할 수 있습니다.
Zulip에 참여하여 개발자 및 다른 커뮤니티 구성원과 채팅하세요.
이것은 버그 수정, 기능 등을 지속적으로 업데이트할 오픈 소스 릴리스입니다. 기능을 원하거나 버그를 보고하려는 경우 문제를 제출해 주시면 기꺼이 참여해 드리겠습니다.