오픈 소스 sysgrok - 시스템 분석, 이해, 최적화를 위한 AI 어시스턴트

Sysgrok은 실험적인 개념 증명으로, LLM을 사용하여 시스템을 이해하고, 문제를 디버그하고, 성능을 최적화하는 데 어떻게 도움을 줄 수 있는지 보여주기 위한 것입니다.

대표적인 AI 및 머신 러닝 플랫폼과 원활하게 연동하세요. Elastic의 생성형 AI 기능을 살펴보려면 무료 클라우드 체험을 시작하거나 지금 바로 내 기기에서 사용해 보세요.

이 글에서는 성능 최적화, 근본 원인 분석, 시스템 엔지니어링 영역의 문제에 OpenAI의 GPT 모델과 같은 대규모 언어 모델(LLM)을 적용하는 방법을 연구하는 연구 프로토타입인 sysgrok을 소개합니다. GitHub에서 찾을 수 있습니다.

시스그로크의 기능은 무엇인가요?

시스그로크는 다음과 같은 작업을 수행할 수 있습니다:

  • 프로파일러가 식별한 가장 비용이 많이 드는 상위 함수 및 프로세스를 가져와서 각각이 제공하는 기능을 설명하고 최적화를 제안합니다.
  • 호스트와 호스트가 겪고 있는 문제에 대한 설명을 입력하면 자동으로 문제를 디버그하고 해결 방법 및 추가 조치를 제안합니다.
  • 프로파일러가 주석을 단 소스 코드를 가져와서 핫 경로를 설명하고 코드의 성능을 개선할 수 있는 방법을 제안합니다.

시스그로크의 기능은 크게 세 가지 범주의 솔루션을 목표로 합니다:

  1. 성능, 안정성 및 기타 시스템 관련 데이터를 위한 분석 엔진입니다. 이 모드에서는 엔지니어가 사용하는 다른 도구(예: Linux 명령줄 도구, 프로파일러 또는 Observability 플랫폼)의 출력이 LLM에 공급됩니다. sysgrok의 목표는 LLM을 사용하여 시스템 상태에 대한 해석, 요약 및 가설을 세우는 것입니다. 그런 다음 최적화 또는 해결 방법을 제안할 수도 있습니다.
  2. 특정 성능 및 안정성 관련 작업을 위한 집중적이고 자동화된 솔루션입니다. 성능 엔지니어링 및 SRE 작업에는 반복적으로 발생하는 몇 가지 작업이 있습니다. 이를 위해 엔지니어가 직접 사용하거나 다른 문제를 해결하는 데 시스그로크 자체에서 사용할 수 있는 집중적이고 자동화된 어시스턴트를 구축할 수 있습니다. 예를 들어 성능 엔지니어링에서는 " "동등한 기능을 가진 이 라이브러리의 더 빠른 버전이 있나요?" "라는 질문에 답하는 것이 일반적입니다. sysgrok이 이를 직접 지원합니다.
  3. 성능 및 안정성 문제에 대한 자동화된 근본 원인 분석 도구입니다. 앞의 두 가지 범주의 솔루션은 데이터 분석, 해석, 검색, 요약이 혼합된 솔루션입니다. 결정적으로, 엔지니어가 직접 수집한 데이터에 집중적인 방식으로 적용된다는 점이 특징입니다. sysgrok에서는 LLM을 다른 도구와 결합하여 주어진 문제의 근본 원인 분석 및 해결을 자율적으로 수행하는 LLM을 사용한 문제 해결에 대한 세 번째 접근 방식도 연구하고 있습니다. 이 접근 방식에서는 LLM에 문제 설명(예: "웹 서버에 높은 지연 시간이 발생함")과 함께 사용 가능한 기능(예: "호스트에 ssh," " 임의의 Linux 명령줄 도구 실행")을 알려줍니다. 그런 다음 LLM은 사용 가능한 기능을 사용하여 문제를 분류하기 위해 취해야 할 조치를 요청받습니다. 이러한 작업은 sysgrok에서 실행되며 LLM은 결과를 분석하고, 문제를 분류하고, 해결 방법을 제안하고, 다음 단계를 추천하도록 요청받습니다.

