228 lines
7.7 KiB
SQL
228 lines
7.7 KiB
SQL
---
|
|
-- # Copyright 2017 FUJITSU LIMITED
|
|
---
|
|
|
|
SET statement_timeout = 0;
|
|
SET lock_timeout = 0;
|
|
SET client_encoding = 'UTF8';
|
|
SET standard_conforming_strings = on;
|
|
SET check_function_bodies = false;
|
|
SET client_min_messages = warning;
|
|
|
|
---
|
|
-- enum tables
|
|
---
|
|
|
|
CREATE TABLE alarm_state (
|
|
name character varying(20) NOT NULL,
|
|
CONSTRAINT alarm_state_pkey PRIMARY KEY (name)
|
|
);
|
|
|
|
CREATE TABLE alarm_definition_severity (
|
|
name character varying(20) NOT NULL,
|
|
CONSTRAINT alarm_definition_severity_pkey PRIMARY KEY (name)
|
|
);
|
|
|
|
CREATE TABLE notification_method_type (
|
|
name character varying(20) NOT NULL,
|
|
CONSTRAINT notification_method_type_pkey PRIMARY KEY (name)
|
|
);
|
|
|
|
---
|
|
-- tables
|
|
---
|
|
|
|
CREATE TABLE alarm (
|
|
id character varying(36) NOT NULL,
|
|
created_at timestamp without time zone NOT NULL,
|
|
updated_at timestamp without time zone NOT NULL,
|
|
lifecycle_state character varying(50),
|
|
link character varying(512),
|
|
state character varying(20) NOT NULL,
|
|
state_updated_at timestamp without time zone,
|
|
alarm_definition_id character varying(36) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE alarm_action (
|
|
action_id character varying(36) NOT NULL,
|
|
alarm_state character varying(20) NOT NULL,
|
|
alarm_definition_id character varying(36) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE alarm_definition (
|
|
id character varying(36) NOT NULL,
|
|
created_at timestamp without time zone NOT NULL,
|
|
updated_at timestamp without time zone NOT NULL,
|
|
actions_enabled boolean NOT NULL,
|
|
deleted_at timestamp without time zone,
|
|
description character varying(255),
|
|
expression text NOT NULL,
|
|
match_by character varying(255),
|
|
name character varying(255) NOT NULL,
|
|
severity character varying(20) NOT NULL,
|
|
tenant_id character varying(36) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE alarm_metric (
|
|
metric_definition_dimensions_id bytea NOT NULL,
|
|
alarm_id character varying(36) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE metric_definition (
|
|
id bytea NOT NULL,
|
|
name character varying(255) NOT NULL,
|
|
region character varying(255) NOT NULL,
|
|
tenant_id character varying(36) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE metric_definition_dimensions (
|
|
id bytea NOT NULL,
|
|
metric_definition_id bytea NOT NULL,
|
|
metric_dimension_set_id bytea NOT NULL
|
|
);
|
|
|
|
CREATE TABLE metric_dimension (
|
|
dimension_set_id bytea NOT NULL,
|
|
name character varying(255) NOT NULL,
|
|
value character varying(255) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE notification_method (
|
|
id character varying(36) NOT NULL,
|
|
created_at timestamp without time zone NOT NULL,
|
|
updated_at timestamp without time zone NOT NULL,
|
|
address character varying(512) NOT NULL,
|
|
name character varying(250),
|
|
tenant_id character varying(36) NOT NULL,
|
|
type character varying(20) NOT NULL,
|
|
period integer NOT NULL
|
|
);
|
|
|
|
CREATE TABLE sub_alarm (
|
|
id character varying(36) NOT NULL,
|
|
created_at timestamp without time zone NOT NULL,
|
|
updated_at timestamp without time zone NOT NULL,
|
|
expression text NOT NULL,
|
|
alarm_id character varying(36) NOT NULL,
|
|
sub_expression_id character varying(36),
|
|
state character varying(20) NOT NULL DEFAULT 'OK'
|
|
);
|
|
|
|
CREATE TABLE sub_alarm_definition (
|
|
id character varying(36) NOT NULL,
|
|
created_at timestamp without time zone NOT NULL,
|
|
updated_at timestamp without time zone NOT NULL,
|
|
function character varying(10) NOT NULL,
|
|
metric_name character varying(100),
|
|
operator character varying(5) NOT NULL,
|
|
period integer NOT NULL,
|
|
periods integer NOT NULL,
|
|
threshold double precision NOT NULL,
|
|
is_deterministic boolean NOT NULL,
|
|
alarm_definition_id character varying(36) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE sub_alarm_definition_dimension (
|
|
dimension_name character varying(255) NOT NULL,
|
|
value character varying(255),
|
|
sub_alarm_definition_id character varying(36) NOT NULL
|
|
);
|
|
|
|
---
|
|
-- primary keys
|
|
---
|
|
ALTER TABLE ONLY alarm_action
|
|
ADD CONSTRAINT alarm_action_pkey PRIMARY KEY (action_id, alarm_definition_id, alarm_state);
|
|
|
|
ALTER TABLE ONLY alarm_definition
|
|
ADD CONSTRAINT alarm_definition_pkey PRIMARY KEY (id);
|
|
|
|
ALTER TABLE ONLY alarm_metric
|
|
ADD CONSTRAINT alarm_metric_pkey PRIMARY KEY (alarm_id, metric_definition_dimensions_id);
|
|
|
|
ALTER TABLE ONLY alarm
|
|
ADD CONSTRAINT alarm_pkey PRIMARY KEY (id);
|
|
|
|
ALTER TABLE ONLY metric_definition_dimensions
|
|
ADD CONSTRAINT metric_definition_dimensions_pkey PRIMARY KEY (id);
|
|
|
|
ALTER TABLE ONLY metric_definition
|
|
ADD CONSTRAINT metric_definition_pkey PRIMARY KEY (id);
|
|
|
|
ALTER TABLE ONLY notification_method
|
|
ADD CONSTRAINT notification_method_pkey PRIMARY KEY (id);
|
|
|
|
ALTER TABLE ONLY sub_alarm_definition_dimension
|
|
ADD CONSTRAINT sub_alarm_definition_dimension_pkey PRIMARY KEY (dimension_name, sub_alarm_definition_id);
|
|
|
|
ALTER TABLE ONLY sub_alarm_definition
|
|
ADD CONSTRAINT sub_alarm_definition_pkey PRIMARY KEY (id);
|
|
|
|
ALTER TABLE ONLY sub_alarm
|
|
ADD CONSTRAINT sub_alarm_pkey PRIMARY KEY (id);
|
|
|
|
---
|
|
-- indexes
|
|
---
|
|
|
|
CREATE INDEX alarm_id ON alarm_metric USING btree (alarm_id);
|
|
CREATE INDEX deleted_at ON alarm_definition USING btree (deleted_at);
|
|
CREATE INDEX dimension_set_id ON metric_dimension USING btree (dimension_set_id);
|
|
CREATE INDEX metric_definition_dimensions_id ON alarm_metric USING btree (metric_definition_dimensions_id);
|
|
CREATE INDEX metric_definition_id ON metric_definition_dimensions USING btree (metric_definition_id);
|
|
CREATE UNIQUE INDEX metric_dimension_key ON metric_dimension USING btree (dimension_set_id, name);
|
|
CREATE INDEX metric_dimension_set_id ON metric_definition_dimensions USING btree (metric_dimension_set_id);
|
|
CREATE INDEX tenant_id ON alarm_definition USING btree (tenant_id);
|
|
|
|
---
|
|
-- foreign key constraints
|
|
---
|
|
ALTER TABLE ONLY alarm_action
|
|
ADD CONSTRAINT fk_alarm_action_alarm_definition FOREIGN KEY (alarm_definition_id) REFERENCES alarm_definition(id);
|
|
|
|
ALTER TABLE ONLY sub_alarm
|
|
ADD CONSTRAINT fk_sub_alarm_sub_alarm_definition FOREIGN KEY (sub_expression_id) REFERENCES sub_alarm_definition(id);
|
|
|
|
ALTER TABLE ONLY alarm
|
|
ADD CONSTRAINT fk_alarm_alarm_definition FOREIGN KEY (alarm_definition_id) REFERENCES alarm_definition(id);
|
|
|
|
ALTER TABLE ONLY sub_alarm_definition_dimension
|
|
ADD CONSTRAINT fk_sub_alarm_def_dim_sub_alarm_def FOREIGN KEY (sub_alarm_definition_id) REFERENCES sub_alarm_definition(id) ON DELETE CASCADE;
|
|
|
|
ALTER TABLE ONLY alarm_metric
|
|
ADD CONSTRAINT fk_alarm_metric_alamr FOREIGN KEY (alarm_id) REFERENCES alarm(id) ON DELETE CASCADE;
|
|
|
|
ALTER TABLE ONLY sub_alarm_definition
|
|
ADD CONSTRAINT fk_sub_alarm_def_alarm_def FOREIGN KEY (alarm_definition_id) REFERENCES alarm_definition(id) ON DELETE CASCADE;
|
|
|
|
ALTER TABLE ONLY sub_alarm
|
|
ADD CONSTRAINT fk_sub_alarm_alarm FOREIGN KEY (alarm_id) REFERENCES alarm(id) ON DELETE CASCADE;
|
|
|
|
ALTER TABLE ONLY alarm
|
|
ADD CONSTRAINT fk_alarm_state FOREIGN KEY (state) REFERENCES alarm_state (name);
|
|
|
|
ALTER TABLE ONLY alarm_action
|
|
ADD CONSTRAINT fk_alarm_action_state FOREIGN KEY (alarm_state) REFERENCES alarm_state (name);
|
|
|
|
ALTER TABLE ONLY alarm_definition
|
|
ADD CONSTRAINT fk_alarm_definition_severity FOREIGN KEY (severity) REFERENCES alarm_definition_severity (name);
|
|
|
|
ALTER TABLE ONLY notification_method
|
|
ADD CONSTRAINT fk_alarm_noticication_method_type FOREIGN KEY (type) REFERENCES notification_method_type (name);
|
|
|
|
---
|
|
-- data for enum tables
|
|
---
|
|
insert into alarm_state values ('UNDETERMINED');
|
|
insert into alarm_state values ('OK');
|
|
insert into alarm_state values ('ALARM');
|
|
|
|
insert into alarm_definition_severity values ('LOW');
|
|
insert into alarm_definition_severity values ('MEDIUM');
|
|
insert into alarm_definition_severity values ('HIGH');
|
|
insert into alarm_definition_severity values ('CRITICAL');
|
|
|
|
insert into notification_method_type values ('EMAIL');
|
|
insert into notification_method_type values ('WEBHOOK');
|
|
insert into notification_method_type values ('PAGERDUTY');
|