Last9
공식실시간 프로덕션 컨텍스트(로그, 메트릭, 트레이스)를 로컬 환경으로 원활하게 가져와 코드를 더 빠르게 자동 수정합니다.
Last9 MCP(으)로 무엇을 할 수 있나요?
어시스턴트에게 Last9의 실시간 로그, 트레이스, 메트릭스를 사용하여 프로덕션 인시던트를 조사하도록 요청하세요.
- 서비스 상태 순위 지정 —
get_service_summary를 사용하여 요청 수, 처리량, 그리고 전체 서비스의 4xx/5xx 오류를 확인하세요. - 느린 데이터베이스 쿼리 찾기 —
get_database_slow_queries를 사용하여 실제 가장 느린 실행과 추적 ID를 가져와 상세 조사하세요. - 서비스 로그 가져오기 —
get_service_logs를 사용하여 심각도와 본문 내용으로 필터링된 원시 로그 줄을 가져오세요. - 단일 요청 추적 —
get_trace_waterfall을 사용하여 정확한 추적 ID에 대한 부모/자식 워터폴을 확인하세요. - 알림 상태 확인 —
get_alert_rule_state를 사용하여 시간 범위에 따른 각 알림 규칙의 발생 이력을 확인하세요. - 대시보드 관리 —
create_dashboard를 사용하여 패널과 쿼리로 사용자 지정 대시보드를 구축하세요.
문서
Last9 MCP 서버