아직 초기 단계에 불과하지만 이미 다양한 작업에 유용하게 사용되고 있기 때문에 공개하는 것이며, 다른 사용자들도 비슷한 실험을 할 수 있는 편리한 기반이 되기를 바랍니다. 아이디어가 있으시면 언제든지 GitHub에 PR이나 오픈 이슈를 보내주세요!

LLM의 성능 문제 분석

OpenAI의 GPT 모델과 같은 LLM은 지난 몇 달 동안 폭발적인 인기를 끌며 고객 지원 채팅 봇부터 데이터 조작 지원, 코딩 지원까지 모든 종류의 제품에 자연어 인터페이스와 핵심 엔진을 제공했습니다. 이러한 추세의 흥미로운 측면은 이러한 모든 애플리케이션이 기본적으로 당면한 작업에 맞게 특별히 훈련되거나 미세 조정되지 않은 일반 모델을 사용한다는 점입니다. 대신 인터넷 전체에 대한 광범위한 학습을 거쳤기 때문에 다양한 업무에 적용할 수 있습니다.

그렇다면 이러한 모델을 활용하여 성능 분석, 디버깅 및 최적화에 도움을 받을 수 있을까요? 성능 문제를 조사하고, 근본 원인을 분류하고, 최적화 방안을 마련하는 데는 다양한 방법론이 있습니다. 하지만 모든 성능 분석 작업의 핵심은 Linux 명령줄 도구나 통합 가시성 플랫폼과 같은 다양한 도구의 출력을 살펴보고 그 출력을 해석하여 시스템 상태에 대한 가설을 세우는 것입니다. GPT 모델이 학습한 자료 중에는 소프트웨어 엔지니어링, 디버깅, 인프라 분석, 운영 체제 내부, Kubernetes, Linux 명령 및 그 사용법, 성능 분석 방법론을 다루는 소스가 포함되어 있습니다. 결과적으로 이 모델을 사용하여 성능 엔지니어가 일상적으로 직면하는 데이터와 문제를 요약, 해석, 가설을 세울 수 있으므로 엔지니어가 분석을 진행하는 속도가 빨라질 수 있습니다.

하지만 여기서 더 나아가 엔지니어의 자체 조사 프로세스의 맥락에서 데이터 분석과 질문에 대한 답변에만 LLM을 사용하는 것에서 더 나아갈 수 있습니다. 이 글의 뒷부분에서 설명하겠지만, 일부 시나리오에서는 LLM 자체를 사용하여 프로세스를 구동할 수 있으며, 문제를 디버깅하기 위해 실행할 명령이나 살펴볼 데이터 소스를 결정할 수도 있습니다.

데모

sysgrok이 지원하는 전체 기능 집합은 GitHub 리포지토리에서 확인하세요. 크게 세 가지 문제 해결 방식을 지원합니다:

이 모드에서는 Linux 명령줄 도구, 프로파일러 또는 통합 가시성 플랫폼과 같이 엔지니어가 사용 중인 다른 도구의 출력이 LLM에 공급됩니다. 시스그로크의 목표는 해석, 요약 및 해결책을 제시하는 것입니다.

예를 들어, topn 하위 명령은 프로파일러가 보고한 가장 비싼 상위 함수를 가져와서 출력을 설명한 다음 시스템을 최적화하는 방법을 제안합니다.

이 동영상은 sysgrok에서 제공하는 채팅 기능도 보여줍니다. 채팅 인수를 제공하면 sysgrok은 LLM의 각 응답 후에 채팅 세션으로 이동합니다.

이 기능은 Linux 명령줄 도구의 출력에도 일반적으로 적용할 수 있습니다. 예를 들어, 60초 안에 Linux 성능 분석이라는 문서에서 Brendan Gregg는 성능 또는 안정성 문제가 있는 호스트에 처음 연결할 때 SRE가 실행해야 하는 10가지 명령에 대해 설명합니다. analyzecmd 하위 명령은 연결할 호스트와 실행할 명령을 입력으로 받은 다음 사용자를 위해 명령의 출력을 분석하고 요약합니다. 이를 통해 Gregg가 설명한 프로세스를 자동화하고 10개의 명령어로 생성된 모든 데이터를 한 문단으로 요약하여 사용자에게 제공함으로써 사용자가 명령어의 출력을 일일이 확인해야 하는 번거로움을 줄일 수 있습니다.

