Last9

공식

실시간 프로덕션 컨텍스트(로그, 메트릭, 트레이스)를 로컬 환경으로 원활하게 가져와 코드를 더 빠르게 자동 수정합니다.

Last9 MCP(으)로 무엇을 할 수 있나요?

  • 서비스 상태 조사 — get_service_summary를 통해 요청 수, 처리량, 오류율에 대한 순위별 fleet 요약을 요청합니다.

  • 원시 서비스 로그 가져오기 — get_service_logs를 사용하여 특정 서비스의 심각도 또는 본문 내용으로 필터링된 로그 줄을 검색합니다.

  • 데이터베이스 성능 추적 — get_databases 및 관련 도구를 사용하여 데이터베이스, 느린 쿼리, 쿼리 패턴을 발견합니다.

  • PromQL 쿼리 실행 — prometheus_range_query 또는 prometheus_instant_query를 사용하여 모든 메트릭에 대해 범위 또는 즉시 쿼리를 실행합니다.

  • 변경 사항과 인시던트 상관관계 파악 — get_change_events를 통해 배포 및 구성 변경 이벤트를 가져와 프로덕션 동작을 변경한 원인을 이해합니다.

  • 사용자 정의 대시보드 관리 — list_dashboards 및 create_dashboard로 대시보드를 프로그래밍 방식으로 나열, 생성, 업데이트 또는 검증합니다.

문서

Last9 MCP 서버

last9 mcp demo

당신의 AI 에이전트는 프로덕션에서 무엇이 고장났는지 모릅니다. 이 도구가 그 문제를 해결합니다.

Last9 MCP 서버는 Claude, Cursor, Windsurf 및 MCP를 지원하는 모든 AI 어시스턴트를 프로덕션 관측 데이터(로그, 메트릭, 트레이스, 예외, 데이터베이스 쿼리, 알림, 배포)에 직접 연결합니다. 에이전트는 추측을 멈추고 실제 신호를 읽기 시작합니다.


30초 만에 시작하기 (호스팅)

설치할 바이너리도, 관리할 토큰도 없습니다. URL 하나, 브라우저에서 OAuth 인증, 끝입니다.

Last9 URL에서 조직 슬러그를 찾으세요: app.last9.io/<org_slug>/...

Claude Code

claude mcp add --transport http last9 https://app.last9.io/api/v4/organizations/<org_slug>/mcp

/mcp를 입력하고 last9를 선택한 후 인증하세요. 그게 전부입니다.

Cursor

설정 > MCP > 새 MCP 서버 추가:

{
  "mcpServers": {
    "last9": {
      "type": "http",
      "url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
    }
  }
}

연결을 클릭하고 OAuth를 완료하세요.

VS Code

v1.99+ 필요. 명령 팔레트 열기 → MCP: 서버 추가, URL 붙여넣기, 인증.

또는 settings.json에서 직접:

{
  "mcp": {
    "servers": {
      "last9": {
        "type": "http",
        "url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
      }
    }
  }
}

Windsurf

설정 > Cascade > MCP 마켓플레이스 열기 > 기어 아이콘(mcp_config.json):

{
  "mcpServers": {
    "last9": {
      "serverUrl": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
    }
  }
}

Claude 웹/데스크톱

설정 > 커넥터 > 사용자 지정 커넥터 추가. 이름을 last9로 지정하고 URL을 붙여넣은 후 인증하세요.

Claude 조직에 대한 관리자 액세스가 필요합니다.


자체 호스팅 (STDIO)

MCP 클라이언트가 HTTP 전송을 지원하지 않거나 서버를 로컬에서 실행해야 할 때 사용하세요.

설치

Homebrew:

brew install last9/tap/last9-mcp

NPM:

npm install -g @last9/mcp-server@latest
# or directly:
npx -y @last9/mcp-server@latest

바이너리 릴리스 (Windows / 수동):

GitHub 릴리스에서 다운로드:

플랫폼아카이브
Windows (x64)last9-mcp-server_Windows_x86_64.zip
Windows (ARM64)last9-mcp-server_Windows_arm64.zip
Linux (x64)last9-mcp-server_Linux_x86_64.tar.gz
Linux (ARM64)last9-mcp-server_Linux_arm64.tar.gz
macOS (x64)last9-mcp-server_Darwin_x86_64.tar.gz
macOS (ARM64)last9-mcp-server_Darwin_arm64.tar.gz

리프레시 토큰 받기

토큰을 만들 수 있는 사람은 관리자뿐입니다.

  1. API 액세스로 이동
  2. 쓰기 권한으로 토큰 생성 클릭
  3. 복사

클라이언트 구성

Homebrew:

{
  "mcpServers": {
    "last9": {
      "command": "/opt/homebrew/bin/last9-mcp",
      "env": {
        "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
      }
    }
  }
}

NPM:

{
  "mcpServers": {
    "last9": {
      "command": "npx",
      "args": ["-y", "@last9/mcp-server@latest"],
      "env": {
        "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
      }
    }
  }
}

붙여넣을 위치:

클라이언트위치
Claude 웹/데스크톱설정 > 개발자 > 구성 편집 (claude_desktop_config.json)
Cursor설정 > Cursor 설정 > MCP > 새 전역 MCP 서버 추가
Windsurf설정 > Cascade > MCP 마켓플레이스 > 기어 아이콘 (mcp_config.json)
VS Codesettings.json에서 { "mcp": { "servers": { ... } } }로 감싸기 — 자세히
VS Code STDIO 구성
{
  "mcp": {
    "servers": {
      "last9": {
        "type": "stdio",
        "command": "/opt/homebrew/bin/last9-mcp",
        "env": {
          "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
        }
      }
    }
  }
}

