/**
 * 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.
 */

[
  {
    "id": "apisix-Endpoint",
    "configuration": {
      "children": [
        {
          "x": 0,
          "y": 0,
          "w": 6,
          "h": 13,
          "i": "1",
          "type": "Widget",
          "widget": {
            "title": "HTTP Status Trend (requests per second)"
          },
          "graph": {
            "type": "Line",
            "step": false,
            "smooth": false,
            "showSymbol": false,
            "showXAxis": true,
            "showYAxis": true
          },
          "metrics": [
            "meter_apisix_endpoint_http_status"
          ],
          "metricTypes": [
            "readLabeledMetricsValues"
          ],
          "associate": [
            {
              "widgetId": "1"
            },
            {
              "widgetId": "2"
            },
            {
              "widgetId": "3"
            }
          ]
        },
        {
          "x": 6,
          "y": 0,
          "w": 6,
          "h": 13,
          "i": "2",
          "type": "Widget",
          "widget": {
            "title": "HTTP Latency (ms)"
          },
          "graph": {
            "type": "Line",
            "step": false,
            "smooth": false,
            "showSymbol": false,
            "showXAxis": true,
            "showYAxis": true
          },
          "metrics": [
            "meter_apisix_endpoint_http_latency"
          ],
          "metricTypes": [
            "readLabeledMetricsValues"
          ],
          "associate": [
            {
              "widgetId": "1"
            },
            {
              "widgetId": "2"
            },
            {
              "widgetId": "3"
            }
          ]
        },

        {
          "x": 12,
          "y": 0,
          "w": 6,
          "h": 13,
          "i": "3",
          "type": "Widget",
          "widget": {
            "title": "HTTP Bandwidth (KB)"
          },
          "graph": {
            "type": "Line",
            "step": false,
            "smooth": false,
            "showSymbol": false,
            "showXAxis": true,
            "showYAxis": true
          },
          "metrics": [
            "meter_apisix_endpoint_bandwidth"
          ],
          "metricTypes": [
            "readLabeledMetricsValues"
          ],
          "associate": [
            {
              "widgetId": "1"
            },
            {
              "widgetId": "2"
            },
            {
              "widgetId": "3"
            }
          ],
          "metricConfig": [
            {
              "calculation": "byteToKB"
            }
          ]
        }
      ],
      "layer": "APISIX",
      "entity": "Endpoint",
      "name": "APISIX-Endpoint",
      "id": "apisix-Endpoint",
      "isRoot": false
    }
  }
]