당신의 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
Settings > MCP > Add New MCP Server:
{
"mcpServers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
Connect를 클릭하고 OAuth를 완료하세요.
VS Code
v1.99+ 필요. Command Palette를 열고 → MCP: Add Server, URL을 붙여넣고 인증하세요.
또는 settings.json에서 직접:
{
"mcp": {
"servers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
}
Windsurf
Settings > Cascade > Open MCP Marketplace > 톱니바퀴 아이콘(mcp_config.json):
{
"mcpServers": {
"last9": {
"serverUrl": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
Claude Web/Desktop
Settings > Connectors > Add custom connector. 이름을 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 Releases에서 다운로드:
| 플랫폼 | 아카이브 |
|---|---|
| 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 |
리프레시 토큰 받기
토큰 생성은 관리자만 가능합니다.
- API 액세스로 이동
- 쓰기 권한으로 Generate Token 클릭
- 복사
클라이언트 설정
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 Web/Desktop | Settings > Developer > Edit Config (claude_desktop_config.json) |
| Cursor | Settings > Cursor Settings > MCP > Add New Global MCP Server |
| Windsurf | Settings > Cascade > MCP Marketplace > 톱니바퀴 아이콘(mcp_config.json) |
| VS Code | settings.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 Releases에서 다운로드한 후 압축을 풀고 전체 경로를 지정하세요:
{
"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_HOST | app.last9.io | API 호스트 재정의 |
LAST9_TOOLSETS | 모든 도구 | 쉼표로 구분된 노출할 도구 세트 (logs, traces, metrics, alerts, dashboards, investigate, all). 별칭: LAST9_MCP_TOOLSETS |
LAST9_MAX_GET_LOGS_ENTRIES | 5000 | 청크 처리된 get_logs 요청의 최대 항목 수 |
LAST9_DEBUG_CHUNKING | false | get_logs, get_service_logs, get_traces에 대한 청크 계획 세부 정보를 기록하려면 true 설정 |
LAST9_DISABLE_TELEMETRY | true | 내부 OTel 추적을 활성화하려면 false 설정 |
OTEL_SDK_DISABLED | — | 표준 OTel 환경 변수. LAST9_DISABLE_TELEMETRY 재정의 |
OTEL_EXPORTER_OTLP_ENDPOINT | — | OTLP 수집기 엔드포인트 (텔레메트리 활성화 시에만) |
OTEL_EXPORTER_OTLP_HEADERS | — | OTLP 인증 헤더 (텔레메트리 활성화 시에만) |
제공 기능
서비스 상태
get_service_summary— 순위가 매겨진 fleet(service, env)행: interval request_count, throughput_rpm, HTTP 4xx/5xx 카운트, gRPC 오류 카운트get_service_environments— 서비스에 사용 가능한 환경. 먼저 실행하세요 — 다른 APM 도구는 여기의env이 필요합니다get_service_performance_details— 전체 분석: throughput, error rate, p50/p90/p95/avg/max, apdex, 가용성get_service_operations_summary— HTTP 엔드포인트, DB 호출, 메시징, HTTP 클라이언트별로 그룹화된 작업get_service_dependency_graph— 업스트림/다운스트림/인프라에 대한 throughput, latency, error rate를 포함한 의존성 맵get_apm_service_deviations— 현재 시간 창을 동일 기간의 기준선과 비교: 회귀/개선, Apdex 조정, 최종 결과(fleet 또는 단일 서비스)get_exceptions— 서비스 및 스팬 필터가 적용된 서버 측 예외
데이터베이스 관측성
데이터베이스 성능을 직접 분석하는 네 가지 도구로, OpenTelemetry 트레이스 스팬에서 파생됩니다. 이미 OTel을 사용 중이라면 추가 계측이 필요 없습니다.
get_databases— 인프라 전반의 모든 데이터베이스 발견: DB 유형, 호스트, throughput(쿼리/분), p95 지연 시간, 오류율, 의존 서비스 수get_database_slow_queries— 실제 가장 느린 쿼리 실행, 기간순 정렬, 전체 트레이스 조회를 위한 트레이스 ID 포함get_database_queries— 쿼리 패턴 및 집계: 쿼리 실행 빈도, 평균/p95 기간, 오류율get_database_server_metrics— DB 호스트 자체의 서버 측 메트릭(CPU, 연결, 버퍼 적중률 — DB 시스템에 따라 다름)
PostgreSQL, MySQL, MongoDB, Redis, Aerospike 및 db_system 속성이 있는 OTel 트레이스를 지원하는 모든 시스템을 지원합니다.
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 Control Plane의 로그 드롭 규칙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_config— 알림 규칙 구성 — 이름, 심각도, 유형, 태그로 검색 가능get_alerts— 시간 창 내 현재 발생 중인 알림get_alert_rule_state— 시간 범위에 걸친 알림 규칙별 과거 발생 상태(1/0),rule_id으로 그룹화. 알림 그룹, 규칙 이름, 라벨 필터, 상태로 필터링 가능get_notification_channels— 구성된 알림 채널(Slack, PagerDuty, 이메일 등)
커스텀 대시보드
list_dashboards— 조직의 모든 커스텀 대시보드: ID, 이름, 메타데이터get_dashboard— ID별 전체 대시보드 정의, 패널 및 쿼리 포함create_dashboard— 패널, 쿼리, 메타데이터가 포함된 새 커스텀 대시보드 생성update_dashboard— ID로 기존 대시보드 업데이트(읽기 전용 시스템 대시보드는 오류 반환)delete_dashboard— ID로 커스텀 대시보드 삭제list_dashboard_snapshots— 대시보드의 특정 시점 스냅샷(메타데이터만)get_dashboard_snapshot— RCA/공유 가능한 뷰를 위한 패널 데이터가 포함된 전체 스냅샷delete_dashboard_snapshot— ID로 스냅샷 삭제
퍼지 이름 해석
did_you_mean— 에이전트가 엔티티 이름을 확신하지 못할 때 카탈로그에서 가장 가까운 일치 항목을 반환(서비스, 환경, 호스트, 데이터베이스, K8s 배포/네임스페이스, 작업). 유사도 점수가 포함된 최대 3개 제안. 이름 조회가 빈 결과를 반환할 때 대부분의 도구 앞에서 서버가 자동으로 호출합니다.
작동 방식
모든 응답에 딥 링크. 모든 도구는 deep_link 필드를 반환합니다 — 해당 쿼리와 시간 범위에 대한 Last9 대시보드로의 직접 URL. 에이전트가 링크를 전달하면 클릭만 하면 됩니다.
도구 세트. 기본적으로 서버는 모든 도구를 노출합니다. 조사(로그/트레이스/메트릭)만 필요한 자동화 호스트는 LAST9_TOOLSETS=investigate을 설정(또는 --toolsets=investigate 전달)하여 클라이언트 측 대량 비활성화 없이 tools/list을 작게 유지할 수 있습니다. 명명된 팩: logs, traces, metrics, alerts, dashboards, 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)로 제공되며, 항상 활성화된 도구 설명 텍스트가 아닙니다. 중요한 쿼리 규칙은 도구 설명에 유지되어 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 핸들러는 무상태(stateless) 모드로 실행되므로 모든 요청이 독립적으로 처리됩니다. 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.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(배열, 선택): 값 범위를 제한하기 위한 이전 필터 단계. 생략하면 전역 값을 사용합니다.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 봉투(envelope)를 반환하며, 워터폴은 data 아래에 있습니다.
get_change_events
start_time_iso/end_time_iso(문자열, 선택)lookback_minutes(정수, 선택): 기본값: 60.service_name(문자열, 선택)env(문자열, 선택)event_name(문자열, 선택): 먼저 이 매개변수 없이 호출하여available_event_names을 가져옵니다.
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개의 가장 가까운 일치 항목을 반환합니다. 엔터티 이름이 불확실한 도구 호출 전에 이를 사용하세요. 이전 호출이 빈 결과를 반환한 경우, 재시도하기 전에 이 기능을 시도하세요.
대시보드 목록(list_dashboards)
매개변수 없음. 조직의 모든 사용자 지정 대시보드를 id, name 및 메타데이터가 포함된 JSON 배열로 반환합니다.
대시보드 가져오기(get_dashboard)
id(문자열, 필수): 대시보드 UUID.region(문자열, 선택 사항): 패널 쿼리 채우기를 위한 지역. 기본값은 구성된 데이터 소스 지역입니다.
대시보드 생성(create_dashboard)
dashboard(객체, 필수):name및panels[]이 포함된 대시보드 정의. 각 패널에는name,version,layout(x,y,w,h),visualization.type,queries[]이 필요합니다.metadata(객체, 선택 사항): 대시보드 메타데이터 —_category및_type필드(예:{"_category":"custom","_type":"metrics"}).
대시보드 업데이트(update_dashboard)
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.
테스트
통합 테스트 설정 및 지침은 TESTING.md를 참조하세요.