NPM의 경우: "command": "npx"을 사용하고 "args": ["-y", "@last9/mcp-server@latest"]를 추가하세요.

Windows

GitHub 릴리스에서 다운로드한 후 압축을 풀고 전체 경로를 지정하세요:

{
  "mcpServers": {
    "last9": {
      "command": "C:\\Users\\<user>\\AppData\\Local\\Programs\\last9-mcp-server.exe",
      "env": {
        "LAST9_REFRESH_TOKEN": "<your_refresh_token>"
      }
    }
  }
}

Windows에서는 NPM 경로가 더 쉽습니다 — 경로 관리가 필요 없습니다.

환경 변수

변수기본값설명
LAST9_REFRESH_TOKEN(필수)API 액세스의 리프레시 토큰
LAST9_DATASOURCE조직 기본값데이터소스/클러스터 이름 — 여러 Levitate 클러스터가 있을 때 유용
LAST9_API_HOSTapp.last9.ioAPI 호스트 재정의
LAST9_TOOLSETS모든 도구노출할 도구 세트(쉼표로 구분) (logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all). 별칭: LAST9_MCP_TOOLSETS
LAST9_MAX_GET_LOGS_ENTRIES5000청크된 get_logs 요청의 최대 항목 수
LAST9_USE_LOG_SEARCH_APIfalseget_logs 및 get_service_logs에 답변하기 위해 true를 설정하면 클라이언트 측 청킹 대신 서버 측 검색 호출 한 번으로 처리
LAST9_DEBUG_CHUNKINGfalseget_logs, get_service_logs, get_traces에 대한 청크 계획 세부 정보를 기록하려면 true을 설정
LAST9_DISABLE_TELEMETRYtrue내부 OTel 추적을 활성화하려면 false을 설정
OTEL_SDK_DISABLED—표준 OTel 환경 변수. LAST9_DISABLE_TELEMETRY을 재정의
OTEL_EXPORTER_OTLP_ENDPOINT—OTLP 수집기 엔드포인트 (텔레메트리 활성화 시에만)
OTEL_EXPORTER_OTLP_HEADERS—OTLP 인증 헤더 (텔레메트리 활성화 시에만)

할 수 있는 작업

서비스 상태

  • get_service_summary — 순위가 매겨진 플릿 (service, env) 행: 간격 요청 수, 처리량_rpm, HTTP 4xx/5xx 수, gRPC 오류 수
  • get_service_environments — 서비스에 사용 가능한 환경. 먼저 실행하세요 — 다른 APM 도구는 여기서 env가 필요합니다
  • get_service_performance_details — 전체 분석: 처리량, 오류율, p50/p90/p95/평균/최대, apdex, 가용성
  • get_service_operations_summary — HTTP 엔드포인트, DB 호출, 메시징, HTTP 클라이언트별로 그룹화된 작업
  • get_service_dependency_graph — 업스트림/다운스트림/인프라에 대한 처리량, 지연 시간, 오류율이 포함된 종속성 맵
  • get_apm_service_deviations — 현재 기간을 동일한 길이의 기준 기간과 비교: 회귀/개선, Apdex 조정, 최종 결과(플릿 또는 단일 서비스)
  • get_exceptions — 서비스 및 스팬 필터가 있는 서버 측 예외

데이터베이스 관측

데이터베이스 성능을 직접 분석하는 네 가지 도구로, OpenTelemetry 트레이스 스팬과 트레이스가 없는 경우 CloudWatch와 같은 인프라 메트릭에서 파생됩니다. 이미 OTel을 사용 중이라면 추가 계측이 필요 없습니다.

  • get_databases — 인프라 전반의 모든 데이터베이스 검색: DB 유형, 호스트, 처리량(쿼리/분), p95 지연 시간, 오류율, 종속 서비스 수. 또한 트레이스 계측 없이 CloudWatch와 같은 인프라 메트릭에서 데이터베이스를 검색 — 해당 행에는 트레이스 메트릭 대신 활동 값이 포함됩니다
  • get_database_slow_queries — 실제 가장 느린 쿼리 실행, 기간별 정렬, 전체 트레이스 드릴다운을 위한 트레이스 ID 포함
  • get_database_queries — 쿼리 패턴 및 집계: 쿼리 실행 빈도, 평균/p95 기간, 오류율
  • get_database_server_metrics — DB 호스트 자체의 서버 측 메트릭(CPU, 연결, 버퍼 적중률 — DB 시스템에 따라 다름)

PostgreSQL, MySQL, MongoDB, Redis, Aerospike 및 db_system 속성이 있는 OTel 트레이스가 있는 모든 것을 지원하며, CloudWatch와 같은 인프라 메트릭에서 검색된 데이터베이스도 지원합니다(해당 행에는 트레이스 메트릭 대신 활동 값이 포함됨).

Prometheus / PromQL

  • prometheus_range_query — 모든 메트릭에 대한 PromQL 범위 쿼리
  • prometheus_instant_query — 즉시 쿼리; avg_over_time, sum_over_time 같은 롤업 함수 사용
  • prometheus_label_values — 주어진 시리즈의 레이블 값
  • prometheus_labels — 시리즈에 사용 가능한 모든 레이블

