Last9
resmiGerçek zamanlı üretim bağlamını—loglar, metrikler ve izler—yerel ortamınıza sorunsuz bir şekilde taşıyarak kodu daha hızlı otomatik düzeltin.
Last9 MCP ile neler yapabilirsiniz?
Asistanınızdan, Last9'dan canlı günlükler, izler ve metrikler kullanarak üretim olaylarını incelemesini isteyin.
- Hizmet sağlığını sırala —
get_service_summarykullanarak filonuzdaki istek sayılarını, iş hacmini ve 4xx/5xx hatalarını görün. - Yavaş veritabanı sorgularını bulun —
get_database_slow_querieskullanarak gerçek en yavaş çalıştırmaları ve incelemek için iz kimliklerini çekin. - Hizmet günlüklerini çekin —
get_service_logskullanarak önem düzeyine ve gövde içeriğine göre filtrelenmiş ham günlük satırlarını getirin. - Tek bir isteği izleyin —
get_trace_waterfallkullanarak belirli bir iz kimliği için üst/alt şelale görünümünü görüntüleyin. - Uyarı durumunu kontrol edin —
get_alert_rule_statekullanarak bir zaman aralığında her uyarı kuralı için tetiklenme geçmişini görün. - Panoları yönetin —
create_dashboardkullanarak paneller ve sorgularla özel panolar oluşturun.
Dokümantasyon
Last9 MCP Server

