# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


catalog:
  - name: "Welcome"
    path: "/readme"
  - name: "Concepts and Designs"
    catalog:
      - name: "What is SkyWalking?"
        catalog:
          - name: "Overview and Core concepts"
            path: "/en/concepts-and-designs/overview"
          - name: "Project Goals"
            path: "/en/concepts-and-designs/project-goals"
      - name: "Probe"
        catalog:
          - name: "Introduction"
            path: "/en/concepts-and-designs/probe-introduction"
          - name: "Service Auto Instrument Agent"
            path: "/en/concepts-and-designs/service-agent"
          - name: "Manual Instrument SDK"
            path: "/en/concepts-and-designs/manual-sdk"
          - name: "Service Mesh probe"
            path: "/en/concepts-and-designs/service-mesh-probe"
      - name: "Backend"
        catalog:
          - name: "Overview"
            path: "/en/concepts-and-designs/backend-overview"
          - name: "Observability Analysis Language"
            path: "/en/concepts-and-designs/oal"
          - name: "Meter Analysis Language"
            path: "/en/concepts-and-designs/mal"
          - name: "Log Analysis Language"
            path: "/en/concepts-and-designs/lal"
          - name: "Query in OAP"
            path: "/en/protocols/readme#query-protocol"
      - name: "UI"
        path: "/en/concepts-and-designs/ui-overview"
      - name: "CLI"
        path: "https://github.com/apache/skywalking-cli"
      - name: "Event"
        path: "/en/concepts-and-designs/event/"

  - name: "Setup"
    catalog:
      - name: "Server Agents"
        path: "/en/setup/service-agent/server-agents"
      - name: "Browser Agent"
        path: "/en/setup/service-agent/browser-agent"
      - name: "Compatibility"
        path: "/en/setup/service-agent/agent-compatibility"
      - name: "Backend"
        catalog:
          - name: "Quick Start"
            catalog:
              - name: "Introduction"
                path: "/en/setup/backend/backend-setup"
              - name: "Run with Docker"
                path: "/en/setup/backend/backend-docker"
              - name: "Run with Kubernetes"
                path: "/en/setup/backend/backend-k8s"
          - name: "Configuration Vocabulary"
            path: "/en/setup/backend/configuration-vocabulary"
          - name: "Advanced Setup"
            catalog:
            - name: "Service Grouping"
              path: "/en/setup/backend/service-auto-grouping"
            - name: "Overriding Settings"
              path: "/en/setup/backend/backend-setting-override"
            - name: "IP And Port Setting"
              path: "/en/setup/backend/backend-ip-port"
            - name: "Backend Init Mode Startup"
              path: "/en/setup/backend/backend-init-mode"
            - name: "Cluster Management"
              path: "/en/setup/backend/backend-cluster"
            - name: "Choose Storage"
              path: "/en/setup/backend/backend-storage"
            - name: "Setup External Communication Channels"
              path: "/en/setup/backend/backend-expose"
            - name: "Kafka Fetcher"
              path: "/en/setup/backend/Kafka-fetcher"
            - name: "Advanced Deployment Options"
              path: "/en/setup/backend/advanced-deployment"
            - name: "Data Lifecycle. Time To Live (TTL)"
              path: "/en/setup/backend/ttl"
            - name: "Group Parameterized Endpoints"
              path: "/en/setup/backend/endpoint-grouping-rules"
            - name: "Dynamical Logging"
              path: "/en/setup/backend/dynamical-logging"
            - name: "Security(SSL/TLS/mTLS)"
              path: "/en/setup/backend/grpc-security"
            - name: "Setup Native Load Balancer"
              path: "/en/setup/backend/backend-load-balancer"
          - name: "Tracing"
            catalog:
              - name: "Trace Sampling"
                path: "/en/setup/backend/trace-sampling"
              - name: "Detect Slow Database Statement"
                path: "/en/setup/backend/slow-db-statement"
              - name: "Message Queue Performance"
                path: "/en/setup/backend/mq"
              - name: "Uninstrumented Gateways"
                path: "/en/setup/backend/uninstrumented-gateways"
              - name: "Zipkin Trace"
                path: "/en/setup/backend/zipkin-trace"
          - name: "Metrics"
            catalog:
              - name: "OAL Scripts"
                path: "/en/guides/backend-oal-scripts"
              - name: "OpenTelemetry Metrics"
                path: "/en/setup/backend/opentelemetry-receiver"
              - name: "Zabbix Metrics"
                path: "/en/setup/backend/backend-zabbix"
              - name: "Meter Analysis"
                path: "/en/setup/backend/backend-meter"
              - name: "Apdex Threshold"
                path: "/en/setup/backend/apdex-threshold"
              - name: "Spring Sleuth Metrics Analysis"
                path: "/en/setup/backend/spring-sleuth-setup"
              - name: "Prometheus Metrics"
                path: "/en/setup/backend/prometheus-metrics"
              - name: "Alarm"
                path: "/en/setup/backend/backend-alarm"
          - name: "Logging"
            catalog:
              - name: "Log Collecting And Analysis"
                path: "/en/setup/backend/log-analyzer"
          - name: "Self Observability"
            catalog:
              - name: "Backend Telemetry"
                path: "/en/setup/backend/backend-telemetry"
              - name: "Health Check"
                path: "/en/setup/backend/backend-health-check"
          - name: "Extension"
            catalog:
              - name: "Metrics Exporter"
                path: "/en/setup/backend/metrics-exporter"
              - name: "Dynamic Configuration"
                path: "/en/setup/backend/dynamic-config"
          - name: "Service Mesh"
            catalog:
              - name: "Observe Istio Control Plane"
                path: "/en/setup/istio/readme"
              - name: "Observe Service Mesh"
                path: "/en/setup/envoy/als_setting"
              - name: "Send Envoy Metrics to SkyWalking with / without Istio"
                path: "/en/setup/envoy/metrics_service_setting"
          - name: "Infrastructure Monitoring"
            catalog:
              - name: "VMs Monitoring"
                path: "/en/setup/backend/backend-vm-monitoring"
              - name: "K8s Monitoring"
                path: "/en/setup/backend/backend-k8s-monitoring"
      - name: "UI Setup"
        path: "/en/setup/backend/ui-setup"
      - name: "CLI Setup"
        path: "https://github.com/apache/skywalking-cli"
  - name: "UI Introduction"
    path: "/en/ui/readme"
  - name: "Contributing Guides"
    catalog:
      - name: "Contribute"
        path: "/en/guides/readme"
      - name: "Become A Committer"
        path: "/en/guides/asf/committer"
      - name: "Release Guide"
        path: "/en/guides/how-to-release/"
      - name: "Compiling Guide"
        path: "/en/guides/How-to-build"
  - name: "Protocols"
    catalog:
      - name: "Data Report(Probe/Agent) Protocol"
        path: "/en/protocols/readme"
      - name: "Query Protocol (GraphQL)"
        path: "/en/protocols/query-protocol"
  - name: "FAQs"
    path: "/en/FAQ/readme"
  - name: "Changelog"
    path: "https://github.com/apache/skywalking/tree/master/changes"