LAST9_DATASOURCE을 설정하여 기본값이 아닌 다른 데이터소스/클러스터를 지정하세요.

로그

  • get_logs — 전체 JSON 파이프라인 로그 쿼리(집계, 필터, 필드 추출)
  • get_service_logs — 서비스의 원시 로그 라인, 심각도 및 본문 내용으로 필터링 가능
  • get_log_attributes — 시간 창에 대한 로그 스키마의 속성 전역 카탈로그
  • get_log_attributes_for_pipeline — 진행 중인 파이프라인에 실제로 존재하는 로그 필드(범위 검색), 각각의 정확한 filter_field 포함
  • get_drop_rules — Last9 제어 평면의 로그 드롭 규칙
  • add_drop_rule — 소스에서 로그 볼륨을 줄이기 위한 새 드롭 규칙 생성

트레이스

  • get_traces — 광범위한 검색 및 집계를 위한 JSON 파이프라인 트레이스 쿼리
  • get_service_traces — 정확한 트레이스 ID 또는 서비스 이름으로 트레이스 검색. 트레이스 ID가 있을 때 사용하세요 — 더 빠릅니다
  • get_trace_attributes — 트레이스 스키마의 속성 전역 카탈로그
  • get_trace_attributes_for_pipeline — 진행 중인 파이프라인에 실제로 존재하는 속성(범위 검색), 각각의 정확한 filter_field 포함
  • get_trace_attribute_values — 트레이스 속성의 고유 값, 선택적으로 파이프라인으로 범위 지정
  • get_trace_attribute_deviations — 두 경계 스팬 코호트(느림 vs 빠름, 오류 vs 비오류, 또는 두 시간 창) 간에 다른 속성 값의 순위. 상관관계이지 인과관계가 아닙니다
  • get_trace_waterfall — 간격 합집합 자체 시간, 가장 느린 스팬, 그래프 경고가 포함된 부모/자식 워터폴 형태의 정확한 트레이스 하나

변경 이벤트 및 알림

  • get_change_events — 배포, 구성 변경, 롤백. 인시던트를 변경 사항과 상호 연관
  • get_alert_groups — 메타데이터 레이블, 팀, 티어, 규칙 수가 포함된 구성된 Compass 알림 그룹 — 규칙이 0개인 그룹과 발화 중이 아닌 그룹 포함
  • get_alert_config — 알림 규칙 구성 — 이름, 심각도, 유형, 태그로 검색 가능
  • get_alerts — 시간 창 내에서 현재 발화 중인 알림
  • get_alert_rule_state — 시간 범위에 걸친 알림 규칙별 과거 발화 상태(1/0), rule_id로 그룹화. 알림 그룹, 규칙 이름, 레이블 필터, 상태로 필터링 가능.
  • get_notification_channels — 구성된 알림 채널(Slack, PagerDuty, 이메일 등)

사용자 지정 대시보드

  • list_dashboards — 조직의 모든 사용자 지정 대시보드: ID, 이름, 메타데이터
  • get_dashboard — ID별 전체 대시보드 정의, 패널 및 쿼리 포함
  • validate_dashboard — 저장된 대시보드 ID 또는 인라인 dashboard_definition에 대한 읽기 전용 린트 + 실행 + 분류, ≤24시간 창. 대시보드를 생성하거나 업데이트하지 않음
  • create_dashboard — 새 사용자 지정 대시보드를 한 번 생성(패널, 쿼리, 메타데이터). ID가 반환된 후 update_dashboard로 개선.
  • update_dashboard — ID별 기존 대시보드 개선(전체 교체, 읽기 전용 시스템 대시보드는 오류 반환)
  • delete_dashboard — ID별 사용자 지정 대시보드 삭제
  • list_dashboard_snapshots — 대시보드의 고정 시점 스냅샷(메타데이터만)
  • get_dashboard_snapshot — RCA/공유 보기를 위한 패널 데이터가 포함된 전체 고정 스냅샷
  • delete_dashboard_snapshot — ID별 고정 스냅샷 삭제

연속 프로파일링

조직에 연속 프로파일링이 활성화되어 있어야 합니다. 먼저 get_profile_services로 서비스를 검색한 다음 플레임그래프 또는 순위 함수를 가져오세요.

  • get_profile_services — 창에 프로파일링 데이터가 있는 서비스(쿼리 전 인덱스)
  • get_flamegraph — 단일 서비스의 중첩 플레임그래프 트리(cpu 기본값; alloc, wall도 가능)
  • get_top_functions — 단일 서비스의 가장 활발한 함수 자체 샘플 순위
  • get_profile_summary — 단일 서비스 프로필에 대한 짧은 자연어 분류

Grafana 대시보드

조직의 Grafana 인스턴스에 대한 읽기 전용 도구(Last9의 Grafana 프록시를 통해). 자격 증명 필드는 모델에 반환되지 않습니다. LAST9_TOOLSETS=grafana으로 활성화(또는 모든 도구를 위해 도구 세트를 설정하지 않은 상태로 유지).

  • grafana_search_dashboards — 제목 부분 문자열로 대시보드 검색 (페이지네이션됨; 한도에 도달하면 truncated: true)
  • grafana_get_dashboard — uid별 대시보드 요약 (패널, 변수, PromQL 대상); 원시 Grafana JSON은 full_json=true
  • grafana_list_folders — 폴더 트리
  • grafana_list_folder_dashboards — 한 폴더의 대시보드 (페이지네이션됨)
  • grafana_list_datasources — 자격 증명 없는 데이터소스 인벤토리