AI ajanınız production'da neyin bozulduğunu bilmez. Bu, bunu çözer.
Last9 MCP Server, Claude, Cursor, Windsurf ve MCP destekleyen diğer tüm AI asistanlarını doğrudan production gözlemlenebilirlik verilerinize bağlar — loglar, metrikler, trace'ler, istisnalar, veritabanı sorguları, uyarılar ve dağıtımlar. Ajan tahmin yürütmeyi bırakır ve gerçek sinyali okumaya başlar.
30 Saniyede Başlayın (Hosted)
Kurulacak binary yok. Yönetilecek token yok. Tek URL, tarayıcıda OAuth, bitti.
Org slug'ınızı Last9 URL'nizde bulun: app.last9.io/<org_slug>/...
Claude Code
claude mcp add --transport http last9 https://app.last9.io/api/v4/organizations/<org_slug>/mcp
/mcp yazın, last9'u seçin, kimlik doğrulayın. Bu kadar.
Cursor
Settings > MCP > Add New MCP Server:
{
"mcpServers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
Connect'e tıklayın, OAuth'u tamamlayın.
VS Code
v1.99+ gerektirir. Command Palette'i açın → MCP: Add Server, URL'yi yapıştırın, kimlik doğrulayın.
Veya doğrudan settings.json içinde:
{
"mcp": {
"servers": {
"last9": {
"type": "http",
"url": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
}
Windsurf
Settings > Cascade > Open MCP Marketplace > dişli simgesi (mcp_config.json):
{
"mcpServers": {
"last9": {
"serverUrl": "https://app.last9.io/api/v4/organizations/<org_slug>/mcp"
}
}
}
Claude Web/Desktop
Settings > Connectors > Add custom connector. Adını last9 yapın, URL'yi yapıştırın, kimlik doğrulayın.
Claude organizasyonunuz için yönetici erişimi gerektirir.
Self-Hosted (STDIO)
MCP istemciniz HTTP taşımasını desteklemediğinde veya sunucunun yerelde çalışması gerektiğinde bunu kullanın.
Kurulum
Homebrew:
brew install last9/tap/last9-mcp
NPM:
npm install -g @last9/mcp-server@latest
# or directly:
npx -y @last9/mcp-server@latest
Binary sürümler (Windows / manuel):
GitHub Releases sayfasından indirin:
| Platform | Arşiv |
|---|---|
| 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 |
Refresh Token Alın
Token yalnızca yöneticiler oluşturabilir.
- API Access sayfasına gidin
- Write izinleriyle Generate Token'a tıklayın
- Kopyalayın
İstemci Yapılandırması
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>"
}
}
}
}
Bunları nereye yapıştıracaksınız:
| İstemci | Konum |
|---|---|
| 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 > dişli simgesi (mcp_config.json) |
| VS Code | settings.json içinde { "mcp": { "servers": { ... } } } ile sarın — ayrıntılar |
VS Code STDIO yapılandırması
{
"mcp": {
"servers": {
"last9": {
"type": "stdio",
"command": "/opt/homebrew/bin/last9-mcp",
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
}
NPM için: "command": "npx" kullanın ve "args": ["-y", "@last9/mcp-server@latest"] ekleyin.
Windows
GitHub Releases sayfasından indirdikten sonra çıkarın ve tam yolu gösterin:
{
"mcpServers": {
"last9": {
"command": "C:\\Users\\<user>\\AppData\\Local\\Programs\\last9-mcp-server.exe",
"env": {
"LAST9_REFRESH_TOKEN": "<your_refresh_token>"
}
}
}
}
Windows'ta NPM yolu daha kolaydır — yol yönetimi gerekmez.
Ortam Değişkenleri
| Değişken | Varsayılan | Açıklama |
|---|---|---|
LAST9_REFRESH_TOKEN | (zorunlu) | API Access sayfasından alınan refresh token |
LAST9_DATASOURCE | org varsayılanı | Datasource/cluster adı — birden fazla Levitate cluster'ınız olduğunda kullanışlıdır |
LAST9_API_HOST | app.last9.io | API host'unu geçersiz kılın |
LAST9_TOOLSETS | tüm araçlar | Açılacak virgülle ayrılmış araç setleri (logs, traces, metrics, alerts, dashboards, investigate, all). Takma ad: LAST9_MCP_TOOLSETS |
LAST9_MAX_GET_LOGS_ENTRIES | 5000 | Parçalı get_logs istekleri için maksimum girdi |
LAST9_DEBUG_CHUNKING | false | get_logs, get_service_logs, get_traces için parça planlama ayrıntılarını loglamak üzere true ayarlayın |
LAST9_DISABLE_TELEMETRY | true | Dahili OTel izlemeyi etkinleştirmek için false ayarlayın |
OTEL_SDK_DISABLED | — | Standart OTel ortam değişkeni. LAST9_DISABLE_TELEMETRY değerini geçersiz kılar |
OTEL_EXPORTER_OTLP_ENDPOINT | — | OTLP collector uç noktası (yalnızca telemetri etkin olduğunda) |
OTEL_EXPORTER_OTLP_HEADERS | — | OTLP auth başlıkları (yalnızca telemetri etkin olduğunda) |
Neler Yapabilir
Servis Sağlığı
get_service_summary— Sıralanmış filo(service, env)satırları: aralık istek sayısı, throughput_rpm, HTTP 4xx/5xx sayıları ve gRPC hata sayılarıget_service_environments— Servisleriniz için kullanılabilir ortamlar. Önce bunu çalıştırın — diğer APM araçlarıenvdeğerini buradan alırget_service_performance_details— Tam döküm: throughput, hata oranı, p50/p90/p95/ort/max, apdex, kullanılabilirlikget_service_operations_summary— HTTP uç noktaları, DB çağrıları, mesajlaşma, HTTP istemcileri tarafından gruplanmış işlemlerget_service_dependency_graph— Üst/alt akış ve altyapı için throughput, gecikme ve hata oranlarıyla bağımlılık haritasıget_apm_service_deviations— Geçerli pencereyi eşit süreli bir temel çizgiyle karşılaştırın: gerilemeler/iyileştirmeler, Apdex mutabakatı ve terminal sonucu (filo veya tek servis)get_exceptions— Servis ve span filtreleriyle sunucu tarafı istisnaları
Veritabanı Gözlemlenebilirliği
OpenTelemetry trace span'lerinden türetilen, doğrudan veritabanı performansınıza yönelik dört araç. Zaten OTel kullanıyorsanız ekstra enstrümantasyon gerekmez.
get_databases— Altyapınızdaki tüm veritabanlarını keşfedin: DB türü, host, throughput (sorgu/dk), p95 gecikmesi, hata oranı, bağımlı servis sayısıget_database_slow_queries— Süreye göre sıralanmış gerçek en yavaş sorgu yürütmeleri, tam trace'lere inmek için trace ID'leriyleget_database_queries— Sorgu desenleri ve toplamları: bir sorgunun ne sıklıkla çalıştığı, ortalama/p95 süresi, hata oranıget_database_server_metrics— DB host'unun kendisinden sunucu tarafı metrikleri (CPU, bağlantılar, buffer isabet oranları — DB sisteminize bağlıdır)
PostgreSQL, MySQL, MongoDB, Redis, Aerospike ve db_system özniteliğine sahip OTel trace'i olan her şeyi destekler.
Prometheus / PromQL
prometheus_range_query— Herhangi bir metrik üzerinde PromQL aralık sorgularıprometheus_instant_query— Anlık sorgular;avg_over_time,sum_over_timegibi rollup işlevlerini kullanınprometheus_label_values— Belirli bir seri için etiket değerleriprometheus_labels— Bir seri için kullanılabilir tüm etiketler
LAST9_DATASOURCE ayarını yaparak bunları varsayılandan farklı bir datasource/cluster'a yönlendirin.
Loglar
get_logs— Tam JSON pipeline log sorguları (toplamalar, filtreler, alan çıkarma)get_service_logs— Bir servis için ham log satırları, önem düzeyine ve içerik metnine göre filtrelenebilirget_log_attributes— Bir zaman penceresi için log şemasındaki özniteliklerin genel kataloğuget_log_attributes_for_pipeline— Devam eden bir pipeline için fiilen mevcut log alanları (kapsamlı keşif), her biri tamfilter_fielddeğeriyleget_drop_rules— Last9 Control Plane sayfasından log düşürme kurallarıadd_drop_rule— Kaynakta log hacmini kesmek için yeni bir düşürme kuralı oluşturun
Trace'ler
get_traces— Geniş aramalar ve toplamalar için JSON pipeline trace sorgularıget_service_traces— Tam trace ID'sine veya servis adına göre trace'ler. Bir trace ID'niz olduğunda bunu kullanın — daha hızlıdırget_trace_attributes— Trace şemasındaki özniteliklerin genel kataloğuget_trace_attributes_for_pipeline— Devam eden bir pipeline için fiilen mevcut öznitelikler (kapsamlı keşif), her biri tamfilter_fielddeğeriyleget_trace_attribute_values— Bir trace özniteliği için ayrı değerler, isteğe bağlı olarak bir pipeline ile sınırlandırılmışget_trace_attribute_deviations— İki sınırlı span kohortu arasında farklılık gösteren öznitelik değerlerini sıralar (yavaş vs hızlı, hata vs hatasız veya iki zaman penceresi). Korelasyon, nedensellik değilget_trace_waterfall— Ebeveyn/çocuk şelalesi olarak tek bir tam trace; aralık-birleşim öz-zaman, en yavaş span'ler ve grafik uyarılarıyla
Değişiklik Olayları ve Uyarılar
get_change_events— Dağıtımlar, yapılandırma değişiklikleri, geri almalar. Olayları neyin değiştiğiyle ilişkilendiringet_alert_config— Uyarı kuralı yapılandırmaları — ada, önem düzeyine, türe, etiketlere göre aranabilirget_alerts— Bir zaman penceresi içinde şu anda tetiklenen uyarılarget_alert_rule_state— Bir zaman aralığı boyunca uyarı kuralı başına tarihsel tetiklenme durumu (1/0),rule_iddeğerine göre gruplanmış. Uyarı grubuna, kural adına, etiket filtrelerine ve duruma göre filtrelenebilir.get_notification_channels— Yapılandırılmış bildirim kanalları (Slack, PagerDuty, e-posta vb.)
Özel Panolar
list_dashboards— Organizasyonunuzdaki tüm özel panolar: ID'ler, adlar ve meta verilerget_dashboard— ID'ye göre tam pano tanımı, paneller ve sorgular dahilcreate_dashboard— Paneller, sorgular ve meta verilerle yeni bir özel pano oluşturunupdate_dashboard— ID'ye göre mevcut bir panoyu güncelleyin (salt okunur sistem panoları hata döndürür)delete_dashboard— ID'ye göre özel bir panoyu silinlist_dashboard_snapshots— Bir pano için dondurulmuş anlık görüntüler (yalnızca meta veriler)get_dashboard_snapshot— RCA / paylaşılabilir görünümler için panel verileri dahil tam dondurulmuş anlık görüntüdelete_dashboard_snapshot— ID'ye göre dondurulmuş bir anlık görüntüyü silin
Bulanık Ad Çözümleme
did_you_mean— Ajan bir varlık adından emin olmadığında, bu araç kataloğunuzdan en yakın eşleşmeleri döndürür (servisler, ortamlar, host'lar, veritabanları, K8s dağıtımları/ad alanları, işler). Benzerlik puanlarıyla en fazla 3 öneri. Sunucu, bir ad araması boş döndüğünde çoğu araçtan önce bunu otomatik çağırır.
Nasıl Çalışır
Her yanıtta derin bağlantılar. Her araç bir deep_link alanı döndürür — o tam sorgu ve zaman aralığı için Last9 panosuna doğrudan bir URL. Ajan size bağlantıyı verebilir; siz tıklarsınız; oradasınız.
Araç setleri. Varsayılan olarak sunucu her aracı sunar. Yalnızca soruşturma (log/trace/metrik) gerektiren otomasyon host'ları, istemci tarafında toplu devre dışı bırakma olmadan tools/list küçük kalsın diye LAST9_TOOLSETS=investigate (veya --toolsets=investigate iletebilir) ayarlayabilir. Adlandırılmış paketler: logs, traces, metrics, alerts, dashboards, investigate, all. Bilinmeyen adlar hızla başarısız olur. metrics paketi tek başına list_datasources veya did_you_mean içermez — bu keşif yardımcılarına ihtiyacınız olduğunda investigate kullanın (veya araç setlerini birleştirin).
Araç referans kaynakları. Uzun logjson/tracejson/service-logs/metrics kılavuzları her zaman açık araç açıklama metni değil, MCP kaynaklarıdır (last9://reference/logjson, last9://reference/tracejson, last9://reference/service_logs, last9://reference/metrics). Kritik sorgu kuralları araç açıklamasında kalır, böylece resources/read çağırmayan ajanlar bile doğru oluşturma yönergeleri alır. Organizasyona özgü alanları get_log_attributes / get_log_attributes_for_pipeline (ve trace eşdeğerleri) ile keşfedin — bunlar açıklamalara enjekte edilmez.
Parçalı büyük sonuçlar. get_logs ve get_traces büyük sonuç kümelerini kırpmak yerine parçalama yoluyla işler. Loglar için varsayılan sınır 5000 girdidir; LAST9_MAX_GET_LOGS_ENTRIES ile yapılandırılabilir.
Geliştirme
HTTP modu, curl testleri, kaynaktan derleme
HTTP Modunda Çalıştırma
export LAST9_REFRESH_TOKEN="your_refresh_token"
export LAST9_HTTP=true
export LAST9_PORT=8080
./last9-mcp-server
Sunucu http://localhost:8080/mcp adresinde başlar.
curl ile Test Etme
Streamable HTTP işleyicisi durumsuz modda çalışır; bu nedenle her istek bağımsız olarak sunulur. Bir initialize el sıkışması ve Mcp-Session-Id başlığı isteğe bağlıdır — bunları gönderen istemciler yine de çalışır (başlık kabul edilir ve yok sayılır) ve istemciler doğrudan tools/list / tools/call adımına da geçebilir. Her araç bağımsız bir istek/yanıt sorgusudur; sunucu istemciye yönelik hiçbir bildirim göndermez, bu nedenle GET /mcp (SSE akışı) 405 döndürür.
# 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
}
}
}'
Kaynaktan Derleme
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 yerel geliştirme içindir. Gerçek kullanım için barındırılan HTTP uç noktası daha kolaydır.
Araç Referansı
Tüm parametreler, zaman giriş standartları ve ayrıntılar
Zaman Girişi
- Mutlak zamanlar (
start_time_iso/end_time_isoveyatime_iso)lookback_minutesöğesine göre önceliklidir. - Göreli pencereler için:
lookback_minuteskullanın. - Mutlak pencereler için: RFC3339/ISO8601 kullanın —
2026-02-09T15:04:05Z. - Eski
YYYY-MM-DD HH:MM:SSyalnızca uyumluluk amacıyla kabul edilir.
get_exceptions
limit(tamsayı, isteğe bağlı): Maksimum istisna. Varsayılan: 20.lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.start_time_iso/end_time_iso(dize, isteğe bağlı): Mutlak zaman aralığı.service_name(dize, isteğe bağlı): Servise göre filtrele.span_name(dize, isteğe bağlı): Span adına göre filtrele.env(dize, isteğe bağlı): Ortama göre filtrele.
get_service_summary
start_time_iso/end_time_iso(dize, isteğe bağlı)env(dize, isteğe bağlı): PromQL regex. Varsayılan.*. Tam eşleşme için çapa gerekir (örn.^prod$).sort_by(dize, isteğe bağlı):request_count(varsayılan),throughput_rpm,http_4xx_count,http_5xx_countveyagrpc_error_count.limit(tamsayı, isteğe bağlı): Maksimum sıralanmış satır. Atlandığında veya 0 olduğunda 10 anlamına gelir; 100'ün üzerindeki değerler 100'e kırpılır.
get_service_environments
start_time_iso/end_time_iso(dize, isteğe bağlı)
Diğer tüm APM araçları bir
envdeğeri gerektirir. Bu boş dönerse""kullanın.
get_service_performance_details
service_name(dize, zorunlu)lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.start_time_iso/end_time_iso(dize, isteğe bağlı)env(dize, isteğe bağlı): Varsayılanprod.
get_service_operations_summary
service_name(dize, zorunlu)lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.start_time_iso/end_time_iso(dize, isteğe bağlı)env(dize, isteğe bağlı): Varsayılanprod.
get_service_dependency_graph
service_name(dize, isteğe bağlı)lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.start_time_iso/end_time_iso(dize, isteğe bağlı)env(dize, isteğe bağlı): Varsayılanprod.
get_apm_service_deviations
service_name(dize, isteğe bağlı): Filo kapsamı için atlayın; bir servis ve işlem korelasyonları için sağlayın.lookback_minutes(tamsayı, isteğe bağlı): Geçerli pencere. Varsayılan: 60.start_time_iso/end_time_iso(dize, isteğe bağlı): Açık geçerli pencere.baseline_start_time_iso/baseline_end_time_iso(dize, isteğe bağlı): Açık temel çizgi. Varsayılan, hemen önceki eşit süreli penceredir.datasource(dize, isteğe bağlı): Karşılaştırmayı tek bir veri kaynağıyla sınırlayın.env(dize, isteğe bağlı): Varsayılanprod.max_services/max_operations(tamsayı, isteğe bağlı): Varsayılan 10, her biri için maksimum 10.
get_databases
env(dize, isteğe bağlı): Ortama göre filtrele. Varsayılan: tümü.lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.start_time_iso/end_time_iso(dize, isteğe bağlı)
get_database_slow_queries
db_system(dize, isteğe bağlı): örn.postgresql,mysql,mongodb,redis.host(dize, isteğe bağlı): Veritabanı ana bilgisayarı (net_peer_name).service_name(dize, isteğe bağlı): Çağıran servis adı.env(dize, isteğe bağlı)min_duration_ms(float, isteğe bağlı): Minimum sorgu süresi (ms cinsinden).lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.start_time_iso/end_time_iso(dize, isteğe bağlı)limit(tamsayı, isteğe bağlı): Varsayılan: 20.
get_database_queries
db_system(dize, isteğe bağlı)host(dize, isteğe bağlı)service_name(dize, isteğe bağlı)env(dize, isteğe bağlı)lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.start_time_iso/end_time_iso(dize, isteğe bağlı)limit(tamsayı, isteğe bağlı): Varsayılan: 20.
get_database_server_metrics
db_system(dize, zorunlu): örn.postgresql,mysql,mongodb,redis,aerospike.host(dize, isteğe bağlı)lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.start_time_iso/end_time_iso(dize, isteğe bağlı)
prometheus_range_query
query(dize, zorunlu): PromQL sorgusu.start_time_iso/end_time_iso(dize, isteğe bağlı): Varsayılan: son 60 dakika.lookback_minutes(float, isteğe bağlı): Varsayılan: 60.
prometheus_instant_query
query(dize, zorunlu)time_iso(dize, isteğe bağlı): Varsayılan: şimdi.lookback_minutes(float, isteğe bağlı)
prometheus_label_values
match_query(dize, isteğe bağlı): PromQL filtresi.label(dize, zorunlu): Etiket adı.start_time_iso/end_time_iso(dize, isteğe bağlı)
prometheus_labels
match_query(dize, isteğe bağlı): PromQL filtresi.start_time_iso/end_time_iso(dize, isteğe bağlı)
get_logs
logjson_query(dizi, zorunlu): JSON işlem hattı sorgusu.lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 5.start_time_iso/end_time_iso(dize, isteğe bağlı)limit(tamsayı, isteğe bağlı): Sunucu varsayılanı: 5000.index(dize, isteğe bağlı):physical_index:<name>veyarehydration_index:<block_name>.
Günlük tabanlı servis envanteri için önce physical_index_service_count sorgusunu çalıştırın:
sum by (name, service_name, env) (physical_index_service_count{destination="logs"})
service_name değerini ServiceName olarak, env değerini varsa ortam olarak ve name değerini fiziksel dizin adı olarak kullanın. name="default" ise index öğesini atlayın; kullanıcının seçtiği varsayılan olmayan bir fiziksel dizin için index: "physical_index:<name>" değerini iletin. Arka uç açık fiziksel dizin filtrelemeyi reddederse, index olmadan yeniden deneyin ve o arka uç için açık fiziksel dizin filtrelemenin kullanılamadığını bildirin.
get_service_logs
service_name(dize, zorunlu)lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.limit(tamsayı, isteğe bağlı): Varsayılan: 20.env(dize, isteğe bağlı)severity_filters(dizi, isteğe bağlı): örn.["error", "warn"]. VEYA mantığı.body_filters(dizi, isteğe bağlı): örn.["timeout", "failed"]. VEYA mantığı.start_time_iso/end_time_iso(dize, isteğe bağlı)index(dize, isteğe bağlı)
Birden fazla filtre türü VE ile birleştirilir. Her dizi dahili olarak VEYA kullanır.
Önce geniş toplam sayılar için get_logs kullanın; get_service_logs öğesini yalnızca bir servis/ortam/dizin ve küçük bir örneklem kümesine daralttıktan sonra kullanın.
get_log_attributes
lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 15.start_time_iso/end_time_iso(dize, isteğe bağlı)region(dize, isteğe bağlı)index(dize, isteğe bağlı)
get_log_attributes_for_pipeline
pipeline(dizi, zorunlu): Keşfi kapsamlamak için önceki filtre aşamaları, örn.[{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 15.start_time_iso/end_time_iso(dize, isteğe bağlı)region(dize, isteğe bağlı)index(dize, isteğe bağlı)
get_drop_rules
Parametre yok. Bırakma kurallarını GET /otel_settings/drop?region=... aracılığıyla listeler.
add_drop_rule
name(dize, zorunlu)filters(dizi, zorunlu): Her filtre:key,value,operator(equals/not_equals),conjunction(and).- Filtre anahtarları
attributes["key_name"]veyaresource.attributes["key_name"]kullanmalıdır (Last9 API'si tarafından zorunlu kılınır). - Kuralı
POST /otel_settings/drop?region=...&cluster_id=...aracılığıyla oluşturur.
get_traces
Geniş aramalar ve toplamalar için kullanın. Tam iz kimliği araması için get_service_traces kullanın.
tracejson_query(dizi, zorunlu)start_time_iso/end_time_iso(dize, isteğe bağlı)lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.limit(tamsayı, isteğe bağlı): Varsayılan: 5000.
get_service_traces
trace_id veya service_name öğelerinden tam olarak biri zorunludur.
trace_id(dize, isteğe bağlı): Varsayılan geriye bakma: 72 saat.service_name(dize, isteğe bağlı): Varsayılan geriye bakma: 60 dakika.lookback_minutes(tamsayı, isteğe bağlı)start_time_iso/end_time_iso(dize, isteğe bağlı)limit(tamsayı, isteğe bağlı): Varsayılan: 10.env(dize, isteğe bağlı)
get_trace_attributes
lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 15.start_time_iso/end_time_iso(dize, isteğe bağlı)region(dize, isteğe bağlı)
get_trace_attributes_for_pipeline
pipeline(dizi, zorunlu): Keşfi kapsamlamak için önceki filtre aşamaları, örn.[{"type":"filter","query":{"$eq":["ServiceName","<service>"]}}].lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 15.start_time_iso/end_time_iso(dize, isteğe bağlı)region(dize, isteğe bağlı)
get_trace_attribute_values
tag_name(dize, zorunlu):get_trace_attributesöğesinden öznitelik adı (örn.resource_departmentveyaattributes['http.method']).pipeline(dizi, isteğe bağlı): Değerleri kapsamlamak için önceki filtre aşamaları; genel değerler için atlayın.region(dize, isteğe bağlı)
get_trace_attribute_deviations
comparison_mode(dize, zorunlu):latency,errorsveyatime.service_name(dize, zorunlu)environment(dize, zorunlu): Tamdeployment.environmentdeğeri.operation(dize, isteğe bağlı)filters(dizi, isteğe bağlı): İz JSON filtre koşulları.candidate_attributes(dizi, isteğe bağlı): Maksimum 8; sınırlı keşif için atlayın.latency_threshold_ms(sayı, isteğe bağlı):latencymodu için zorunludur; diğer modlar için reddedilir.start_time_iso/end_time_iso(dize, isteğe bağlı)lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 15. Maksimum: 15.baseline_start_time_iso/baseline_end_time_iso(dize, isteğe bağlı):timemodu için zorunludur; hedef pencereyle çakışmayan ve eşit süreli olmalıdır.minimum_cohort_size(tamsayı, isteğe bağlı): Varsayılan: 100. Minimum: 20.minimum_value_support(tamsayı, isteğe bağlı): Varsayılan: 20. Minimum: 10.limit(tamsayı, isteğe bağlı): Varsayılan: 10. Maksimum: 10.
Eşlik eden arka uç yeteneğinin etkinleştirilmesini gerektirir.
get_trace_waterfall
trace_id(dize, zorunlu)environment(dize, isteğe bağlı)start_time_iso/end_time_iso(dize, isteğe bağlı)lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 4320 (72 saat).selected_span_id(dize, isteğe bağlı): Yalnızca o span için öznitelikleri, olayları ve bağlantıları döndürür.max_spans(tamsayı, isteğe bağlı): Varsayılan: 500. Maksimum: 1000.
Bir investigation-evidence/v1 zarfı döndürür; şelale data altındadır.
get_change_events
start_time_iso/end_time_iso(dize, isteğe bağlı)lookback_minutes(tamsayı, isteğe bağlı): Varsayılan: 60.service_name(dize, isteğe bağlı)env(dize, isteğe bağlı)event_name(dize, isteğe bağlı): Önce bunu almadan çağırın;available_event_namesalmak için.
get_alert_config
search_term(string, isteğe bağlı): Ad, grup, veri kaynağı ve etiketler arasında serbest metin araması.rule_name(string, isteğe bağlı)severity(string, isteğe bağlı)rule_type(string, isteğe bağlı):staticveyaanomaly.alert_group_name/alert_group_type/data_source_name(string, isteğe bağlı)tags(dizi, isteğe bağlı): Tümü eşleşmelidir (VE mantığı).
get_alerts
time_iso(string, isteğe bağlı): RFC3339 biçiminde değerlendirme zamanı.window(tamsayı, isteğe bağlı): Saniye cinsinden geriye bakma süresi. Varsayılan: 900. Aralık: 60–86400.lookback_minutes(tamsayı, isteğe bağlı): Aralık: 1–1440.
get_alert_rule_state
start_time(tamsayı, zorunlu): Aralığın Unix epoch başlangıcı (dahil).end_time(tamsayı, zorunlu): Aralığın Unix epoch sonu (dahil).step(tamsayı, zorunlu): Örnekler arasındaki saniye cinsinden çözünürlük.((end_time - start_time) / step + 1)örnek sayısı 100 ile sınırlıdır.alert_group_id(string, isteğe bağlı): Uyarı grubu kimliğine göre filtrele.rule_name(string, isteğe bağlı): Kural adında regex filtresi.alert_group_name(string, isteğe bağlı): Uyarı grubu adında regex filtresi.label_filters(string, isteğe bağlı): Virgülle ayrılmışkey=valueetiket filtreleri.state(string, isteğe bağlı): Duruma göre filtrele (örn.firing).
rule_id -> [{timestamp, is_firing}] değerlerinin bir JSON haritasını döndürür. Bir kuralın üst sistem yanıtında bulunmadığı bir zaman damgası is_firing=0 olarak raporlanır — bu, "tetiklenmiş olarak gözlemlenmedi" anlamına gelir, doğrulanmış normal bir durum değildir.
get_notification_channels
Parametre yok. Yapılandırılmış tüm bildirim kanallarını döndürür (Slack, PagerDuty, e-posta, webhook'lar vb.).
did_you_mean
query(string, zorunlu): Aranacak ad — kısmi, yanlış yazılmış veya kısaltılmış.type(string, isteğe bağlı): Varlık türüyle sınırla:service,environment,host,database,k8s_deployment,k8s_namespace,job.
Benzerlik puanlarıyla en yakın 3 eşleşmeye kadar döndürür. Varlık adının belirsiz olduğu herhangi bir araç çağrısından önce bunu kullanın. Önceki bir çağrı boş sonuç döndürdüyse, yeniden denemeden önce bunu deneyin.
list_dashboards
Parametre yok. Kuruluştaki tüm özel panoları id, name ve meta verilerle birlikte bir JSON dizisi olarak döndürür.
get_dashboard
id(string, zorunlu): Pano UUID'si.region(string, isteğe bağlı): Panel sorgusu doldurma için bölge. Varsayılan olarak yapılandırılmış veri kaynağı bölgesi kullanılır.
create_dashboard
dashboard(nesne, zorunlu):namevepanels[]içeren pano tanımı. Her panelname,version,layout(x,y,w,h),visualization.typevequeries[]gerektirir.metadata(nesne, isteğe bağlı): Pano meta verileri —_categoryve_typealanları (örn.{"_category":"custom","_type":"metrics"}).
update_dashboard
id(string, zorunlu): Güncellenecek pano UUID'si.dashboard(nesne, zorunlu): Tam değiştirme pano gövdesi (create ile aynı yapıda).metadata(nesne, isteğe bağlı): Değiştirme meta verileri. Salt okunur sistem panoları 403 hatası döndürür.
delete_dashboard
id(string, zorunlu): Silinecek pano UUID'si. Salt okunur sistem panoları silinemez.
list_dashboard_snapshots
dashboard_id(string, zorunlu): Anlık görüntüleri listelenecek pano UUID'si.
Yalnızca meta verileri döndürür (id, name, expires_at vb.). Dondurulmuş panel verileri için get_dashboard_snapshot kullanın.
get_dashboard_snapshot
id(string, zorunlu): Anlık görüntü UUID'si.
dashboard_definition, panel_data, time_range ve variables dahil tam dondurulmuş anlık görüntüyü döndürür.
delete_dashboard_snapshot
id(string, zorunlu): Silinecek anlık görüntü UUID'si.
Test
Entegrasyon testi kurulumu ve talimatları için TESTING.md bölümüne bakın.
