# 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.

rules:
  - name: nginx-access-log
    layer: NGINX
    dsl: |
      filter {
        if (tag("LOG_KIND") == "NGINX_ACCESS_LOG") {
          text {
            regexp $/.+ \"(?<request>.+)\" (?<status>\d{3}) .+/$
          }

          extractor {
            if (parsed.status) {
              tag 'http.status_code': parsed.status
            }
          }

          sink {
          }
        }
      }
  - name: nginx-error-log
    layer: NGINX
    dsl: |
      filter {
        if (tag("LOG_KIND") == "NGINX_ERROR_LOG") {
          text {
            regexp $/(?<time>\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) \[(?<level>.+)].*/$
          }

          extractor {
            tag level: parsed.level
            timestamp parsed.time as String, "yyyy/MM/dd HH:mm:ss"

            metrics {
              timestamp log.timestamp as Long
              labels level: parsed.level, service: log.service, service_instance_id: log.serviceInstance
              name "nginx_error_log_count"
              value 1
            }
          }

          sink {
          }
        }
      }