퍼지 이름 해석

  • did_you_mean — 에이전트가 엔터티 이름을 확신하지 못할 때, 카탈로그(서비스, 환경, 호스트, 데이터베이스, K8s 배포/네임스페이스, 작업)에서 가장 가까운 일치 항목을 반환합니다. 유사도 점수가 포함된 최대 3개의 제안. 이름 조회가 비어 있을 때 서버는 대부분의 도구 전에 자동으로 이를 호출합니다.

서비스 프로필

  • get_service_profile — 쿼리하기 전에 서비스 텔레메트리가 실제로 어떻게 보이는지: 어떤 신호가 존재하는지, 언어와 런타임, 배포 환경, 로그 형태, 그리고 해당되는 경우 권장 수집 수정. 에이전트가 트레이스가 없는 서비스에 대해 트레이스 도구를 건너뛰고, SeverityText이 비어 있을 때 로그 본문에서 심각도를 파싱하여 필터링으로 아무것도 찾지 못하는 대신 처리할 수 있게 합니다.

작동 방식

모든 응답에 딥 링크. 모든 도구는 deep_link 필드를 반환합니다 — 해당 정확한 쿼리와 시간 범위에 대한 Last9 대시보드로의 직접 URL. 에이전트가 링크를 제공하면 클릭하여 바로 이동할 수 있습니다.

도구 세트. 기본적으로 서버는 모든 도구를 노출합니다. 조사(로그/트레이스/메트릭/프로필)만 필요한 자동화 호스트는 LAST9_TOOLSETS=investigate을 설정(또는 --toolsets=investigate 전달)하여 클라이언트 측 대량 비활성화 없이 tools/list을 작게 유지할 수 있습니다. 명명된 팩: logs, traces, metrics, alerts, dashboards, profiles, grafana, investigate, all. 알 수 없는 이름은 빠르게 실패합니다. metrics 팩 단독으로는 list_datasources 또는 did_you_mean을 포함하지 않습니다 — 해당 발견 도우미가 필요하면 investigate을 사용(또는 도구 세트 결합)하세요.

도구 참조 리소스. 긴 logjson/tracejson/service-logs/metrics 매뉴얼은 MCP 리소스(last9://reference/logjson, last9://reference/tracejson, last9://reference/service_logs, last9://reference/metrics, last9://reference/investigation)이며, 항상 켜져 있는 도구 설명 텍스트가 아닙니다. 중요한 쿼리 규칙은 도구 설명에 유지되어 resources/read을 호출하지 않는 에이전트도 올바른 구성 지침을 얻습니다. 조직별 필드는 get_log_attributes / get_log_attributes_for_pipeline(및 트레이스 등가물)로 발견하세요 — 설명에 주입되지 않습니다.

청크된 대용량 결과. get_logs 및 get_traces은 잘라내기 대신 청킹을 통해 대용량 결과 세트를 처리합니다. 기본 한도는 로그 5000개 항목이며, LAST9_MAX_GET_LOGS_ENTRIES을 통해 구성 가능합니다.


개발

HTTP 모드, curl 테스트, 소스에서 빌드

HTTP 모드에서 실행

export LAST9_REFRESH_TOKEN="your_refresh_token"
export LAST9_HTTP=true
export LAST9_PORT=8080
./last9-mcp-server

서버는 http://localhost:8080/mcp에서 시작됩니다.

curl로 테스트

Streamable HTTP 핸들러는 상태 비저장 모드로 실행되므로 모든 요청이 독립적으로 처리됩니다. initialize 핸드셰이크와 Mcp-Session-Id 헤더는 선택 사항입니다 — 이를 보내는 클라이언트도 작동하며(헤더는 수락되고 무시됨), 클라이언트는 tools/list / tools/call으로 바로 건너뛸 수도 있습니다. 모든 도구는 독립적인 요청/응답 쿼리입니다. 서버는 서버→클라이언트 알림을 발행하지 않으므로 GET /mcp(SSE 스트림)은 405을 반환합니다.

# List tools — a session handshake is optional in stateless mode
curl -s -X POST http://localhost:8080/mcp \
    -H "Content-Type: application/json" \
    -H "Accept: application/json, text/event-stream" \
    -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'

# Call a tool
curl -s -X POST http://localhost:8080/mcp \
    -H "Content-Type: application/json" \
    -H "Accept: application/json, text/event-stream" \
    -d '{
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tools/call",
      "params": {
        "name": "get_service_logs",
        "arguments": {
          "service_name": "your-service-name",
          "lookback_minutes": 30,
          "limit": 10
        }
      }
    }'

소스에서 빌드

git clone https://github.com/last9/last9-mcp-server.git
cd last9-mcp-server
go build -o last9-mcp-server
LAST9_HTTP=true ./last9-mcp-server

LAST9_HTTP=true은 로컬 개발용입니다. 실제 사용에는 호스팅 HTTP 엔드포인트가 더 쉽습니다.


도구 참조

모든 매개변수, 시간 입력 표준 및 세부 정보

시간 입력

  • 절대 시간(start_time_iso/end_time_iso, 또는 time_iso)은 lookback_minutes보다 우선합니다.
  • 상대 창: lookback_minutes 사용.
  • 절대 창: RFC3339/ISO8601 사용 — 2026-02-09T15:04:05Z.
  • 레거시 YYYY-MM-DD HH:MM:SS은 호환성 목적으로만 허용됩니다.

