| <!doctype html> |
| <html lang="en" class="no-js"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
| <meta name="twitter:site" content="skywalking.apache.org"> |
| <meta name="twitter:image:src" content="https://skywalking.apache.org/images/skywalking_400x400.png"> |
| <meta property="og:image" content="https://skywalking.apache.org/images/skywalking_400x400.png"> |
| |
| <meta name="generator" content="Hugo 0.80.0" /> |
| |
| |
| <script async src="https://www.googletagmanager.com/gtag/js?id=G-GR8N6PGRJ3"></script> |
| <script> |
| window.dataLayer = window.dataLayer || []; |
| function gtag(){dataLayer.push(arguments);}; |
| gtag('js', new Date());gtag('config', 'G-GR8N6PGRJ3'); |
| </script> |
| <META NAME="ROBOTS" CONTENT="INDEX, FOLLOW"> |
| <link rel="stylesheet" href="//at.alicdn.com/t/c/font_3007530_pvozs1rz2wn.css"> |
| |
| |
| |
| <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png"> |
| <link rel="icon" type="image/png" sizes="32x32" href="/favicons/favicon-32x32.png"> |
| <link rel="icon" type="image/png" sizes="16x16" href="/favicons/favicon-16x16.png"> |
| <link rel="manifest" href="/favicons/site.webmanifest"> |
| <link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#5bbad5"> |
| <meta name="msapplication-TileColor" content="#da532c"> |
| <meta name="theme-color" content="#ffffff"> |
| |
| <title>Query Protocol | Apache SkyWalking</title><meta property="og:title" content="Query Protocol" /> |
| <meta property="og:description" content="Query Protocol Query Protocol defines a set of APIs in GraphQL grammar to provide data query and interactive capabilities with SkyWalking native visualization tool or 3rd party system, including Web UI, CLI or private system. |
| Query protocol official repository, https://github.com/apache/skywalking-query-protocol. |
| All deprecated APIs are moved here. |
| Metadata Metadata contains concise information on all services and their instances, endpoints, etc. under monitoring. You may query the metadata in different ways. |
| V2 APIs Provide Metadata V2 query APIs since 9." /> |
| <meta property="og:type" content="article" /> |
| <meta property="og:url" content="/docs/main/next/en/api/query-protocol/" /> |
| |
| <meta itemprop="name" content="Query Protocol"> |
| <meta itemprop="description" content="Query Protocol Query Protocol defines a set of APIs in GraphQL grammar to provide data query and interactive capabilities with SkyWalking native visualization tool or 3rd party system, including Web UI, CLI or private system. |
| Query protocol official repository, https://github.com/apache/skywalking-query-protocol. |
| All deprecated APIs are moved here. |
| Metadata Metadata contains concise information on all services and their instances, endpoints, etc. under monitoring. You may query the metadata in different ways. |
| V2 APIs Provide Metadata V2 query APIs since 9."> |
| |
| <meta itemprop="wordCount" content="971"> |
| |
| |
| |
| <meta itemprop="keywords" content="" /> |
| <meta name="twitter:card" content="summary"/> |
| <meta name="twitter:title" content="Query Protocol"/> |
| <meta name="twitter:description" content="Query Protocol Query Protocol defines a set of APIs in GraphQL grammar to provide data query and interactive capabilities with SkyWalking native visualization tool or 3rd party system, including Web UI, CLI or private system. |
| Query protocol official repository, https://github.com/apache/skywalking-query-protocol. |
| All deprecated APIs are moved here. |
| Metadata Metadata contains concise information on all services and their instances, endpoints, etc. under monitoring. You may query the metadata in different ways. |
| V2 APIs Provide Metadata V2 query APIs since 9."/> |
| |
| |
| |
| <link rel="preload" href="/scss/main.min.592235942cb3c9f3dd697382a4e7a1fad8e1c182dad2841bdce6b43b4a346ae8.css" as="style"> |
| <link href="/scss/main.min.592235942cb3c9f3dd697382a4e7a1fad8e1c182dad2841bdce6b43b4a346ae8.css" rel="stylesheet" integrity=""> |
| |
| |
| |
| <link rel="stylesheet" href="/css/docSearch.css" /> |
| |
| |
| <script src="/js/jquery-3.6.0.min.js"></script> |
| |
| |
| |
| |
| |
| <title>Query Protocol | Apache SkyWalking</title> |
| </head> |
| <body class="td-page project-doc"> |
| <header> |
| |
| <nav class="js-navbar-scroll navbar navbar-expand flex-column flex-md-row td-navbar"> |
| <div class="sidebar-button"> |
| <i class="iconfont icon-menu"></i> |
| </div> |
| <a class="navbar-brand" href="/"> |
| <span class="navbar-logo"><img width="130" src="/images/logo.svg" alt="SkyWalking"></span> |
| </a> |
| <div class="td-navbar-nav-scroll navbar-nav-wrapper" id="navigation"> |
| <ul class="navbar-nav mt-lg-0"> |
| |
| |
| |
| <li class="nav-item mr-3 mb-lg-0"> |
| |
| |
| |
| |
| <a class="nav-link" href="/docs" ><span>Projects and Docs</span></a> |
| </li> |
| |
| |
| |
| |
| <li class="nav-item mr-3 mb-lg-0"> |
| |
| |
| |
| |
| <a class="nav-link" href="/events" ><span>Events</span></a> |
| </li> |
| |
| |
| |
| |
| <li class="nav-item mr-3 mb-lg-0"> |
| |
| |
| |
| |
| <a class="nav-link" href="/blog" ><span>Blogs</span></a> |
| </li> |
| |
| |
| |
| |
| <li class="nav-item mr-3 mb-lg-0"> |
| |
| |
| |
| |
| <a class="nav-link" href="/downloads" ><span>Downloads</span></a> |
| </li> |
| |
| |
| |
| |
| <li class="nav-item mr-3 mb-lg-0"> |
| |
| |
| |
| |
| <a class="nav-link" href="/team" ><span>Team</span></a> |
| </li> |
| |
| |
| |
| |
| <li class="nav-item mr-3 mb-lg-0"> |
| |
| |
| |
| |
| <a class="nav-link" href="/users" ><span>Users</span></a> |
| </li> |
| |
| |
| |
| |
| |
| <li class="nav-item mr-3 mb-lg-0"> |
| <span class="link dropdown blog"> |
| <a class="link-name nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">中文资料</a> |
| <div class="dropdown-menu"> |
| <a class="dropdown-item" href="/zh/">博客</a> |
| <a class="dropdown-item" href="https://space.bilibili.com/390683219" target="_blank" rel="noopener noreferrer"> |
| B站 |
| </a> |
| <a class="dropdown-item" href="https://juejin.cn/user/13673577331607" target="_blank" rel="noopener noreferrer"> |
| 掘金 |
| </a> |
| </div> |
| </span> |
| </li> |
| |
| |
| |
| </ul> |
| </div> |
| <div class="navbar-nav d-none d-lg-block search-input-box"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <span class="link dropdown"> |
| <a class="link-name dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
| Links |
| </a> |
| <div class="dropdown-menu"> |
| |
| <a class="dropdown-item" href="http://www.apache.org/">Apache Software Foundation</a> |
| <a class="dropdown-item" href="https://github.com/apache/skywalking/issues">GitHub Issue Tracker</a> |
| <a class="dropdown-item" href="https://github.com/apache/skywalking/discussions">Discussion</a> |
| <a class="dropdown-item" href="https://lists.apache.org/list.html?dev@skywalking.apache.org">Dev Mailing List</a> |
| <a class="dropdown-item" href="https://cwiki.apache.org/confluence/display/SKYWALKING/Home">WIKI</a> |
| <a class="dropdown-item" href="http://www.apache.org/licenses/">License</a> |
| <a class="dropdown-item" href="http://www.apache.org/events/current-event">Apache Events</a> |
| <a class="dropdown-item" href="http://www.apache.org/security/">Security</a> |
| <a class="dropdown-item" href="http://www.apache.org/foundation/sponsorship.html">Sponsor and Donate</a> |
| <a class="dropdown-item" href="http://www.apache.org/foundation/thanks.html">Thanks</a> |
| <a class="dropdown-item" href="https://apache.org/foundation/policies/privacy.html">Privacy</a> |
| </div> |
| </span> |
| |
| |
| |
| <div id="docsearch"></div> |
| |
| |
| </div> |
| </nav> |
| |
| </header> |
| <div class="container-fluid td-outer"> |
| |
| <div class="td-main"> |
| <div class="row flex-xl-nowrap"> |
| <div class="col-12 col-md-3 col-xl-2 d-print-none scroll-bar td-sidebar"> |
| |
| |
| <div class="description-wrapper"> |
| <h5> |
| <img width="26" height="26" src="/images/project/skywalking.svg"> |
| SkyWalking |
| </h5> |
| <p>SkyWalking primary repository and docs.</p> |
| </div> |
| |
| <div class="version-wrapper">Version: |
| <select class="version-select"> |
| |
| |
| |
| <option selected value="next"> |
| |
| next |
| |
| </option> |
| |
| |
| |
| <option ZgotmplZ value="latest"> |
| |
| latest |
| |
| </option> |
| |
| |
| |
| <option ZgotmplZ value="v9.7.0"> |
| |
| v9.7.0 |
| |
| </option> |
| |
| |
| |
| <option ZgotmplZ value="v9.6.0"> |
| |
| v9.6.0 |
| |
| </option> |
| |
| |
| |
| <option ZgotmplZ value="v9.5.0"> |
| |
| v9.5.0 |
| |
| </option> |
| |
| |
| |
| <option ZgotmplZ value="v9.4.0"> |
| |
| v9.4.0 |
| |
| </option> |
| |
| |
| |
| <option ZgotmplZ value="v9.3.0"> |
| |
| v9.3.0 |
| |
| </option> |
| |
| |
| |
| <option ZgotmplZ value="v9.2.0"> |
| |
| v9.2.0 |
| |
| </option> |
| |
| |
| |
| <option ZgotmplZ value="v9.1.0"> |
| |
| v9.1.0 |
| |
| </option> |
| |
| |
| |
| <option ZgotmplZ value="v9.0.0"> |
| |
| v9.0.0 |
| |
| </option> |
| |
| </select> |
| </div> |
| |
| <ul class="sidebar-menu"> |
| |
| <li> |
| |
| <a href="/docs/main/next/readme">Welcome</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="#">Concepts and Designs<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/overview">Overview and Core concepts</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/project-goals">Project Goals</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Agents<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/probe-introduction">Introduction</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/service-agent">Service Auto Instrument Agent</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/manual-sdk">Manual Instrument SDK</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/service-hierarchy">Service Hierarchy</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="#">Setup<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Quick Start<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-setup">Introduction</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-docker">Run with Docker</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-k8s">Run with Kubernetes</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/configuration-vocabulary">Configuration Vocabulary</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Advanced Setup<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/service-auto-grouping">Service Grouping</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-setting-override">Overriding Settings</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-ip-port">IP And Port Setting</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-init-mode">Backend Init Mode Startup</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-cluster">Cluster Management</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Choose Storage<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-storage">Introduction</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/storages/h2">H2</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/storages/elasticsearch">Elasticsearch & OpenSearch</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/storages/mysql">MySQL</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/storages/postgresql">PostgreSQL</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/storages/banyandb">BanyanDB(Alpha)</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-expose">Setup External Communication Channels</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/kafka-fetcher">Kafka Fetcher</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/advanced-deployment">Advanced Deployment Options</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/ttl">Data Lifecycle. Time To Live (TTL)</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/endpoint-grouping-rules">Group Parameterized Endpoints</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/dynamical-logging">Dynamical Logging</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/grpc-security">Security(SSL/TLS/mTLS)</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-load-balancer">Setup Load Balancer</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-telemetry">OAP Self Observability Telemetry</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-health-check">OAP Health Check</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Tracing<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/trace-sampling">Trace Sampling</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/slow-db-statement">Detect Slow Database Statement</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/slow-cache-command">Detect Slow Cache Command</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/mq">Message Queue Performance</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/uninstrumented-gateways">Uninstrumented Gateways</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/zipkin-trace">Zipkin Trace</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/otlp-trace">OpenTelemetry Trace</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Metrics<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/guides/backend-oal-scripts">OAL Scripts</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/opentelemetry-receiver">OpenTelemetry Metrics</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/aws-firehose-receiver">AWS CloudWatch Metrics</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-zabbix">Zabbix Metrics</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-meter">Meter Analysis</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/telegraf-receiver">Telegraf Metrics</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/apdex-threshold">Apdex Threshold</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/micrometer-observations">Spring MicroMeter Observations Analysis</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-alarm">Alerting</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Logging<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Persistent Logging<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/filelog-native">Native Logging from Files</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/log-agent-native">Native Logging from Agents</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/log-otlp">OpenTelemetry Logging</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/log-analyzer">Log Analysis</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/on-demand-pod-log">On Demand Pod Logs</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Profiling<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-trace-profiling">Tracing Profiling</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-ebpf-profiling">eBPF Profiling</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-continuous-profiling">Continuous Profiling</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/event/">Event</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Extension<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/exporter">Exporter</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/dynamic-config">Dynamic Configuration</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">AI Pipeline<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/ai-pipeline/introduction">Introduction</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/ai-pipeline/http-restful-uri-pattern">HTTP Restful URI recognition</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">UI Setup<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Native UI<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/ui-setup">Setup</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/ui/readme">Customization</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/ui-grafana">Grafana UI</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Official Dashboards<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">General Service<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/service-agent/server-agents">Server Agents</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/service-agent/agent-compatibility">Compatibility</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/service-agent/virtual-database">Virtual Database</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/service-agent/virtual-cache">Virtual Cache</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/service-agent/virtual-mq">Virtual MQ</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Service Mesh<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/envoy/als_setting">Observe Service Mesh through Access Log Service (ALS)</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/zipkin/tracing">Observe Service Mesh through Zipkin traces</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/istio/readme">Observe Control Plane (Istio)</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/envoy/metrics_service_setting">Observe Data Plane (Envoy)</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-k8s-network-monitoring">Profile Pod's Network</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Kubernetes<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-k8s-monitoring">Observe Kubernetes</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-k8s-monitoring-metrics-cadvisor">kube-state-metrics + cAdvisor</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-k8s-monitoring-rover">Rover</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-k8s-network-monitoring">Profile Pod's Network</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Infrastructure Monitoring<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-vm-monitoring">Linux Monitoring</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-win-monitoring">Windows Monitoring</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">AWS Cloud Monitoring<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-aws-eks-monitoring">EKS Monitoring</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-aws-s3-monitoring">S3 Monitoring</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-aws-dynamodb-monitoring">AWS DynamoDB</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-aws-api-gateway-monitoring">AWS API Gateway</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/service-agent/browser-agent">Browser Monitoring</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Gateway Monitoring<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-nginx-monitoring">Nginx Monitoring</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-apisix-monitoring">APISIX Monitoring</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-aws-api-gateway-monitoring">AWS API Gateway</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Database Monitoring<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-mysql-monitoring">MySQL/MariaDB Server</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-postgresql-monitoring">PostgreSQL Server</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-aws-dynamodb-monitoring">AWS DynamoDB</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-redis-monitoring">Redis</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-elasticsearch-monitoring">Elasticsearch</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-mongodb-monitoring">MongoDB</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-bookkeeper-monitoring">BookKeeper</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-clickhouse-monitoring">ClickHouse</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">MQ Monitoring<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-rabbitmq-monitoring">RabbitMQ</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-kafka-monitoring">Kafka</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-pulsar-monitoring">Pulsar</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-rocketmq-monitoring">RocketMQ</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-activemq-monitoring">ActiveMQ</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Self Observability<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/dashboards-so11y">OAP self telemetry</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/dashboards-so11y-satellite">Satellite self telemetry</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="https://github.com/apache/skywalking-cli">CLI Setup</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/setup/backend/backend-data-generator">Mock Data Generator Setup</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="#">APIs<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Telemetry APIs/Protocols<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Tracing<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/trace-data-protocol-v3">Spans APIs</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/x-process-propagation-headers-v3">Tracing Context Propagation</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/x-process-correlation-headers-v1">Tracing Correlation Correlation</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Metrics APIs<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/meter">Meter APIs</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/browser-protocol">Browser performance APIs</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/jvm-protocol">JVM metrics APIs</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/log-data-protocol">Logging</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/instance-properties">Service Instance Properties APIs</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/event">Event</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/profiling-protocol">Profiling</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Query APIs<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">GraphQL APIs<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/query-protocol">GraphQL APIs</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/metrics-query-expression">MQE Syntax</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/query-protocol-deprecated">Deprecated APIs</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/promql-service">PromQL APIs</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/api/logql-service">LogQL APIs</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="#">Customization<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/backend-overview">Overview</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/oal">Analysis Traces and Mesh Traffic</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/mal">Analysis Metrics and Meters</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/lal">Analysis Logs</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/profiling">Profiling</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/service-hierarchy-configuration">Service Hierarchy Configuration</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| <li> |
| |
| <a href="/docs/main/next/en/security/readme">Security Notice</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="#">Debugging<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/debugging/config_dump">Scratch The OAP Config Dump</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="#">Academy<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/academy/scaling-with-apache-skywalking">Scaling SkyWalking server automatically in kubernetes</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/papers/stam">STAM Paper, Streaming Topology Analysis Method</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/sdk-profiling">SDK Profiling to Fix the Blind Spot</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/concepts-and-designs/ebpf-cpu-profiling">eBPF CPU Profiling to pinpoint Service Mesh Critical Performance Impact</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/academy/diagnose-service-mesh-network-performance-with-ebpf">Diagnose Service Mesh Network Performance with eBPF</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| <li> |
| |
| <a href="/docs/main/next/en/faq/readme">FAQs</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="#">Contributing Guides<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/guides/community">Contact the community</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/guides/asf/committer">Become A Committer</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/guides/how-to-release/">Release Guide</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/guides/how-to-build">Compiling Guide</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Contribute<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/guides/it-guide">Integration Tests</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/guides/benchmark">Benchmark Tests</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/guides/e2e">End to End Tests</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Project Extensions<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/guides/component-library-settings">Component Library Settings</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/guides/source-extension">Extend An OAL Source</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Dependencies<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/guides/dependencies">Project Dependencies Check</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/guides/how-to-bump-up-zipkin">Zipkin dependency</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/guides/i18n">I18n</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| <li> |
| |
| <a href="/docs/main/next/en/swip/readme">SWIP</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="#">Changelog<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes">Current Version</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">9.x Releases<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-9.6.0">9.6.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-9.5.0">9.5.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-9.4.0">9.4.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-9.3.0">9.3.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-9.2.0">9.2.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-9.1.0">9.1.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-9.0.0">9.0.0</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| |
| |
| <a href="#">Archived Releases<i class="iconfont icon-arrow-right pull-right"></i></a> |
| |
| |
| |
| <ul class="sidebar-submenu"> |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-8.9.1">8.9.1</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-8.9.0">8.9.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-8.8.1">8.8.1</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-8.8.0">8.8.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-8.7.0">8.7.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-8.6.0">8.6.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-8.5.0">8.5.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-8.4.0">8.4.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-8.3.0">8.3.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-8.2.0">8.2.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-8.1.0">8.1.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-8.0.1">8.0.1</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-8.0.0">8.0.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-7.0.0">7.0.0</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-6.x">6.x</a> |
| |
| </li> |
| |
| |
| |
| <li> |
| |
| <a href="/docs/main/next/en/changes/changes-5.x">5.x</a> |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| |
| |
| </ul> |
| |
| |
| </li> |
| |
| </ul> |
| <script src="/js/sidebar-menu.js"></script> |
| <script> |
| (function (){ |
| $.sidebarMenu($('.sidebar-menu')) |
| var path = window.location.pathname; |
| var hash = window.location.hash; |
| var $a = $('.sidebar-menu a') |
| $a.each(function (e){ |
| if($(this).attr('href')+'/' === path || $(this).attr('href').replace('#','/#') === path+hash){ |
| $(this).parents('li').addClass('active').show() |
| } |
| }) |
| $a.on('click',function (){ |
| var url = $(this).attr('href') |
| if(url!=='#'){ |
| window.location.href = url |
| } |
| }) |
| })() |
| </script> |
| |
| <div class="commit-id">Commit Id: a636013</div> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| </div> |
| <main class="col-12 col-md-9 col-xl-8 pl-md-5 pr-md-4" role="main"> |
| <i class="iconfont icon-menu-doc doc-menu-button"></i> |
| |
| <div class="td-content"> |
| <h1 id="query-protocol">Query Protocol</h1> |
| <p>Query Protocol defines a set of APIs in GraphQL grammar to provide data query and interactive capabilities with SkyWalking |
| native visualization tool or 3rd party system, including Web UI, CLI or private system.</p> |
| <p>Query protocol official repository, <a href="https://github.com/apache/skywalking-query-protocol">https://github.com/apache/skywalking-query-protocol</a>.</p> |
| <p>All deprecated APIs are moved <a href="./../query-protocol-deprecated">here</a>.</p> |
| <h3 id="metadata">Metadata</h3> |
| <p>Metadata contains concise information on all services and their instances, endpoints, etc. under monitoring. |
| You may query the metadata in different ways.</p> |
| <h4 id="v2-apis">V2 APIs</h4> |
| <p>Provide Metadata V2 query APIs since 9.0.0, including Layer concept.</p> |
| <div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#000;font-weight:bold">extend</span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Query</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Read all available layers</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># UI could use this list to determine available dashboards/panels</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># The available layers would change with time in the runtime, because new service could be detected in any time.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># This list should be loaded periodically.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>listLayers:<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">String</span>!]!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Read the service list according to layer.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>listServices(layer:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>):<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">Service</span>!]!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Find service according to given ID. Return null if not existing.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getService(serviceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Service</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Search and find service according to given name. Return null if not existing.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>findService(serviceName:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Service</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Read service instance list.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>listInstances(duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!,<span style="color:#bbb"> </span>serviceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!):<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">ServiceInstance</span>!]!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Search and find service instance according to given ID. Return null if not existing.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getInstance(instanceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ServiceInstance</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Search and find matched endpoints according to given service and keyword(optional)</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># If no keyword, randomly choose endpoint based on `limit` value.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>findEndpoint(keyword:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>,<span style="color:#bbb"> </span>serviceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!,<span style="color:#bbb"> </span>limit:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Int</span>!):<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">Endpoint</span>!]!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getEndpointInfo(endpointId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">EndpointInfo</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Read process list.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>listProcesses(duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!,<span style="color:#bbb"> </span>instanceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!):<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">Process</span>!]!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Find process according to given ID. Return null if not existing.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getProcess(processId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Process</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Get the number of matched processes through serviceId, labels</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Labels: the matched process should contain all labels</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic">#</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># The return is not a precise number, the process has its lifecycle, as it reboots and shutdowns with time.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># The return number just gives an abstract of the scale of profiling that would be applied.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>estimateProcessScale(serviceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!,<span style="color:#bbb"> </span>labels:<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">String</span>!]!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Long</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getTimeInfo:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">TimeInfo</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div><h3 id="topology">Topology</h3> |
| <p>The topology and dependency graphs among services, instances and endpoints. Includes direct relationships or global maps.</p> |
| <div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#000;font-weight:bold">extend</span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Query</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Query the global topology</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># When layer is specified, the topology of this layer would be queried</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getGlobalTopology(duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!,<span style="color:#bbb"> </span>layer:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Topology</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Query the topology, based on the given service</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getServiceTopology(serviceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!,<span style="color:#bbb"> </span>duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Topology</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Query the topology, based on the given services.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># `#getServiceTopology` could be replaced by this.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getServicesTopology(serviceIds:<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">ID</span>!]!,<span style="color:#bbb"> </span>duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Topology</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Query the instance topology, based on the given clientServiceId and serverServiceId</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getServiceInstanceTopology(clientServiceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!,<span style="color:#bbb"> </span>serverServiceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!,<span style="color:#bbb"> </span>duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ServiceInstanceTopology</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Query the topology, based on the given endpoint</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getEndpointTopology(endpointId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!,<span style="color:#bbb"> </span>duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Topology</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># v2 of getEndpointTopology</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getEndpointDependencies(endpointId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!,<span style="color:#bbb"> </span>duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">EndpointTopology</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Query the topology, based on the given instance</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getProcessTopology(serviceInstanceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!,<span style="color:#bbb"> </span>duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ProcessTopology</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div><h3 id="metrics">Metrics</h3> |
| <p>Metrics query targets all objects defined in <a href="../../concepts-and-designs/oal">OAL script</a> and <a href="../../concepts-and-designs/mal">MAL</a>.</p> |
| <h4 id="v3-apis">V3 APIs</h4> |
| <p>Provide Metrics V3 query APIs since 9.5.0, including metadata and MQE. |
| SkyWalking Metrics Query Expression(MQE) is an extension query mechanism. MQE allows users to do simple query-stage calculation like well known PromQL |
| through GraphQL. The expression’s syntax can refer to <a href="./../metrics-query-expression">here</a>.</p> |
| <div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#000;font-weight:bold">extend</span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Query</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Metrics definition metadata query. Response the metrics type which determines the suitable query methods.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#458;font-weight:bold">OfMetrics</span>(name:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">MetricsType</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Get the list of all available metrics in the current OAP server.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Param, regex, could be used to filter the metrics by name.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>listMetrics(regex:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>):<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">MetricDefinition</span>!]!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>execExpression(expression:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>!,<span style="color:#bbb"> </span>entity:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Entity</span>!,<span style="color:#bbb"> </span>duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ExpressionResult</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div><div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ExpressionResult</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span>:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ExpressionResultType</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># When the type == TIME_SERIES_VALUES, the results would be a collection of MQEValues.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># In other legal type cases, only one MQEValues is expected in the array.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">results</span>:<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">MQEValues</span>!]!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># When type == ExpressionResultType.UNKNOWN,</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># the error message includes the expression resolving errors.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>error:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div><div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#000;font-weight:bold">enum</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ExpressionResultType</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Can't resolve the type of the given expression.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>UNKNOWN<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># A single value</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>SINGLE_VALUE<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># A collection of time-series values.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># The value could have labels or not.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>TIME_SERIES_VALUES<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># A collection of aggregated values through metric sort function</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>SORTED_LIST<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># A collection of sampled records.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># When the original metric type is sampled records</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>RECORD_LIST<span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div><h3 id="logs">Logs</h3> |
| <div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#000;font-weight:bold">extend</span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Query</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Return true if the current storage implementation supports fuzzy query for logs.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>supportQueryLogsByKeywords:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Boolean</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">query</span><span style="color:#458;font-weight:bold">Logs</span>(condition:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">LogQueryCondition</span>):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Logs</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Test the logs and get the results of the LAL output.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>test(requests:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">LogTestRequest</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">LogTestResponse</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Read the list of searchable keys</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">query</span><span style="color:#458;font-weight:bold">LogTagAutocompleteKeys</span>(duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!):[<span style="color:#458;font-weight:bold">String</span>!]<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Search the available value options of the given key.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">query</span><span style="color:#458;font-weight:bold">LogTagAutocompleteValues</span>(tagKey:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>!<span style="color:#bbb"> </span>,<span style="color:#bbb"> </span>duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!):[<span style="color:#458;font-weight:bold">String</span>!]<span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div><p>Log implementations vary between different database options. Some search engines like ElasticSearch and OpenSearch can support |
| full log text fuzzy queries, while others do not due to considerations related to performance impact and end user experience.</p> |
| <p><code>test</code> API serves as the debugging tool for native LAL parsing.</p> |
| <h3 id="trace">Trace</h3> |
| <div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#000;font-weight:bold">extend</span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Query</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Search segment list with given conditions</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">query</span><span style="color:#458;font-weight:bold">BasicTraces</span>(condition:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">TraceQueryCondition</span>):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">TraceBrief</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Read the specific trace ID with given trace ID</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">query</span><span style="color:#458;font-weight:bold">Trace</span>(traceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Trace</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Read the list of searchable keys</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">query</span><span style="color:#458;font-weight:bold">TraceTagAutocompleteKeys</span>(duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!):[<span style="color:#458;font-weight:bold">String</span>!]<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Search the available value options of the given key.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">query</span><span style="color:#458;font-weight:bold">TraceTagAutocompleteValues</span>(tagKey:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>!<span style="color:#bbb"> </span>,<span style="color:#bbb"> </span>duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!):[<span style="color:#458;font-weight:bold">String</span>!]<span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div><p>Trace query fetches trace segment lists and spans of given trace IDs.</p> |
| <h3 id="alarm">Alarm</h3> |
| <div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#000;font-weight:bold">extend</span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Query</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getAlarmTrend(duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">AlarmTrend</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getAlarm(duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>!,<span style="color:#bbb"> </span>scope:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Scope</span>,<span style="color:#bbb"> </span>keyword:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>,<span style="color:#bbb"> </span>paging:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Pagination</span>!,<span style="color:#bbb"> </span>tags:<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">AlarmTag</span>]):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Alarms</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div><p>Alarm query identifies alarms and related events.</p> |
| <h3 id="event">Event</h3> |
| <div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#000;font-weight:bold">extend</span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Query</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">query</span><span style="color:#458;font-weight:bold">Events</span>(condition:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">EventQueryCondition</span>):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Events</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div><p>Event query fetches the event list based on given sources and time range conditions.</p> |
| <h3 id="profiling">Profiling</h3> |
| <p>SkyWalking offers two types of <a href="../../concepts-and-designs/profiling">profiling</a>, in-process and out-process, allowing users to create tasks and check their execution status.</p> |
| <h4 id="in-process-profiling">In-process profiling</h4> |
| <div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#000;font-weight:bold">extend</span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Mutation</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># crate new profile task</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>createProfileTask(creationRequest:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ProfileTaskCreationRequest</span>):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ProfileTaskCreationResult</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#000;font-weight:bold">extend</span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Query</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># query all task list, order by ProfileTask#startTime descending</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getProfileTaskList(serviceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>,<span style="color:#bbb"> </span>endpointName:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>):<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">ProfileTask</span>!]!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># query all task logs</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getProfileTaskLogs(taskID:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>):<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">ProfileTaskLog</span>!]!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># query all task profiled segment list</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getProfileTaskSegments(taskID:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!):<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">ProfiledTraceSegments</span>!]!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># analyze multiple profiled segments, start and end time use timestamp(millisecond)</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getSegmentsProfileAnalyze(queries:<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">SegmentProfileAnalyzeQuery</span>!]!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ProfileAnalyzation</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div><h4 id="out-process-profiling">Out-process profiling</h4> |
| <div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#000;font-weight:bold">extend</span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Mutation</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># create a new eBPF fixed time profiling task</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>createEBPFProfilingFixedTimeTask(request:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">EBPFProfilingTaskFixedTimeCreationRequest</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">EBPFProfilingTaskCreationResult</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># create a new eBPF network profiling task</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>createEBPFNetworkProfiling(request:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">EBPFProfilingNetworkTaskRequest</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">EBPFProfilingTaskCreationResult</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># keep alive the eBPF profiling task</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>keepEBPFNetworkProfiling(taskId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">EBPFNetworkKeepProfilingResult</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#000;font-weight:bold">extend</span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Query</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># query eBPF profiling data for prepare create task</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">query</span><span style="color:#458;font-weight:bold">PrepareCreateEBPFProfilingTaskData</span>(serviceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">EBPFProfilingTaskPrepare</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># query eBPF profiling task list</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># query `triggerType == FIXED_TIME` when triggerType is absent</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">query</span><span style="color:#458;font-weight:bold">EBPFProfilingTasks</span>(serviceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>,<span style="color:#bbb"> </span>serviceInstanceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>,<span style="color:#bbb"> </span>targets:<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">EBPFProfilingTargetType</span>!],<span style="color:#bbb"> </span>triggerType:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">EBPFProfilingTriggerType</span>,<span style="color:#bbb"> </span>duration:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span>):<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">EBPFProfilingTask</span>!]!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># query schedules from profiling task</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">query</span><span style="color:#458;font-weight:bold">EBPFProfilingSchedules</span>(taskId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!):<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">EBPFProfilingSchedule</span>!]!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># analyze the profiling schedule</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># aggregateType is "EBPFProfilingAnalyzeAggregateType#COUNT" as default. </span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>analysisEBPFProfilingResult(scheduleIdList:<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">ID</span>!]!,<span style="color:#bbb"> </span>timeRanges:<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">EBPFProfilingAnalyzeTimeRange</span>!]!,<span style="color:#bbb"> </span>aggregateType:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">EBPFProfilingAnalyzeAggregateType</span>):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">EBPFProfilingAnalyzation</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div><h3 id="on-demand-pod-logs">On-Demand Pod Logs</h3> |
| <p>Provide APIs to query <a href="../../setup/backend/on-demand-pod-log">on-demand pod logs</a> since 9.1.0.</p> |
| <div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#000;font-weight:bold">extend</span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Query</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>listContainers(condition:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">OndemandContainergQueryCondition</span>):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">PodContainers</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">on</span>demandPodLogs(condition:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">OndemandLogQueryCondition</span>):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Logs</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div><h3 id="hierarchy">Hierarchy</h3> |
| <p>Provide <a href="../../concepts-and-designs/service-hierarchy">Hierarchy</a> query APIs since 10.0.0, including service and instance hierarchy.</p> |
| <div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#000;font-weight:bold">extend</span><span style="color:#bbb"> </span><span style="color:#000;font-weight:bold">type</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Query</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Query the service hierarchy, based on the given service. Will recursively return all related layers services in the hierarchy.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getServiceHierarchy(serviceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!,<span style="color:#bbb"> </span>layer:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ServiceHierarchy</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># Query the instance hierarchy, based on the given instance. Will return all direct related layers instances in the hierarchy, no recursive.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>getInstanceHierarchy(instanceId:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">ID</span>!,<span style="color:#bbb"> </span>layer:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>!):<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">InstanceHierarchy</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span><span style="color:#998;font-style:italic"># List layer hierarchy levels. The layer levels are defined in the `hierarchy-definition.yml`.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>listLayerLevels:<span style="color:#bbb"> </span>[<span style="color:#458;font-weight:bold">LayerLevel</span>!]!<span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div><h2 id="condition">Condition</h2> |
| <h3 id="duration">Duration</h3> |
| <p>Duration is a widely used parameter type as the APM data is time-related. See the following for more details. |
| Step relates to precision.</p> |
| <div class="highlight"><pre style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-graphql" data-lang="graphql"><span style="color:#998;font-style:italic"># The Duration defines the start and end time for each query operation.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># Fields: `start` and `end`</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># represents the time span. And each of them matches the step.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># ref https://www.ietf.org/rfc/rfc3339.txt</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># The time formats are</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># `SECOND` step: yyyy-MM-dd HHmmss</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># `MINUTE` step: yyyy-MM-dd HHmm</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># `HOUR` step: yyyy-MM-dd HH</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># `DAY` step: yyyy-MM-dd</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># `MONTH` step: yyyy-MM</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># Field: `step`</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># represents the accurate time point.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># e.g.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># if step==HOUR , start=2017-11-08 09, end=2017-11-08 19</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># then</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># metrics from the following time points expected</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># 2017-11-08 9:00 -> 2017-11-08 19:00</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#998;font-style:italic"># there are 11 time points (hours) in the time span.</span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#000;font-weight:bold">input</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Duration</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>start:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>end:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">String</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>step:<span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Step</span>!<span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span><span style="color:#bbb"> |
| </span><span style="color:#bbb"></span><span style="color:#000;font-weight:bold">enum</span><span style="color:#bbb"> </span><span style="color:#458;font-weight:bold">Step</span><span style="color:#bbb"> </span>{<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>MONTH<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>DAY<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>HOUR<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>MINUTE<span style="color:#bbb"> |
| </span><span style="color:#bbb"> </span>SECOND<span style="color:#bbb"> |
| </span><span style="color:#bbb"></span>}<span style="color:#bbb"> |
| </span></code></pre></div> |
| </div> |
| <div> |
| |
| |
| |
| <div id="edit-github"> |
| <svg |
| fill="currentColor" |
| height="20" |
| width="20" |
| viewBox="0 0 40 40" |
| aria-hidden="true" |
| style="margin-right: 0.1em;vertical-align: sub; color: #3176d9"> |
| <g> |
| <path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z" /> |
| </g> |
| </svg> |
| <a class="github-link" title="Edit this page" href="" target="_blank"> |
| <span id="edit-github-text">Edit this page</span> |
| </a> |
| </div> |
| |
| </div> |
| <script> |
| let reg = /\/docs\/[a-zA-Z\-]+\/([\w|\.]+)\//; |
| let res = reg.exec(location.href); |
| let version = res && res[1]; |
| let editGithub = document.getElementById("edit-github"); |
| if (editGithub) { |
| editGithub.style.display = version === "next" ? "block" : "none"; |
| } |
| |
| if (version === "next") { |
| reg = /\/docs\/(.+?)\//; |
| let repoRes = reg.exec(location.href); |
| let repo = repoRes && repoRes[1]; |
| if (repo === "main") { |
| repo = "skywalking" |
| } |
| reg = /\/next\/(.+)/; |
| let docs = reg.exec(location.href); |
| let docsUrl = docs && docs[1]; |
| if (docsUrl) { |
| docsUrl = docsUrl.replace(/readme/i, 'README'); |
| } |
| let prefixUrl = "https://github.com/apache/" + repo + "/blob/master/docs/"; |
| let editGithubLink = document.querySelector("#edit-github a"); |
| if (editGithubLink) { |
| editGithubLink.href = prefixUrl + docsUrl.replace(/\/$/, ".md"); |
| } |
| } |
| </script> |
| |
| </main> |
| <div id="toc" class="d-none d-xl-block col-xl-2 td-toc d-print-none"> |
| |
| |
| |
| |
| |
| <div class="td-page-meta ml-2 pb-1 pt-2 mb-0"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| </div> |
| |
| |
| |
| |
| |
| |
| <nav id="TableOfContents"> |
| <ul> |
| <li><a href="#query-protocol">Query Protocol</a> |
| <ul> |
| <li> |
| <ul> |
| <li><a href="#metadata">Metadata</a></li> |
| <li><a href="#topology">Topology</a></li> |
| <li><a href="#metrics">Metrics</a></li> |
| <li><a href="#logs">Logs</a></li> |
| <li><a href="#trace">Trace</a></li> |
| <li><a href="#alarm">Alarm</a></li> |
| <li><a href="#event">Event</a></li> |
| <li><a href="#profiling">Profiling</a></li> |
| <li><a href="#on-demand-pod-logs">On-Demand Pod Logs</a></li> |
| <li><a href="#hierarchy">Hierarchy</a></li> |
| </ul> |
| </li> |
| <li><a href="#condition">Condition</a> |
| <ul> |
| <li><a href="#duration">Duration</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </nav> |
| |
| |
| |
| |
| <script> |
| $(function () { |
| var $toc = $("#TableOfContents"); |
| if (!$toc || !$toc.length) { |
| return; |
| } |
| var top = $toc.offset().top; |
| $(window).on("scroll", debounce(setTop, 100)) |
| $(window).on("scroll", debounce(addActive, 30)) |
| |
| function addActive() { |
| var scrollValue = $(window).scrollTop(); |
| var topEle = null; |
| $.each($('main h1, main h2, main h3'), function (index, item) { |
| if ($(item).offset().top - 70 > scrollValue) { |
| return |
| } |
| if (!topEle) { |
| topEle = item |
| } else if ($(item).offset().top >= $(topEle).offset().top) { |
| topEle = item |
| } |
| if (topEle) { |
| var id = $(item).attr('id'); |
| $toc.find('a').removeClass("active").end().find('a[href="' + '#' + id + '"]').addClass("active") |
| } |
| }) |
| } |
| |
| function setTop() { |
| var scrollValue = $(window).scrollTop(); |
| if (scrollValue >= top - 70) { |
| $toc.addClass('fixed') |
| } else { |
| $toc.removeClass('fixed') |
| } |
| } |
| |
| function debounce(fn, wait) { |
| var timeout = null; |
| return function () { |
| clearTimeout(timeout); |
| timeout = setTimeout(() => { |
| fn.apply(this, arguments); |
| }, wait); |
| }; |
| } |
| }) |
| |
| </script> |
| |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| <footer class="py-5 sky-row"> |
| <div class="container-fluid text-center"> |
| <div class=""> |
| |
| |
| |
| <ul class="list-inline mb-0"> |
| |
| <li class="list-inline-item mx-2 h3" data-toggle="tooltip" data-placement="top" title="Twitter" aria-label="Twitter"> |
| <a class="text-color" target="_blank" href="https://twitter.com/asfskywalking"> |
| <i class="iconfont icon-twitter"></i> |
| </a> |
| </li> |
| |
| <li class="list-inline-item mx-2 h3" data-toggle="tooltip" data-placement="top" title="Slack" aria-label="Slack"> |
| <a class="text-color" target="_blank" href="http://s.apache.org/slack-invite"> |
| <i class="iconfont icon-slack"></i> |
| </a> |
| </li> |
| |
| <li class="list-inline-item mx-2 h3" data-toggle="tooltip" data-placement="top" title="Mailing list" aria-label="Mailing list"> |
| <a class="text-color" target="_blank" href="https://lists.apache.org/list.html?dev@skywalking.apache.org"> |
| <i class="iconfont icon-email"></i> |
| </a> |
| </li> |
| |
| <li class="list-inline-item mx-2 h3" data-toggle="tooltip" data-placement="top" title="GitHub" aria-label="GitHub"> |
| <a class="text-color" target="_blank" href="https://github.com/apache/skywalking"> |
| <i class="iconfont icon-github"></i> |
| </a> |
| </li> |
| |
| </ul> |
| |
| |
| |
| </div> |
| <div class=""> |
| |
| <small class="text-color">© 2017 - 2024 The Apache Software Foundation All Rights Reserved</small> |
| |
| |
| </div> |
| <div class=""> |
| <small class="text-color mt-4">Apache SkyWalking, SkyWalking, Apache, the Apache feather logo, and the Apache SkyWalking project logo are either registered trademarks or trademarks of the Apache Software Foundation.</small> |
| </div> |
| </div> |
| </footer> |
| |
| |
| </div> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <div id="popup"> |
| <div class="mask"> |
| <img src=""/> |
| </div> |
| </div> |
| |
| <div class="sidebar-mask"></div> |
| <div class="sidebar"> |
| <nav class="nav-links"> |
| <div class="nav-item"><a href="/docs/" class="nav-link">Projects and Documentation</a></div> |
| <div class="nav-item"><a href="/events/" class="nav-link">Events</a></div> |
| <div class="nav-item"><a href="/blog/" class="nav-link router-link-exact-active router-link-active">Blog</a> |
| </div> |
| <div class="nav-item"><a href="/downloads/" class="nav-link">Downloads</a></div> |
| <div class="nav-item"><a href="/team/" class="nav-link">Team</a></div> |
| <div class="nav-item"><a href="/users/" class="nav-link">Users</a></div> |
| <div class="nav-item"> |
| <div class="dropdown-wrapper open"> |
| <a class="dropdown-title"><span>中文资料</span> |
| <span class="arrow down"></span> |
| </a> |
| <ul class="nav-dropdown"> |
| <li class="dropdown-item"> |
| <a href="/zh/" class="nav-link external">博客</a> |
| </li> |
| <li class="dropdown-item"> |
| <a href="https://space.bilibili.com/390683219" target="_blank" |
| rel="noopener noreferrer" class="nav-link external">B站</a> |
| </li> |
| <li class="dropdown-item"> |
| <a href="https://juejin.cn/user/13673577331607" target="_blank" |
| rel="noopener noreferrer" class="nav-link external">掘金</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="nav-item"> |
| <div class="dropdown-wrapper open"> |
| <a class="dropdown-title"> |
| <span>Links</span> |
| <span class="arrow down"></span> |
| </a> |
| <ul class="nav-dropdown"> |
| <li class="dropdown-item"> |
| <a href="http://www.apache.org/" target="_blank" |
| rel="noopener noreferrer" class="nav-link external"> |
| Apache Software Foundation |
| </a> |
| </li> |
| <li class="dropdown-item"> |
| <a href="https://github.com/apache/skywalking/issues" |
| target="_blank" rel="noopener noreferrer" |
| class="nav-link external"> |
| GitHub Issue Tracker |
| </a> |
| </li> |
| <li class="dropdown-item"> |
| <a href="https://lists.apache.org/list.html?dev@skywalking.apache.org" target="_blank" |
| rel="noopener noreferrer" class="nav-link external"> |
| Dev Mailing List |
| </a> |
| </li> |
| <li class="dropdown-item"> |
| <a href="http://www.apache.org/licenses/" target="_blank" |
| rel="noopener noreferrer" class="nav-link external"> |
| License |
| </a> |
| </li> |
| <li class="dropdown-item"> |
| <a href="http://www.apache.org/events/current-event" |
| target="_blank" rel="noopener noreferrer" |
| class="nav-link external"> |
| Apache Events |
| </a> |
| </li> |
| <li class="dropdown-item"> |
| <a href="http://www.apache.org/security/" target="_blank" |
| rel="noopener noreferrer" class="nav-link external"> |
| Security |
| </a> |
| </li> |
| <li class="dropdown-item"> |
| <a href="http://www.apache.org/foundation/sponsorship.html" |
| target="_blank" rel="noopener noreferrer" |
| class="nav-link external"> |
| Sponsorship and Donate |
| </a> |
| </li> |
| <li class="dropdown-item"> |
| <a href="http://www.apache.org/foundation/thanks.html" |
| target="_blank" rel="noopener noreferrer" |
| class="nav-link external"> |
| Thanks |
| </a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </nav> |
| </div> |
| |
| <script src="/js/bootstrap.bundle.min.js"></script> |
| |
| <script src="https://cdn.jsdelivr.net/npm/@docsearch/js@3"></script> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <script src="/js/main.min.dc00f5ca911ee5aa105ea6de6b3b7e8d8169ba5a3bf156b1fcfe23dfe3e62b0a.js" integrity="sha256-3AD1ypEe5aoQXqbeazt+jYFpulo78Vax/P4j3+PmKwo=" crossorigin="anonymous"></script> |
| |
| |
| <script src="/js/mermaid.min.js"></script> |
| <script> |
| window.onload = () => mermaid.init(undefined, ".language-mermaid"); |
| </script> |
| |
| |
| <script defer |
| src="https://widget.kapa.ai/kapa-widget.bundle.js" |
| data-website-id="8a08392b-9c4d-4816-8bc4-f93e0ecdd2a7" |
| data-project-name="SkyWalking" |
| data-project-color="#2B74B8" |
| data-button-text="Ask AI" |
| data-search-mode-enabled="true" |
| data-modal-open-on-command-k="true" |
| data-modal-disclaimer="The AI supports multiple languages, but it may not be accessible in China, a proxy is required." |
| data-project-logo="https://miro.medium.com/v2/resize:fit:2400/0*kmS-5BQ8ShAhZ_F4.jpg" |
| data-modal-example-questions="What is Apache SkyWalking?,How to deploy SkyWalking?,How to inject agents non-intrusively?,How to setup trace sampling?" |
| data-button-position-top="" |
| data-button-position-right="20px" |
| data-button-position-bottom="200px" |
| data-button-position-left="" |
| ></script> |
| |
| |
| |
| |
| </body> |
| <script> |
| $(function (){ |
| $('.doc-menu-button').on('click',function (){ |
| $('.td-sidebar').toggleClass('active') |
| }) |
| $('.version-select').on('change', function (){ |
| var selectVersion = $(this).val().toLowerCase(); |
| var prefix = ''; |
| var url = location.href.replace(/(\/docs\/[a-zA-Z\-]+\/)([\w|\.]+)(\/.*)/, function (match, p1, p2, p3){ |
| prefix = p1 + selectVersion; |
| return p1 + selectVersion + p3 |
| }) |
| go2SelectVersion(url, prefix) |
| |
| }) |
| function go2SelectVersion(url, prefix){ |
| $.ajax({ |
| url: url, |
| type: "get", |
| success:function(){ |
| location.href = url; |
| }, |
| statusCode: { |
| 404:function(){ |
| location.href = prefix + '/readme/'; |
| } |
| } |
| }); |
| } |
| }) |
| </script> |
| </html> |