성능 엔지니어링 및 SRE 작업에는 반복적으로 발생하는 몇 가지 작업이 있습니다. 이를 위해 엔지니어가 직접 사용하거나 시스그로크 자체에서 다른 문제를 해결하는 데 사용할 수 있는 집중적이고 자동화된 어시스턴트를 구축할 수 있습니다.

예를 들어 findfaster 하위 명령은 라이브러리 또는 프로그램의 이름을 입력으로 받아 LLM을 사용하여 이를 대체할 수 있는 더 빠르고 동등한 대체물을 찾습니다. 이는 성능 엔지니어링에서 매우 일반적인 작업입니다.

이 접근 방식의 또 다른 예는 sysgrok의 설명 함수 하위 명령입니다. 이 하위 명령은 라이브러리의 이름과 해당 라이브러리 내의 함수를 사용합니다. 라이브러리가 하는 일과 일반적인 사용 사례를 설명한 다음 기능을 설명합니다. 마지막으로 해당 라이브러리와 함수가 상당한 양의 CPU 리소스를 소비하는 경우 가능한 최적화를 제안합니다.

접근 방식 3: 성능 및 안정성 문제에 대한 자동화된 근본 원인 분석 도구로서

LLM의 사용은 집중적인 질문 답변, 요약 및 이와 유사한 작업에만 국한되지 않습니다. 또한 단 한 번의 고립된 질문이 주어지는 원샷 사용으로 제한되지 않습니다. sysgrok debughost 하위 명령은 자동화된 문제 해결을 목표로 에이전트에서 LLM을 "두뇌" 로 사용하는 방법을 보여 줍니다. 이 모드에서는 LLM을 사용하여 특정 문제를 디버깅하는 방법을 결정하고 호스트에 연결하고 명령을 실행하며 다른 데이터 소스에 액세스할 수 있는 기능을 제공하는 프로세스 내에 LLM이 포함됩니다.

디버그 호스트 명령은 아마도 현재 sysgrok에서 가장 실험적인 부분일 것입니다. 이는 성능 분석을 위한 자동화된 에이전트로 가는 길의 한 단계를 보여 주지만, 거기에 도달하기 위해서는 상당한 양의 R&D가 필요합니다.

결론

이 게시물에서는 시스템을 분석, 이해 및 최적화하기 위한 새로운 오픈 소스 AI 어시스턴트인 sysgrok을 소개해 드렸습니다. 또한 시스그로크가 구현하는 세 가지 접근 방식에 대해서도 설명했습니다:

  1. 성능, 안정성 및 기타 시스템 관련 데이터를 위한 분석 엔진입니다: topn, stacktrace, analyzecmd 및 code 하위 명령을 참조하세요.
  2. 특정 성능 및 안정성 관련 작업에 대한 집중적이고 자동화된 솔루션입니다: 설명 프로세스, 설명 기능 및 더 빠른 찾기 하위 명령을 참조하세요.
  3. 성능 및 안정성 문제에 대한 자동화된 근본 원인 분석: 디버그 호스트 하위 명령을 참조하세요.

sysgrok 프로젝트는 GitHub에서 찾을 수 있습니다. 홍보 및 이슈를 자유롭게 작성하거나 프로젝트 또는 LLM 전반에 대해 논의하고 싶은 경우 sean.heelan@elastic.co 으로 직접 문의해 주세요.

관련 콘텐츠

최첨단 검색 환경을 구축할 준비가 되셨나요?

충분히 고급화된 검색은 한 사람의 노력만으로는 달성할 수 없습니다. Elasticsearch는 여러분과 마찬가지로 검색에 대한 열정을 가진 데이터 과학자, ML 운영팀, 엔지니어 등 많은 사람들이 지원합니다. 서로 연결하고 협력하여 원하는 결과를 얻을 수 있는 마법 같은 검색 환경을 구축해 보세요.

직접 사용해 보세요