get_exceptions

  • limit (정수, 선택): 최대 예외 수. 기본값: 20.
  • lookback_minutes (정수, 선택): 기본값: 60.
  • start_time_iso / end_time_iso (문자열, 선택): 절대 시간 범위.
  • service_name (문자열, 선택): 서비스별 필터.
  • span_name (문자열, 선택): 스팬 이름별 필터.
  • env (문자열, 선택): 환경별 필터.

get_service_summary

  • start_time_iso / end_time_iso (문자열, 선택)
  • env (문자열, 선택): PromQL 정규식. 기본값은 .*. 정확한 일치는 앵커 필요(예: ^prod$).
  • sort_by (문자열, 선택): request_count (기본값), throughput_rpm, http_4xx_count, http_5xx_count 또는 grpc_error_count.
  • limit (정수, 선택): 최대 순위 행 수. 생략 또는 0은 10; 100 초과 값은 100으로 제한.

get_service_environments

  • start_time_iso / end_time_iso (문자열, 선택)

다른 모든 APM 도구는 env 값이 필요합니다. 비어 있으면 "" 사용.

get_service_performance_details

  • service_name (문자열, 필수)
  • lookback_minutes (정수, 선택): 기본값: 60.
  • start_time_iso / end_time_iso (문자열, 선택)
  • env (문자열, 선택): 기본값은 prod.

get_service_operations_summary

  • service_name (문자열, 필수)
  • lookback_minutes (정수, 선택): 기본값: 60.
  • start_time_iso / end_time_iso (문자열, 선택)
  • env (문자열, 선택): 기본값은 prod.

get_service_dependency_graph

  • service_name (문자열, 선택)
  • lookback_minutes (정수, 선택): 기본값: 60.
  • start_time_iso / end_time_iso (문자열, 선택)
  • env (문자열, 선택): 기본값은 prod.

get_apm_service_deviations

  • service_name (문자열, 선택): 플릿 범위는 생략; 단일 서비스 및 해당 작업 상관 관계는 제공.
  • lookback_minutes (정수, 선택): 현재 창. 기본값: 60.
  • start_time_iso / end_time_iso (문자열, 선택): 명시적 현재 창.
  • baseline_start_time_iso / baseline_end_time_iso (문자열, 선택): 명시적 기준선. 기본값은 바로 앞의 동일 기간 창.
  • datasource (문자열, 선택): 비교를 하나의 데이터소스로 제한.
  • env (문자열, 선택): 기본값은 prod.
  • max_services / max_operations (정수, 선택): 기본 10, 각각 최대 10.

get_databases

  • env (문자열, 선택): 환경별 필터. 정규식 허용. 기본값: 모두.
  • lookback_minutes (정수, 선택): 기본값: 60. 창은 7일을 초과할 수 없습니다.
  • start_time_iso / end_time_iso (문자열, 선택)

get_database_slow_queries

  • db_system (문자열, 선택): 예: postgresql, mysql, mongodb, redis.
  • host (문자열, 선택): 데이터베이스 호스트(net_peer_name).
  • service_name (문자열, 선택): 호출 서비스 이름.
  • env (문자열, 선택)
  • min_duration_ms (부동 소수점, 선택): 최소 쿼리 기간(ms).
  • lookback_minutes (정수, 선택): 기본값: 60.
  • start_time_iso / end_time_iso (문자열, 선택)
  • limit (정수, 선택): 기본값: 20.

get_database_queries

  • db_system (문자열, 선택)
  • host (문자열, 선택)
  • service_name (문자열, 선택)
  • env (문자열, 선택)
  • lookback_minutes (정수, 선택): 기본값: 60.
  • start_time_iso / end_time_iso (문자열, 선택)
  • limit (정수, 선택): 기본값: 20.

get_database_server_metrics

  • db_system (문자열, 필수): 예: postgresql, mysql, mongodb, redis, aerospike.
  • host (문자열, 선택)
  • lookback_minutes (정수, 선택): 기본값: 60.
  • start_time_iso / end_time_iso (문자열, 선택)

prometheus_range_query

  • query (문자열, 필수): PromQL 쿼리.
  • start_time_iso / end_time_iso (문자열, 선택): 기본값은 지난 60분.
  • lookback_minutes (부동 소수점, 선택): 기본값: 60.

prometheus_instant_query

  • query (문자열, 필수)
  • time_iso (문자열, 선택): 기본값은 현재.
  • lookback_minutes (부동 소수점, 선택)

prometheus_label_values

  • match_query (문자열, 선택): PromQL 필터.
  • label (문자열, 필수): 레이블 이름.
  • start_time_iso / end_time_iso (문자열, 선택)

prometheus_labels

  • match_query (문자열, 선택): PromQL 필터.
  • start_time_iso / end_time_iso (문자열, 선택)

get_logs

  • logjson_query (배열, 필수): JSON 파이프라인 쿼리.
  • lookback_minutes (정수, 선택): 기본값: 5.
  • start_time_iso / end_time_iso (문자열, 선택)
  • limit (정수, 선택): 서버 기본값: 5000.
  • index (문자열, 선택): physical_index:<name> 또는 rehydration_index:<block_name>.

로그 기반 서비스 인벤토리의 경우 먼저 physical_index_service_count을 쿼리하세요:

sum by (name, service_name, env) (physical_index_service_count{destination="logs"})

