# 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:
  # service response time > 10ms
  service_resp_time_rule:
    expression: sum(abs(increase(service_resp_time,1)) > 0) >= 1
    period: 10
    silence-period: 1
    message: Response time of service {name} is increase/decrease in 1 minutes of last 10 minutes.
    tags:
      level: WARNING
      receivers: lisi
    hooks:
      - webhook.custom
  # service_percentile > 10ms
  service_percentile_rule:
    expression: sum(service_percentile{_='0,1,2,3,4'} > 10) >= 3
    period: 10
    silence-period: 1
    message: Percentile response time of service {name} alarm in 3 minutes of last 10 minutes, due to more than one condition of p50 > 10, p75 > 10, p90 > 10, p95 > 10, p99 > 10.
    tags:
      level: WARNING
      receivers: lisi
    hooks:
      - webhook.none
  comp_rule:
    expression: sum((service_resp_time > 10) * (service_sla > 100)) >= 1
    period: 10
    message: Service {name} response time is more than 10ms and sla is more than 1%.
    tags:
      level: CRITICAL
      receivers: zhangsan

hooks:
  webhook:
    default:
      is-default: true
      urls:
        - http://provider:9090/alarm/receive
    custom:
      urls:
        - http://provider:9090/alarm/receive
    none:
      urls:
        - http://none:9090/alarm/receive
