# 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"
            path: "/en/setup/backend/backend-setup"
          - name: "Quick Start with Docker"
            path: "/en/setup/backend/docker"
          - 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: "Deploy In Kubernetes"
            path: "/en/setup/backend/backend-k8s"
          - 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"