service_name을 ServiceName으로, env을 환경으로(존재할 때), name을 물리적 인덱스 이름으로 사용하세요. name="default"이면 index을 생략하세요. 사용자가 선택한 비기본 물리적 인덱스의 경우 index: "physical_index:<name>"을 전달하세요. 백엔드가 명시적 물리적 인덱스 필터링을 거부하면 index 없이 재시도하고 해당 백엔드에서 명시적 물리적 인덱스 필터링을 사용할 수 없다고 보고하세요.

get_service_logs

  • service_name (문자열, 필수)
  • lookback_minutes (정수, 선택): 기본값: 60.
  • limit (정수, 선택): 기본값: 20.
  • env (문자열, 선택)
  • severity_filters (배열, 선택): 예: ["error", "warn"]. OR 논리.
  • body_filters (배열, 선택): 예: ["timeout", "failed"]. OR 논리.
  • start_time_iso / end_time_iso (문자열, 선택)
  • index (문자열, 선택)

여러 필터 유형은 AND로 결합됩니다. 각 배열은 내부적으로 OR을 사용합니다. 먼저 get_logs을 사용하여 광범위한 집계 수를 확인하고, 서비스/환경/인덱스 및 작은 샘플 세트로 좁힌 후에만 get_service_logs을 사용하세요.

get_log_attributes

  • lookback_minutes (정수, 선택): 기본값: 15.
  • start_time_iso / end_time_iso (문자열, 선택)
  • region (문자열, 선택)
  • index (문자열, 선택)

