Last9
공식실시간 프로덕션 컨텍스트(로그, 메트릭, 트레이스)를 로컬 환경으로 원활하게 가져와 코드를 더 빠르게 자동 수정합니다.
Last9 MCP(으)로 무엇을 할 수 있나요?
- 서비스 상태 및 성능 확인 —
get_service_summary를 사용하여 서비스 전반의 처리량, 오류율, 지연 시간 요약을 요청하거나,get_service_performance_details를 사용하여 특정 서비스의 p50/p95/p99, Apdex, 가용성을 자세히 분석합니다. - 데이터베이스 성능 조사 —
get_databases로 모든 데이터베이스와 해당 p95 지연 시간을 확인한 후,get_database_slow_queries로 가장 느린 쿼리 실행을 검색하거나get_database_queries로 집계된 쿼리 패턴을 검색하여 병목 지점을 파악합니다. - 실제 스키마로 로그 및 트레이스 쿼리 — 로그(
get_logs) 또는 트레이스(get_traces)에 대해 JSON 파이프라인 쿼리를 실행하고,get_log_attributes또는get_trace_attributes_for_pipeline을 사용하여 사용 가능한 필드를 검색하여 어시스턴트가 정확한 데이터 형태를 알 수 있도록 합니다. - 최근 변경 사항과 인시던트 연관 분석 —
get_change_events를 사용하여 시간 범위 내의 배포, 구성 변경, 롤백을 나열하고,get_alerts와 교차 참조하여 어떤 알림이 언제 발생했는지 확인합니다. - 메트릭에 PromQL 쿼리 실행 — 범위 또는 즉시 PromQL 쿼리(
prometheus_range_query,prometheus_instant_query)를 실행하고,prometheus_labels및prometheus_label_values로 사용 가능한 레이블을 탐색합니다. - 모호한 엔터티 이름 해결 — 서비스, 환경 또는 데이터베이스 이름을 찾을 수 없는 경우,
did_you_mean을 사용하여 카탈로그에서 가장 가까운 일치 항목을 가져온 후 원래 도구 호출을 다시 시도합니다.
문서
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
설정 > 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 Web/Desktop
설정 > 커넥터 > 사용자 정의 커넥터 추가. 이름을 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 |
새로 고침 토큰 얻기
관리자만 토큰을 생성할 수 있습니다.
- API 액세스로 이동
- 쓰기 권한으로 토큰 생성 클릭
- 복사
클라이언트 구성
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 | 설정 > 개발자 > 구성 편집 (claude_desktop_config.json) |
| Cursor | 설정 > Cursor 설정 > MCP > 새 글로벌 MCP 서버 추가 |
| Windsurf | 설정 > Cascade > MCP 마켓플레이스 > 톱니바퀴 아이콘 (mcp_config.json) |
| VS Code | { "mcp": { "servers": { ... } } }에서 settings.json로 감싸기 — 세부 정보 |
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_HOST | app.last9.io | API 호스트 재정의 |
LAST9_MAX_GET_LOGS_ENTRIES | 5000 | 청크된 get_logs 요청의 최대 항목 수 |
LAST9_DEBUG_CHUNKING | false | true로 설정하여 get_logs, get_service_logs, get_traces에 대한 청크 계획 세부 정보 기록 |
LAST9_DISABLE_TELEMETRY | true | false로 설정하여 내부 OTel 추적 활성화 |
OTEL_SDK_DISABLED | — | 표준 OTel 환경 변수. LAST9_DISABLE_TELEMETRY 재정의 |
OTEL_EXPORTER_OTLP_ENDPOINT | — | OTLP 수집기 엔드포인트 (원격 측정이 활성화된 경우에만) |
OTEL_EXPORTER_OTLP_HEADERS | — | OTLP 인증 헤더 (원격 측정이 활성화된 경우에만) |
가능한 작업
서비스 상태
get_service_summary— 모든 서비스의 처리량, 오류율, p95 응답 시간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_exceptions— 서비스 및 스팬 필터가 있는 서버 측 예외
데이터베이스 관측 가능성
OpenTelemetry 트레이스 스팬에서 파생된 데이터베이스 성능을 직접 확인하는 네 가지 도구. 이미 OTel을 사용 중이라면 추가 계측이 필요 없습니다.
get_databases— 인프라 전체의 모든 데이터베이스 검색: DB 유형, 호스트, 처리량(쿼리/분), 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 제어 평면의 로그 삭제 규칙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_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로 사용자 정의 대시보드 삭제
퍼지 이름 확인
did_you_mean— 에이전트가 엔터티 이름을 확신하지 못할 때, 카탈로그(서비스, 환경, 호스트, 데이터베이스, K8s 배포/네임스페이스, 작업)에서 가장 가까운 일치 항목을 반환합니다. 유사도 점수와 함께 최대 3개의 제안. 이름 조회가 비어 있을 때 대부분의 도구 전에 서버가 자동으로 호출합니다.
작동 방식
모든 응답에 딥 링크. 모든 도구는 deep_link 필드를 반환합니다 — 정확한 쿼리 및 시간 범위에 대한 Last9 대시보드로의 직접 URL입니다. 에이전트가 링크를 건네주면 클릭하여 바로 이동할 수 있습니다.
실시간 속성 캐싱. 시작 시 서버는 데이터에서 실제 로그 및 트레이스 속성 이름을 가져와 도구 설명에 포함시킵니다. 즉, AI 어시스턴트는 일반 목록이 아닌 스키마에 존재하는 필드를 알 수 있습니다. 캐시는 2시간마다 새로 고쳐집니다.
청크된 대용량 결과. 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로 테스트
스트리밍 가능 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(문자열, 선택 사항): 기본값은prod입니다.
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_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
매개변수 없음.
add_drop_rule
name(문자열, 필수)filters(배열, 필수): 각 필터:key,value,operator(equals/not_equals),conjunction(and).
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_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. 읽기 전용 시스템 대시보드는 삭제할 수 없습니다.
테스트
통합 테스트 설정 및 지침은 TESTING.md를 참조하세요.
