# 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:
  # Rule unique name, must be ended with `_rule`.
  endpoint_percent_rule:
    expression: sum(endpoint_percent < 75) >= 3
    period: 10
    # How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
    silence-period: 10
    message: Successful rate of endpoint {name} is lower than 75%

  service_percent_rule:
    expression: sum(service_percent < 85) >= 4
    # [Optional] Default, match all services in this metrics
    include-names:
      - service_a
      - service_b
    exclude-names:
      - service_c
    period: 10

  endpoint_percent_more_rule:
    expression: sum(endpoint_percent > 60) >= 3
    # The length of time to evaluate the metrics
    period: 10
    # How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
    silence-period: 10
    message: Successful rate of endpoint {name} is higher than 60%
    hooks:
      - "slack.custom1"
      - "pagerduty.custom1"

  comp1_rule:
    expression: sum((endpoint_percent > 60) * (endpoint_percent < 75)) >= 3
    period: 10
    silence-period: 10
    message: xxxxx

  comp2_rule:
    expression: sum((endpoint_percent > 60) * (endpoint_percent < 75)) >= 3
    period: 10
    silence-period: 10
    message: xxxxx
    hooks:
      - "slack.default"
      - "slack.custom1"
      - "pagerduty.custom1"

hooks:
  webhook:
    default:
      is-default: true
      urls:
        - http://127.0.0.1/notify/
        - http://127.0.0.1/go-wechat/

  gRPC:
    default:
      is-default: true
      target-host: 127.0.0.1
      target-port: 9888

  slack:
    default:
      is-default: true
      text-template: |-
        {
          "type": "section",
          "text": {
            "type": "mrkdwn",
            "text": ":alarm_clock: *Apache Skywalking Alarm* \n **%s**."
          }
        }
      webhooks:
        - https://hooks.slack.com/services/x/y/zssss
    custom1:
      text-template: |-
        {
          "type": "section",
          "text": {
            "type": "mrkdwn",
            "text": ":alarm_clock: *Apache Skywalking Alarm* \n **%s**."
          }
        }
      webhooks:
        - https://hooks.slack.com/services/x/y/zssss

  wechat:
    default:
      is-default: true
      text-template: |-
        {
          "msgtype": "text",
          "text": {
            "content": "Apache SkyWalking Alarm: \n %s."
          }
        }
      webhooks:
        - https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=dummy_key

  dingtalk:
    default:
      is-default: true
      text-template: |-
        {
          "msgtype": "text",
          "text": {
            "content": "Apache SkyWalking Alarm: \n %s."
          }
        }
      webhooks:
        - url: https://oapi.dingtalk.com/robot/send?access_token=dummy_token
          secret: dummysecret
        - url: https://oapi.dingtalk.com/robot/send?access_token=dummy_token2
          secret:

  feishu:
    default:
      is-default: true
      text-template: |-
        {
        "msg_type": "text",
        # at someone with feishu_user_ids
        # "ats": "feishu_user_id_1,feishu_user_id_2",
        "content": {
          "text": "Apache SkyWalking Alarm: \n %s."
          }
        }
      webhooks:
        - url: https://open.feishu.cn/open-apis/bot/v2/hook/dummy_token
          secret: dummysecret
        - url: https://open.feishu.cn/open-apis/bot/v2/hook/dummy_token2
          secret:

  welink:
    default:
      is-default: true
      text-template: "Apache SkyWalking Alarm: \n %s."
      webhooks:
        # you may find your own client_id and client_secret in your app, below are dummy, need to change.
        - client-id: "dummy_client_id"
          client-secret: dummy_secret_key
          access-token-url: https://open.welink.huaweicloud.com/api/auth/v2/tickets
          message-url: https://open.welink.huaweicloud.com/api/welinkim/v1/im-service/chat/group-chat
          # if you send to multi group at a time, separate group_ids with commas, e.g. "123xx","456xx"
          group-ids: "dummy_group_id"
          # make a name you like for the robot, it will display in group
          robot-name: robot

  pagerduty:
    default:
      is-default: true
      text-template: "dummy_text_template"
      integration-keys:
        - dummy_key
        - dummy_key2
    custom1:
      text-template: "Apache SkyWalking Alarm: \n %s."
      integration-keys:
        #    # you can find your integration key(s) on the Events API V2 integration page for your PagerDuty service(s).
        #    # (you may need to create an Events API V2 integration for your PagerDuty service if you don't have one yet)
        #    # below are dummy keys that should be replaced with your own integration keys.
        - dummy_key
        - dummy_key2
