Skip to content

Latest commit

 

History

History
121 lines (99 loc) · 4.73 KB

design.md

File metadata and controls

121 lines (99 loc) · 4.73 KB

VATZ Project Design

Vatz Project Design

VATZ is mainly designed to check the node status in real time and get the alert notification of all blockchain protocols, including metrics that doesn't supported by the protocol itself. Features for helping node operators such as automation that enable node manage orchestration and controlling VATZ over CLI commands are going to be available in near future.

VATZ Project consists of 3 major components for followings:

(Will be upgraded or added for the future)

  1. VATZ proto
  2. VATZ Service
  3. VATZ Plugins (Official)

VATZ service supports extension to 3rd party apps for alert notifications & metric analysis.

  1. Dispatchers
  2. Monitoring (Metric Exporter)

1. VATZ-Proto Repository (gRPC protocols)

VATZ is a total node management tool that is designed to be customizable and expandable through plug-in and gRPC protocol from the initial design stage. End-users can develop their own plugins to add new features with their own needs regardless of the programming language by using gRPC protocol.

2. VATZ Service

  • This is a main service of VATZ that executes plugin APIs based on configs.
SAMPLE DEFAULT YAML
---
vatz_protocol_info:
  protocol_identifier: "Put Your Protocol here"
  port: 9090
  health_checker_schedule:
    - "0 1 * * *"
  notification_info:
    host_name: "Put your machine's host name"
    default_reminder_schedule:
      - "*/15 * * * *"
    dispatch_channels:
      - channel: "discord"
        secret: "Put your Discord Webhook"
      - channel: "pagerduty"
        secret: "Put your PagerDuty's Integration Key (Events API v2)"
      - channel: "telegram"
        secret: "Put Your Bot's Token"
        chat_id: "Put Your Chat's chat_id"
        reminder_schedule:
          - "*/5 * * * *"
  rpc_info:
    enabled: true
    address: "127.0.0.1"
    grpc_port: 19090
    http_port: 19091
  monitoring_info:
    prometheus:
      enabled: true
      address: "127.0.0.1"
      port: 18080

plugins_infos:
  default_verify_interval: 15
  default_execute_interval: 30
  default_plugin_name: "vatz-plugin"
  plugins:
    - plugin_name: "samplePlugin1"
      plugin_address: "localhost"
      plugin_port: 9001
      executable_methods:
        - method_name: "sampleMethod1"
    - plugin_name: "samplePlugin2"
      plugin_address: "localhost"
      verify_interval: 7
      execute_interval: 9
      plugin_port: 10002
      executable_methods:
        - method_name: "sampleMethod2"

vatz_protocol_info & plugins_infos must be declared in default.yaml to get started with VATZ properly.

3. Plugins

VATZ Plugins are designed with maximum flexibility and expandability to perform following actions for Blockchain protocols nodes

  • Check: Node & Machine status
  • Collect: Node's metric + more
  • Execute: Command on machine for certain behaviors (e.g, Restart Node)
  • Automation: Node operation orchestration
  • more : You can develop your own plugins to manage your own nodes.

4. Dispatchers(Notification)

VATZ Supports 3rd party apps for notification to alert users when there's any trouble on hardware or blockchain metrics.

5. Monitoring

The blockchain protocols have so many unique logs, and it brings a lot of data which causes difficulties in finding meaningful data by standardizing it to make it easier to view and most of the validator teams have trouble managing logs from running nodes due to log's varieties.
VATZ's monitoring service is designed to find a way to manage all logs from nodes efficiently with minimum efforts and cost.

- AS-IS

monitoring_as_is

VATZ currently supports sending metrics for followings for Prometheus:
(Note: More metrics will be available in the future)

  • VATZ:service Liveness
  • VATZ:plugins Liveness

- TO-BE

monitoring_to_be

VATZ will support to more monitoring and analysis 3rd party apps tool as shown in the diagram above.