get_log_attributes_for_pipeline

  • pipeline (배열, 필수): 발견 범위를 좁히기 위한 이전 필터 단계, 예: [{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].
  • lookback_minutes (정수, 선택): 기본값: 15.
  • start_time_iso / end_time_iso (문자열, 선택)
  • region (문자열, 선택)
  • index (문자열, 선택)

get_drop_rules

매개변수 없음. GET /otel_settings/drop?region=...을 통해 드롭 규칙을 나열합니다.

add_drop_rule

  • name (문자열, 필수)
  • filters (배열, 필수): 각 필터: key, value, operator (equals/not_equals), conjunction (and).
  • 필터 키는 attributes["key_name"] 또는 resource.attributes["key_name"]을 사용해야 합니다 (Last9 API 요구 사항).
  • POST /otel_settings/drop?region=...&cluster_id=...을 통해 규칙을 생성합니다.

get_traces

광범위한 검색 및 집계에 사용합니다. 정확한 트레이스 ID 조회는 get_service_traces을 사용하세요.

  • tracejson_query (배열, 필수)
  • start_time_iso / end_time_iso (문자열, 선택)
  • lookback_minutes (정수, 선택): 기본값: 60.
  • limit (정수, 선택): 기본값: 5000.

get_service_traces

trace_id 또는 service_name 중 정확히 하나가 필요합니다.

  • trace_id (문자열, 선택): 기본 조회 기간: 72시간.
  • service_name (문자열, 선택): 기본 조회 기간: 60분.
  • lookback_minutes (정수, 선택)
  • start_time_iso / end_time_iso (문자열, 선택)
  • limit (정수, 선택): 기본값: 10.
  • env (문자열, 선택)

get_trace_attributes

  • lookback_minutes (정수, 선택): 기본값: 15.
  • start_time_iso / end_time_iso (문자열, 선택)
  • region (문자열, 선택)

get_trace_attributes_for_pipeline

  • pipeline (배열, 필수): 검색 범위를 좁히기 위한 이전 필터 단계 (예: [{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}]).
  • lookback_minutes (정수, 선택): 기본값: 15.
  • start_time_iso / end_time_iso (문자열, 선택)
  • region (문자열, 선택)

get_trace_attribute_values

  • tag_name (문자열, 필수): get_trace_attributes의 속성 이름 (예: resource_department 또는 attributes['http.method']).
  • pipeline (배열, 선택): 값의 범위를 좁히기 위한 이전 필터 단계; 전역 값은 생략.
  • lookback_minutes (정수, 선택): 기본값: 15.
  • start_time_iso / end_time_iso (문자열, 선택): 과거 RFC3339 경계; lookback_minutes보다 우선합니다.
  • region (문자열, 선택)

get_trace_attribute_deviations

  • comparison_mode (문자열, 필수): latency, errors 또는 time.
  • service_name (문자열, 필수)
  • environment (문자열, 필수): 정확한 deployment.environment 값.
  • operation (문자열, 선택)
  • filters (배열, 선택): 트레이스 JSON 필터 조건.
  • candidate_attributes (배열, 선택): 최대 8개; 제한된 검색은 생략.
  • latency_threshold_ms (숫자, 선택): latency 모드에 필요; 다른 모드에서는 거부됨.
  • start_time_iso / end_time_iso (문자열, 선택)
  • lookback_minutes (정수, 선택): 기본값: 15. 최대: 15.
  • baseline_start_time_iso / baseline_end_time_iso (문자열, 선택): time 모드에 필요; 대상 창과 겹치지 않고 기간이 동일해야 합니다.
  • minimum_cohort_size (정수, 선택): 기본값: 100. 최소: 20.
  • minimum_value_support (정수, 선택): 기본값: 20. 최소: 10.
  • limit (정수, 선택): 기본값: 10. 최대: 10.

동반 백엔드 기능이 활성화되어 있어야 합니다.

get_trace_waterfall

  • trace_id (문자열, 필수)
  • environment (문자열, 선택)
  • start_time_iso / end_time_iso (문자열, 선택)
  • lookback_minutes (정수, 선택): 기본값: 4320 (72시간).
  • selected_span_id (문자열, 선택): 해당 스팬에 대한 속성, 이벤트 및 링크만 반환합니다.
  • max_spans (정수, 선택): 기본값: 500. 최대: 1000.

investigation-evidence/v1 봉투를 반환합니다; 워터폴은 data 아래에 있습니다.

get_change_events

  • start_time_iso / end_time_iso (문자열, 선택)
  • lookback_minutes (정수, 선택): 기본값: 60.
  • service_name (문자열, 선택)
  • env (문자열, 선택)
  • event_name (문자열, 선택): 먼저 이 매개변수 없이 호출하여 available_event_names를 얻으세요.

get_alert_groups

변경 보드 / 라벨 커버리지 감사를 위해 구성된 Compass 알림 그룹 인벤토리. 규칙이 0개인 그룹과 발화하지 않는 그룹을 포함합니다. PromQL은 반환하지 않습니다.

  • alert_group_name / alert_group_type / data_source_name (문자열, 선택): 대소문자 구분 없는 부분 문자열 일치.
  • team / tier (문자열, 선택): 구성된 메타데이터에 대한 대소문자 구분 없는 정확한 일치.
  • label_key + label_value (문자열, 선택): 함께 설정해야 합니다. 하나의 metadata.labels 쌍(키와 값 모두)에 대한 대소문자 구분 없는 정확한 일치.

{"count":N,"groups":[...]}, id, name, type, entity_class, team, tier, metadata.labels 및 규칙 수를 포함하는 간결한 JSON을 반환합니다. 빈 team / labels는 설정되지 않음을 의미합니다.

get_alert_config

  • search_term (문자열, 선택): 이름, 그룹, 데이터 소스, 태그에 대한 자유 텍스트 검색.
  • rule_name (문자열, 선택)
  • severity (문자열, 선택)
  • rule_type (문자열, 선택): static 또는 anomaly.
  • alert_group_name / alert_group_type / data_source_name (문자열, 선택)
  • tags (배열, 선택): 모두 일치해야 합니다 (AND 논리).

get_alerts

  • time_iso (문자열, 선택): RFC3339 형식의 평가 시간.
  • window (정수, 선택): 조회 기간(초). 기본값: 900. 범위: 60–86400.
  • lookback_minutes (정수, 선택): 범위: 1–1440.

get_alert_rule_state

  • start_time (정수, 필수): 범위 시작의 Unix epoch (포함).
  • end_time (정수, 필수): 범위 끝의 Unix epoch (포함).
  • step (정수, 필수): 샘플 간 해상도(초). 샘플 수 ((end_time - start_time) / step + 1)는 100으로 제한됩니다.
  • alert_group_id (문자열, 선택): 알림 그룹 ID로 필터링.
  • rule_name (문자열, 선택): 규칙 이름에 대한 정규식 필터.
  • alert_group_name (문자열, 선택): 알림 그룹 이름에 대한 정규식 필터.
  • label_filters (문자열, 선택): 쉼표로 구분된 key=value 라벨 필터.
  • state (문자열, 선택): 상태로 필터링 (예: firing).

rule_id -> [{timestamp, is_firing}]의 JSON 맵을 반환합니다. 업스트림 응답에 규칙이 없는 타임스탬프는 is_firing=0로 보고됩니다 — 이는 "발화로 관찰되지 않음"을 의미하며, 확인된 정상 상태가 아닙니다.

get_notification_channels

매개변수 없음. 구성된 모든 알림 채널(Slack, PagerDuty, 이메일, 웹훅 등)을 반환합니다.

did_you_mean

  • query (문자열, 필수): 검색할 이름 — 부분, 오타 또는 약어.
  • type (문자열, 선택): 엔티티 유형으로 제한: service, environment, host, database, k8s_deployment, k8s_namespace, job.

유사도 점수와 함께 최대 3개의 가장 가까운 일치 항목을 반환합니다. 엔티티 이름이 불확실한 경우 도구 호출 전에 이 기능을 사용하세요. 이전 호출이 빈 결과를 반환한 경우 재시도 전에 이 기능을 시도하세요.

get_service_profile

  • service_name (문자열, 필수): 텔레메트리 프로필을 도출할 서비스.
  • datasource (문자열, 선택): 데이터 소스 이름. 기본값은 생략.

짧은 조사 브리핑 후 전체 프로필을 원시 JSON으로 반환합니다: 신호 존재(logs/traces/metrics를 present, absent 또는 unknown로), 언어 및 런타임, 배포 환경, 로그 signal_shape (log_format, severity_set, level_field), 그리고 해당되는 경우 권장 수집 수정 사항. 업스트림에서 파생되며 약 15분 TTL로 캐시됩니다.

서비스 범위 조사 전에 호출하여 도구 선택이 서비스의 실제 텔레메트리와 일치하도록 하세요 — traces가 absent인 경우 트레이스 도구를 건너뛰고, severity_set가 none 또는 partial인 경우 severity_filters 대신 로그 본문의 level_field에서 심각도를 파싱하세요. metrics는 항상 unknown이고 dependencies는 v1에서 채워지지 않습니다. logs와 traces가 모두 absent인 경우, 서비스가 모니터링되지 않는다고 결론 내리기 전에 did_you_mean로 이름을 확인하세요.

list_dashboards

매개변수 없음. 조직의 모든 사용자 정의 대시보드를 id, name 및 메타데이터가 포함된 JSON 배열로 반환합니다.

get_dashboard

  • id (문자열, 필수): 대시보드 UUID.
  • region (문자열, 선택): 패널 쿼리 생성을 위한 리전. 기본값은 구성된 데이터 소스 리전.

validate_dashboard

읽기 전용. 대시보드를 생성하거나 업데이트하지 않습니다. dashboard_id 또는 dashboard_definition 중 정확히 하나를 허용합니다.

  • dashboard_id (문자열, 선택): 검증할 저장된 대시보드 UUID.
  • dashboard_definition (객체, 선택): 인라인 저장되지 않은 대시보드 본문 (실제 드라이 런).
  • start_time_iso / end_time_iso (문자열, 선택): 검증 창 (RFC3339). ≤ 24시간이어야 합니다.
  • region (문자열, 선택): 패널 쿼리 실행을 위한 리전.

dashboard_validation/v1를 반환합니다: 패널별 린트 + 실행 분류 (data / no_data / invalid / error). 1일차 빈 결과는 진단 프로브 없이 valid_no_data로 분류됩니다.

create_dashboard

신규 전용. 이 호출이 dashboard.id를 반환한 후에는 update_dashboard로 개선하세요 — 패널을 추가, 축소 또는 수정하기 위해 다시 생성하지 마세요.

  • dashboard (객체, 필수): name 및 panels[]가 포함된 대시보드 정의. 각 패널에는 name, version, layout (x, y, w, h), visualization.type 및 queries[]가 필요합니다.
  • metadata (객체, 선택): 대시보드 메타데이터 — _category 및 _type 필드 (예: {"_category":"custom","_type":"metrics"}).

update_dashboard

생성 후 이 기능을 선호합니다. ID로 전체 교체 (생성과 동일한 본문).

  • id (문자열, 필수): 업데이트할 대시보드 UUID.
  • dashboard (객체, 필수): 전체 교체 대시보드 본문 (생성과 동일한 형태).
  • metadata (객체, 선택): 교체 메타데이터. 읽기 전용 시스템 대시보드는 403 오류를 반환합니다.

delete_dashboard

  • id (문자열, 필수): 삭제할 대시보드 UUID. 읽기 전용 시스템 대시보드는 삭제할 수 없습니다.

list_dashboard_snapshots

  • dashboard_id (문자열, 필수): 스냅샷을 나열할 대시보드 UUID.

메타데이터만 반환합니다 (id, name, expires_at 등). 고정 패널 데이터에는 get_dashboard_snapshot를 사용하세요.

get_dashboard_snapshot

  • id (문자열, 필수): 스냅샷 UUID.

dashboard_definition, panel_data, time_range 및 variables를 포함한 전체 고정 스냅샷을 반환합니다.

delete_dashboard_snapshot

  • id (문자열, 필수): 삭제할 스냅샷 UUID.

get_profile_services

  • lookback_minutes / start_time_iso / end_time_iso (선택): 창; 조회 기간 또는 명시적 ISO 경계 선호 (기본 60분).
  • region (문자열, 선택): 리전 재정의.

창에 프로파일링 데이터가 있는 서비스를 반환합니다. get_flamegraph / get_top_functions / get_profile_summary 전에 이 기능을 호출하세요.

get_flamegraph

  • service (문자열, 필수): get_profile_services의 서비스 이름.
  • profile_type (문자열, 선택): cpu (기본값), alloc 또는 wall. 창을 비교할 때 유형을 고정하세요.
  • env / cluster / namespace / runtime (문자열, 선택): 범위 필터.
  • limit (숫자, 선택): 최대 집계 스택 행 (기본 1000, 최대 10000).
  • lookback_minutes / start_time_iso / end_time_iso / region (선택).

중첩 플레임그래프 트리를 반환합니다 (name / value / self / children). truncated: true는 API 행 제한에 도달했음을 의미합니다.

get_top_functions

get_flamegraph와 동일한 필터. 가장 핫한 함수의 자체 샘플 순위를 반환합니다. 잘릴 수 있습니다; truncated를 확인하세요.

get_profile_summary

get_flamegraph와 동일한 필터. 서비스에 대한 프로필의 짧은 자연어 트리아지를 반환합니다.

grafana_search_dashboards

  • query (문자열, 선택): 제목 부분 문자열. 비어 있으면 광범위하게 나열됩니다 (5,000행 제한 적용).

{"dashboards":[…], "truncated":bool}, uid, title, uri, url, type, tags를 반환합니다. uid를 grafana_get_dashboard와 함께 사용하세요.

grafana_get_dashboard

  • uid (문자열, 필수): Grafana 대시보드 uid.
  • full_json (부울, 선택): true인 경우 필터링된 요약 대신 원시 Grafana JSON을 반환합니다. 기본 요약: 버전, 태그, 템플릿 변수, 그리고 각 패널의 유형/데이터소스/gridPos/promQL 대상. 알 수 없는 플러그인 패널 유형은 unsupportedPanelTypes에 나타납니다.

grafana_list_folders

매개변수 없음. 폴더 트리를 반환합니다.

grafana_list_folder_dashboards

  • folder_uid (문자열, 필수): Grafana 폴더 uid.

해당 폴더의 대시보드에 대한 {"dashboards":[…], "truncated":bool}를 반환합니다 (최대 5,000개까지 페이지네이션).

grafana_list_datasources

매개변수 없음. 데이터소스의 안전한 프로젝션을 반환합니다 (자격 증명 필드 없음).


테스트

통합 테스트 설정 및 지침은 TESTING.md를 참조하세요.


MseeP.ai Security Assessment Badge