On Tue, Jun 20, 2017 at 11:12 AM, Steve Clark <steve.clark@xxxxxxxxxxxxx> wrote:
On 06/20/2017 10:38 AM, Adrian Klaver wrote:
> On 06/20/2017 07:00 AM, Steve Clark wrote:
>> On 06/20/2017 09:02 AM, Adrian Klaver wrote:
>>> On 06/20/2017 05:35 AM, Steve Clark wrote:
>>>> Hello,
>>>>
>>>> We have customers whose equipment we monitor. Some of the customers don't run a 24/7 operation
>>>> and turn their equipment off when the go home. We need to create a schedule for them of when we
>>>> can ignore alerts from their equipment. We use postgresql in our monitoring environment to maintain
>>>> alerts and equipment to be monitored. Each piece of equipment has a unique unit serial number so
>>>> the schedule would be tied to this unit serial no.
>>>>
>>>> I would be very interested in what might be the best was to organize a scheduling table(s) in postgresql.
>>> Some questions:
>>>
>>> 1) What happens if someone ignores the schedule and the alert is real?
>> That is up in the air for now, probably if our NOC wasn't informed by the customer they
>> were working outside of the schedule the alert would be ignored, but then the customer
>> would probably call us because something wasn't working.
> It might be just me, but looks like a finger pointing exercise in the
> making. The classic '(Person 1)I thought you had it. (Person 2)No, I
> thought you had it'. The whole idea of ignoring an alert makes me
> nervous anyway. It seems that it should be possible to have the
> equipment produce an manual off state and the monitoring to acknowledge
> that. That being said, see more below.
>
>>> 2) What are the alerts and how many are there?
>> Device not pingable, as an example. The alerts continue to be sent to our
>> monitoring system, typically at 2 minute intervals, the monitoring system would look at the schedule for that
>> unit a decide whether or not to ignore the alert.
>>> 3) How is planned downtime during scheduled work times handled?
>> They would get a call from our NOC if the unit was down during scheduled uptimes.
> Could they not schedule a downtime?
Yes that would certainly be an option.
>
>>> 4) Do you want to organize by customers or equipment or both?
>> We have one piece of equipment at each customer that monitors one to many devices at the customer.
> So when you where talking about unique serial numbers where you talking
> about the monitoring equipment only or does that include the monitored
> equipment?
>
>>> 5) What is the equipment and do you or the customer provide it?
>> We provide the monitoring equipment, we or the customer could provide the equipment being monitored.
> My first draft of an idea(I'm guessing some of this exists already):
>
> 1) Location/customer table. Not sure if a customer can have more then
> one location.
>
> 2) Table of alerts and what they mean.
>
> 3) Schedule table keyed to location.
> To make life a good simpler I would use range types for the schedule:
> https://www.postgresql.org/docs/9.6/static/rangetypes. html
>
> Then you could use the range type operators and functions:
>
> https://www.postgresql.org/docs/9.6/static/functions- range.html#RANGE-OPERATORS- TABLE
>
> to verify whether an alert occurs in or out of the schedule.
>
> What I have not taken into account is whether a location has multiple
> schedules e.g. weekday vs weekend. Then there is the holidays issue. Is
> this something that needs to be dealt with?
>
> 4) Equipment table keyed to location.
We already have a monitoring system in place that has been in operation circa 2003. Just recently we have
added a new class of customer whose operation is not 24/7.
I envision the schedule could be fairly complicated
including WE and holidays, plus the enduser might shut down for lunch etc. I am looking for more on how to organize the
schedule, EG a standard weekly schedule then exceptions for holidays etc, or a separate individual schedule for
each week, also need to consider how easy it is to maintain the schedule, etc.
Thanks,
Steve
--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
I would design it this way. See Attached.
--
Melvin Davidson
I reserve the right to fantasize. Whether or not you
wish to share my fantasy is entirely up to you.
I reserve the right to fantasize. Whether or not you
wish to share my fantasy is entirely up to you.
TABLES alert_codes ( alert_type_cd varchar(5) NOT NULL, alert_description varchar(50), CONSTRAINT alerts_pk PRIMARY KEY (alert_type_cd) ); customers ( cust_id serial NOT NULL, cust_name varchar(30), CONSTRAINT customers_pk PRIMARY KEY(cust_id) ); locations ( cust_id bigint NOT NULL, location_id serial NOT NULL, location_desc varchar(50) NOT NULL, location_city varchar(40) NOT NULL, CONSTRAINT locations_pk PRIMARY KEY (cust_id, location_id) ); equipment ( cust_id bigint NOT NULL, equipment_id varchar(20) NOT NULL, equipment_desc varchar(50), CONSTRAINT equipment_pk PRIMARY KEY (cust_id, equipment_id), CONSTRAINT fk_equip_cust FOREIGN KEY (cust_id) REFERENCES customers(cust_id), CONSTRAINT fk_equip_loc FOREIGN KEY (location_id) REFERENCES locations(location_id) ); alerts (alert_id serial NOT NULL, cust_id bigint NOT NULL, location_id bigint NOT NULL, equipment_id varchar(20) NOT NULL, alert_type_cd varchar(5) NOT NULL, alert_time timestamp NOT NULL, CONSTRAINT alerts_pk PRIMARY KEY (alert_id), CONSTRAINT fk_alerts_cust FOREIGN KEY (cust_id) REFERENCES customers(cust_id), CONSTRAINT fk_equip_cust FOREIGN KEY (cust_id) REFERENCES customers(cust_id), CONSTRAINT fk_equip_loc FOREIGN KEY (location_id) REFERENCES locations(location_id), CONSTRAINT fk_equip FOREIGN KEY (equipment_id) REFERENCES equipment(equipment_id) ); schedule ( cust_id bigint NOT NULL, equipment_id varchar(20) NOT NULL, activedays varchar(5) NOT NULL, -- AD = all days, WD = mon-fri, Mn,Tu,Wd,Th,Fr active_start timestamp NOT NULL, active_end timestamp NOT NULL, CONSTRAINT fk_sched_cust FOREIGN KEY (cust_id) REFERENCES customers(cust_id), CONSTRAINT fk_equip FOREIGN KEY (equipment_id) REFERENCES equipment(equipment_id) ); holidays ( cust_id bigint NOT NULL, location_id bigint NOT NULL, holiday date NOT NULL, CONSTRAINT holiday_pk PRIMARY KEY (cust_id, location_id, holiday) );
-- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general