#wip: sinchronizing Agents with SQL.
This commit is contained in:
parent
eaff1f33d9
commit
017c77860d
4
.gitignore
vendored
4
.gitignore
vendored
@ -6,4 +6,6 @@ __pycache__
|
|||||||
/Python/Assets
|
/Python/Assets
|
||||||
/SQLServer/data
|
/SQLServer/data
|
||||||
/SQLServer/temporary
|
/SQLServer/temporary
|
||||||
/SQLServer/scripts
|
/SQLServer/scripts
|
||||||
|
/Python/pyodbc.*
|
||||||
|
/Python/.venv
|
||||||
@ -6,7 +6,7 @@ candle_seconds=10
|
|||||||
candle_sleep_seconds=1
|
candle_sleep_seconds=1
|
||||||
execute_sleep_seconds=0
|
execute_sleep_seconds=0
|
||||||
show_json=true
|
show_json=true
|
||||||
send_json=true
|
send_json=false
|
||||||
url_server="http://192.168.1.131:13000/agents/debian"
|
url_server="http://192.168.1.131:13000/agents/debian"
|
||||||
# Settings.
|
# Settings.
|
||||||
|
|
||||||
@ -179,16 +179,18 @@ function execute(){
|
|||||||
net_data="$net_data,$(get_net_data)]"
|
net_data="$net_data,$(get_net_data)]"
|
||||||
candle_end=$(date +%s)
|
candle_end=$(date +%s)
|
||||||
|
|
||||||
json="$json$hostnames,$domain,$ips,$disks,$iterations"
|
# json="$json$hostnames,$domain,$ips,$disks,$iterations"
|
||||||
json="$json,[$candle_start,$candle_end]"
|
# json="$json,[$candle_start,$candle_end]"
|
||||||
json="$json,[${cpu_in//,/.},${cpu_out//,/.},${cpu_minimum//,/.},${cpu_maximum//,/.},${cpu_average//,/.}]"
|
json="$json,[${cpu_in//,/.},${cpu_out//,/.},${cpu_minimum//,/.},${cpu_maximum//,/.},${cpu_average//,/.}]"
|
||||||
json="$json,[$memory_total,$memory_in,$memory_out,$memory_minimum,$memory_maximum,${memory_average//,/.}]"
|
# json="$json,[$memory_total,$memory_in,$memory_out,$memory_minimum,$memory_maximum,${memory_average//,/.}]"
|
||||||
json="$json,$net_data"
|
# json="$json,$net_data"
|
||||||
json="$json]"
|
json="$json]"
|
||||||
|
|
||||||
if [ "$show_json" = true ]; then echo "$json";fi
|
if [ "$show_json" = true ]; then echo "$json";fi
|
||||||
if [ "$send_json" = true ]; then
|
if [ "$send_json" = true ]; then
|
||||||
local response=$(echo "$json"|curl -s -X POST -H "Content-Type: application/json" -d @- "$url_server/$key")
|
# local response=$(echo "$json"|curl -s -X POST -H "Content-Type: application/json" -d @- "$url_server/$key")
|
||||||
|
echo "$json"|curl -s -X POST -H "Content-Type: application/json" -d @- "$url_server/$key"
|
||||||
|
echo Sent
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,6 +11,12 @@
|
|||||||
[" ok ", "ok", "success", "succeed", "yes"],
|
[" ok ", "ok", "success", "succeed", "yes"],
|
||||||
["test", "debug"]
|
["test", "debug"]
|
||||||
],
|
],
|
||||||
|
"default_settings_files" : [
|
||||||
|
"/JSON/NucelarMonitor.settings.json"
|
||||||
|
],
|
||||||
|
"default_secrets_files" : [
|
||||||
|
"/JSON/NucelarMonitor.secrets.json"
|
||||||
|
],
|
||||||
"web_servers" : {
|
"web_servers" : {
|
||||||
"main" : {
|
"main" : {
|
||||||
"type" : "web_server",
|
"type" : "web_server",
|
||||||
@ -32,17 +38,6 @@
|
|||||||
"index_files" : ["index.html", "index.htm"]
|
"index_files" : ["index.html", "index.htm"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"databases" : {
|
|
||||||
"sql_server" : {
|
|
||||||
"type" : "sql_server",
|
|
||||||
"driver" : "{ODBC Driver 17 for SQL Server}",
|
|
||||||
"host" : "127.0.0.1",
|
|
||||||
"port" : 1433,
|
|
||||||
"user" : "sa",
|
|
||||||
"password" : "password",
|
|
||||||
"database" : "NucelarMonitor"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default_controllers" : {
|
"default_controllers" : {
|
||||||
"agents" : "agents"
|
"agents" : "agents"
|
||||||
},
|
},
|
||||||
@ -53,6 +48,6 @@
|
|||||||
"get:/ /Public"
|
"get:/ /Public"
|
||||||
],
|
],
|
||||||
"dispatchers" : {
|
"dispatchers" : {
|
||||||
"agents" : "agents_dispatcher"
|
"sql_server_agents" : "sql_server_agents"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,23 +2,13 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from typing import Self, Any, Optional, Sequence
|
from typing import Self, Any, Optional, Sequence
|
||||||
from abc import ABC, abstractmethod
|
|
||||||
from Interfaces.Application.NucelarMonitorInterface import NucelarMonitorInterface
|
from Interfaces.Application.NucelarMonitorInterface import NucelarMonitorInterface
|
||||||
from Models.QueryResponseModel import QueryResponseModel
|
from Interfaces.Owners.DatabasesInterface import DatabasesInterface
|
||||||
|
|
||||||
class DatabaseAbstract(ABC):
|
class DatabaseAbstract(DatabasesInterface):
|
||||||
|
|
||||||
def __init__(self:Self,
|
def __init__(self:Self,
|
||||||
nucelar_monitor:NucelarMonitorInterface,
|
nucelar_monitor:NucelarMonitorInterface,
|
||||||
inputs:Optional[dict[str, Any|None]|Sequence[Any|None]] = None
|
inputs:Optional[dict[str, Any|None]|Sequence[Any|None]] = None
|
||||||
) -> None:
|
) -> None:
|
||||||
self.nucelar_monitor:NucelarMonitorInterface = nucelar_monitor
|
self.nucelar_monitor:NucelarMonitorInterface = nucelar_monitor
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def close(self:Self) -> bool:pass
|
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def query(self:Self,
|
|
||||||
query:str,
|
|
||||||
parameters:Optional[dict[str, Any|None]|Sequence[Any|None]] = None
|
|
||||||
) -> QueryResponseModel:pass
|
|
||||||
@ -3,8 +3,9 @@
|
|||||||
|
|
||||||
from typing import Self
|
from typing import Self
|
||||||
from Interfaces.Application.NucelarMonitorInterface import NucelarMonitorInterface
|
from Interfaces.Application.NucelarMonitorInterface import NucelarMonitorInterface
|
||||||
|
from Interfaces.Owners.DispatchersInterface import DispatchersInterface
|
||||||
|
|
||||||
class DispatcherAbstract:
|
class DispatcherAbstract(DispatchersInterface):
|
||||||
|
|
||||||
def __init__(self:Self, nucelar_monitor:NucelarMonitorInterface) -> None:
|
def __init__(self:Self, nucelar_monitor:NucelarMonitorInterface) -> None:
|
||||||
self.nucelar_monitor:NucelarMonitorInterface = nucelar_monitor
|
self.nucelar_monitor:NucelarMonitorInterface = nucelar_monitor
|
||||||
@ -14,6 +14,7 @@ from Managers.ModelsManager import ModelsManager
|
|||||||
from Managers.TerminalManager import TerminalManager
|
from Managers.TerminalManager import TerminalManager
|
||||||
from Managers.RoutesManager import RoutesManager
|
from Managers.RoutesManager import RoutesManager
|
||||||
from Managers.ControllersManager import ControllersManager
|
from Managers.ControllersManager import ControllersManager
|
||||||
|
from Managers.DispatchersManager import DispatchersManager
|
||||||
from Managers.DatabasesManager import DatabasesManager
|
from Managers.DatabasesManager import DatabasesManager
|
||||||
from Managers.WebServersManager import WebServersManager
|
from Managers.WebServersManager import WebServersManager
|
||||||
|
|
||||||
@ -46,6 +47,7 @@ class NucelarMonitor:
|
|||||||
self.models:ModelsManager = ModelsManager(self)
|
self.models:ModelsManager = ModelsManager(self)
|
||||||
self.terminal:TerminalManager = TerminalManager(self)
|
self.terminal:TerminalManager = TerminalManager(self)
|
||||||
self.controllers:ControllersManager = ControllersManager(self)
|
self.controllers:ControllersManager = ControllersManager(self)
|
||||||
|
self.dispatchers:DispatchersManager = DispatchersManager(self)
|
||||||
self.routes:RoutesManager = RoutesManager(self)
|
self.routes:RoutesManager = RoutesManager(self)
|
||||||
self.databases:DatabasesManager = DatabasesManager(self)
|
self.databases:DatabasesManager = DatabasesManager(self)
|
||||||
self.web_servers:WebServersManager = WebServersManager(self)
|
self.web_servers:WebServersManager = WebServersManager(self)
|
||||||
|
|||||||
@ -10,6 +10,7 @@ from Models.IterationModel import (
|
|||||||
CandleTimeModel, IterationModel
|
CandleTimeModel, IterationModel
|
||||||
)
|
)
|
||||||
from Dispatchers.AgentsDispatcher import AgentsDispatcher
|
from Dispatchers.AgentsDispatcher import AgentsDispatcher
|
||||||
|
from Abstracts.DatabaseAbstract import DatabaseAbstract
|
||||||
from Utils.Utils import Utils
|
from Utils.Utils import Utils
|
||||||
|
|
||||||
class AgentsController(ControllerAbstract):
|
class AgentsController(ControllerAbstract):
|
||||||
@ -26,8 +27,10 @@ class AgentsController(ControllerAbstract):
|
|||||||
cpu:list[float, float, float, float, float]
|
cpu:list[float, float, float, float, float]
|
||||||
memory:list[int, int, int, int, int, float]
|
memory:list[int, int, int, int, int, float]
|
||||||
net_use:list[list[list[str, int, int, int, int, int, int]]]
|
net_use:list[list[list[str, int, int, int, int, int, int]]]
|
||||||
received:list[NetUseModel] = []
|
received:dict[str, NetUseModel] = {}
|
||||||
transmitted:list[NetUseModel] = []
|
transmitted:dict[str, NetUseModel] = {}
|
||||||
|
i:int
|
||||||
|
net:list[str, int, int, int, int, int, int]
|
||||||
|
|
||||||
(
|
(
|
||||||
hostnames, domain, interfaces_data, disks,
|
hostnames, domain, interfaces_data, disks,
|
||||||
@ -36,10 +39,23 @@ class AgentsController(ControllerAbstract):
|
|||||||
|
|
||||||
print(Utils.json_decode(request.body))
|
print(Utils.json_decode(request.body))
|
||||||
|
|
||||||
received = {net[0] : NetUseModel(*net[1:]) for i, net in enumerate(net_use[0])}
|
# 'enp3s0', 12489583046, 9909705, 0, 774527051, 4221200, 0
|
||||||
transmitted = {net[0] : NetUseModel(*net[1:]) for i, net in enumerate(net_use[1])}
|
# 'enp3s0', 12486039059, 9906802, 0, 774272948, 4220106, 0
|
||||||
|
# 3543987 2903, 0
|
||||||
|
|
||||||
self.nucelar_monitor.dispatchers.get(AgentsDispatcher, "sql_server").save(IterationModel(
|
for i, net in enumerate(net_use[0]):
|
||||||
|
print([net[0], net_use[1][i][0]])
|
||||||
|
received[net[0]] = NetUseModel(net_use[1][i][1] - net[1], net_use[1][i][2] - net[2], net_use[1][i][3] - net[3])
|
||||||
|
transmitted[net[0]] = NetUseModel(net_use[1][i][4] - net[4], net_use[1][i][5] - net[5], net_use[1][i][6] - net[6])
|
||||||
|
|
||||||
|
for key, net in received.items():
|
||||||
|
if net.bytes < 0 or net.packets < 0 or net.errors < 0:
|
||||||
|
print(["received", key, net.bytes, net.packets, net.errors])
|
||||||
|
for key, net in transmitted.items():
|
||||||
|
if net.bytes < 0 or net.packets < 0 or net.errors < 0:
|
||||||
|
print(["transmitted", key, net.bytes, net.packets, net.errors])
|
||||||
|
|
||||||
|
self.nucelar_monitor.dispatchers.get(AgentsDispatcher, "sql_server_agents").save(IterationModel(
|
||||||
key, hostnames, domain,
|
key, hostnames, domain,
|
||||||
[InterfaceModel(
|
[InterfaceModel(
|
||||||
i, name, is_ipv6, ip, mask, received[name], transmitted[name]
|
i, name, is_ipv6, ip, mask, received[name], transmitted[name]
|
||||||
@ -51,6 +67,11 @@ class AgentsController(ControllerAbstract):
|
|||||||
MemoryModel(*memory)
|
MemoryModel(*memory)
|
||||||
))
|
))
|
||||||
|
|
||||||
|
response.set_data({
|
||||||
|
"message": "Data saved successfully",
|
||||||
|
"key" : key
|
||||||
|
}, "application/json")
|
||||||
|
|
||||||
def windows(self:Self, request:RequestModel, response:ResponseModel) -> None:
|
def windows(self:Self, request:RequestModel, response:ResponseModel) -> None:
|
||||||
|
|
||||||
key:str = request.get("key")
|
key:str = request.get("key")
|
||||||
@ -71,7 +92,11 @@ class AgentsController(ControllerAbstract):
|
|||||||
print([hostnames, domain, interfaces, disks, iterations, candle_times, cpu, memory, net_use])
|
print([hostnames, domain, interfaces, disks, iterations, candle_times, cpu, memory, net_use])
|
||||||
|
|
||||||
def test(self:Self, request:RequestModel, response:ResponseModel) -> None:
|
def test(self:Self, request:RequestModel, response:ResponseModel) -> None:
|
||||||
response.set({
|
|
||||||
|
database:DatabaseAbstract = self.nucelar_monitor.databases.get("sql_server")
|
||||||
|
|
||||||
|
response.set_data({
|
||||||
"message": "Test successful",
|
"message": "Test successful",
|
||||||
"key" : request.get("key")
|
"key" : request.get("key"),
|
||||||
|
"data" : database.query("select top 10 * from information_schema.tables", {}).tables
|
||||||
}, "application/json")
|
}, "application/json")
|
||||||
@ -38,20 +38,32 @@ class AgentsDispatcher(DispatcherAbstract):
|
|||||||
})
|
})
|
||||||
|
|
||||||
for interface in iteration.interfaces:
|
for interface in iteration.interfaces:
|
||||||
database.query((
|
|
||||||
|
id:int = int(database.query((
|
||||||
"execute dbo.set_machine_interface_data " +
|
"execute dbo.set_machine_interface_data " +
|
||||||
"{key}, {candle_start}, {candle_end}, {candle_interations}, " +
|
"{key}, {name}, {is_ipv6}, {ip}, {mask}, {mounted}, @id output"
|
||||||
"{name}, {bytes}, {packages}, {errors}, {is_ipv6}, {ip}, {mask}"
|
|
||||||
), {
|
), {
|
||||||
"key" : iteration.key,
|
"key" : iteration.key,
|
||||||
"candle_start" : iteration.candle_time.start,
|
|
||||||
"candle_end" : iteration.candle_time.end,
|
|
||||||
"candle_interations" : iteration.iterations,
|
|
||||||
"name" : interface.name,
|
"name" : interface.name,
|
||||||
"bytes" : interface.received.bytes + interface.transmitted.bytes,
|
|
||||||
"packages" : interface.received.packets + interface.transmitted.packets,
|
|
||||||
"errors" : interface.received.errors + interface.transmitted.errors,
|
|
||||||
"is_ipv6" : interface.is_ipv6,
|
"is_ipv6" : interface.is_ipv6,
|
||||||
"ip" : interface.ip,
|
"ip" : interface.ip,
|
||||||
"mask" : interface.mask
|
"mask" : interface.mask,
|
||||||
})
|
"mounted" : True
|
||||||
|
}).variables["id"])
|
||||||
|
_type:str
|
||||||
|
|
||||||
|
for _type in ("received", "transmitted"):
|
||||||
|
database.query((
|
||||||
|
"execute dbo.set_machine_interface_traffic " +
|
||||||
|
"{id}, {type}, {candle_start}, {candle_end}, " +
|
||||||
|
"{candle_interations}, {bytes}, {packets}, {errors}"
|
||||||
|
), {
|
||||||
|
"id" : id,
|
||||||
|
"type" : _type,
|
||||||
|
"candle_start" : iteration.candle_time.start,
|
||||||
|
"candle_end" : iteration.candle_time.end,
|
||||||
|
"candle_interations" : iteration.iterations,
|
||||||
|
"bytes" : getattr(interface, _type).bytes,
|
||||||
|
"packets" : getattr(interface, _type).packets,
|
||||||
|
"errors" : getattr(interface, _type).errors
|
||||||
|
})
|
||||||
@ -3,7 +3,8 @@
|
|||||||
|
|
||||||
from typing import Self, Any, Optional, Sequence
|
from typing import Self, Any, Optional, Sequence
|
||||||
from re import Match as REMatch
|
from re import Match as REMatch
|
||||||
from Assets.pyodbc import Connection as Connection, connect as connect, Cursor as Cursor
|
import datetime
|
||||||
|
from pyodbc import Connection as Connection, connect as connect, Cursor as Cursor
|
||||||
from Interfaces.Application.NucelarMonitorInterface import NucelarMonitorInterface
|
from Interfaces.Application.NucelarMonitorInterface import NucelarMonitorInterface
|
||||||
from Abstracts.DatabaseAbstract import DatabaseAbstract
|
from Abstracts.DatabaseAbstract import DatabaseAbstract
|
||||||
from Models.QueryResponseModel import QueryResponseModel
|
from Models.QueryResponseModel import QueryResponseModel
|
||||||
@ -19,14 +20,14 @@ class SQLServerDriver(DatabaseAbstract):
|
|||||||
super().__init__(nucelar_monitor, inputs)
|
super().__init__(nucelar_monitor, inputs)
|
||||||
self.__connection:Connection|None = None
|
self.__connection:Connection|None = None
|
||||||
self.__string_connection:str = Utils.string_variables(self.nucelar_monitor.settings.get((
|
self.__string_connection:str = Utils.string_variables(self.nucelar_monitor.settings.get((
|
||||||
"odbc_string_connection", "sql_string_connection", "string_connection"
|
"odbc_string_connection", "sql_server_string_connection", "string_connection"
|
||||||
), inputs, "DRIVER={driver};SERVER={host},{port};UID={user};PWD={password};DATABASE={database}"), {
|
), inputs, "DRIVER={driver};SERVER={host},{port};UID={user};PWD={password};DATABASE={database}"), {
|
||||||
"driver" : self.nucelar_monitor.settings.get("sql_driver", inputs, "{ODBC Driver 17 for SQL Server}"),
|
"driver" : self.nucelar_monitor.settings.get(("sql_driver", "driver"), inputs, "{ODBC Driver 17 for SQL Server}"),
|
||||||
"host" : self.nucelar_monitor.settings.get(("sql_host", "odbc_host"), inputs, "localhost"),
|
"host" : self.nucelar_monitor.settings.get(("sql_host", "odbc_host", "host"), inputs, "localhost"),
|
||||||
"port" : self.nucelar_monitor.settings.get(("sql_port", "odbc_port"), inputs, 1433),
|
"port" : self.nucelar_monitor.settings.get(("sql_port", "odbc_port", "port"), inputs, 1433),
|
||||||
"user" : self.nucelar_monitor.settings.get(("sql_user", "odbc_user"), inputs, "sa"),
|
"user" : self.nucelar_monitor.settings.get(("sql_user", "odbc_user", "user"), inputs, "sa"),
|
||||||
"password" : self.nucelar_monitor.settings.get(("sql_password", "odbc_password"), inputs, "password"),
|
"password" : self.nucelar_monitor.settings.get(("sql_password", "odbc_password", "password"), inputs, "password"),
|
||||||
"database" : self.nucelar_monitor.settings.get(("sql_database", "odbc_database"), inputs, "NucelarMonitor")
|
"database" : self.nucelar_monitor.settings.get(("sql_database", "odbc_database", "database"), inputs, "NucelarMonitor")
|
||||||
})
|
})
|
||||||
|
|
||||||
def close(self:Self) -> bool:
|
def close(self:Self) -> bool:
|
||||||
@ -58,16 +59,22 @@ class SQLServerDriver(DatabaseAbstract):
|
|||||||
if key:
|
if key:
|
||||||
return (
|
return (
|
||||||
"'" + str(parameters[key]).replace("'","''") + "'" if isinstance(parameters[key], str) else
|
"'" + str(parameters[key]).replace("'","''") + "'" if isinstance(parameters[key], str) else
|
||||||
|
"'" + parameters[key].strftime("%Y-%m-%d %H:%M:%S") + "'" if isinstance(parameters[key], datetime.datetime) else
|
||||||
|
("1" if parameters[key] else "0") if isinstance(parameters[key], bool) else
|
||||||
str(parameters[key]) if key in parameters else matches.group(0))
|
str(parameters[key]) if key in parameters else matches.group(0))
|
||||||
|
|
||||||
key = matches.group(2)
|
key = matches.group(2)
|
||||||
|
|
||||||
variables.append(key)
|
print(key)
|
||||||
|
|
||||||
|
key in variables or variables.append(key)
|
||||||
|
|
||||||
return matches.group(0)
|
return matches.group(0)
|
||||||
|
|
||||||
query = RE.ODBC_STRING_VARIABLE.sub(callback, query)
|
query = RE.ODBC_STRING_VARIABLE.sub(callback, query)
|
||||||
|
|
||||||
|
print(variables)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
"".join("declare @" + variable + " varchar(max)\n" for variable in variables) +
|
"".join("declare @" + variable + " varchar(max)\n" for variable in variables) +
|
||||||
query +
|
query +
|
||||||
@ -90,6 +97,7 @@ class SQLServerDriver(DatabaseAbstract):
|
|||||||
self.__string_connection,
|
self.__string_connection,
|
||||||
autocommit = True
|
autocommit = True
|
||||||
)
|
)
|
||||||
|
|
||||||
cursor = self.__connection.cursor()
|
cursor = self.__connection.cursor()
|
||||||
query, variables = self.format_query(query, parameters)
|
query, variables = self.format_query(query, parameters)
|
||||||
|
|
||||||
@ -108,6 +116,7 @@ class SQLServerDriver(DatabaseAbstract):
|
|||||||
self.nucelar_monitor.exception(exception, "connection_exception", {
|
self.nucelar_monitor.exception(exception, "connection_exception", {
|
||||||
"string_connection" : self.__string_connection
|
"string_connection" : self.__string_connection
|
||||||
})
|
})
|
||||||
|
print(self.format_query(query, parameters))
|
||||||
finally:
|
finally:
|
||||||
if cursor is not None:
|
if cursor is not None:
|
||||||
cursor.close()
|
cursor.close()
|
||||||
|
|||||||
@ -3,12 +3,12 @@
|
|||||||
|
|
||||||
from typing import Self, Any
|
from typing import Self, Any
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from Abstracts.DatabaseAbstract import DatabaseAbstract
|
from Interfaces.Owners.DatabasesInterface import DatabasesInterface
|
||||||
|
|
||||||
class DatabasesManagerInterface(ABC):
|
class DatabasesManagerInterface(ABC):
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def get(self:Self, key:str) -> type[DatabaseAbstract]|None:pass
|
def get(self:Self, key:str) -> type[DatabasesInterface]|None:pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def add(self:Self, inputs:Any|None, overwrite:bool = False) -> None:pass
|
def add(self:Self, inputs:Any|None, overwrite:bool = False) -> None:pass
|
||||||
|
|||||||
@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
from typing import Any, Self, TypeVar
|
from typing import Any, Self, TypeVar
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from Abstracts.DispatcherAbstract import DispatcherAbstract
|
from Interfaces.Owners.DispatchersInterface import DispatchersInterface
|
||||||
|
|
||||||
T = TypeVar("T", bound = DispatcherAbstract)
|
T = TypeVar("T", bound = DispatchersInterface)
|
||||||
|
|
||||||
class DispatchersManagerInterface(ABC):
|
class DispatchersManagerInterface(ABC):
|
||||||
|
|
||||||
|
|||||||
17
Python/Interfaces/Owners/DatabasesInterface.py
Normal file
17
Python/Interfaces/Owners/DatabasesInterface.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from abc import ABC, abstractmethod
|
||||||
|
from typing import Self, Any, Optional, Sequence
|
||||||
|
from Models.QueryResponseModel import QueryResponseModel
|
||||||
|
|
||||||
|
class DatabasesInterface(ABC):
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def close(self:Self) -> bool:pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def query(self:Self,
|
||||||
|
query:str,
|
||||||
|
parameters:Optional[dict[str, Any|None]|Sequence[Any|None]] = None
|
||||||
|
) -> QueryResponseModel:pass
|
||||||
7
Python/Interfaces/Owners/DispatchersInterface.py
Normal file
7
Python/Interfaces/Owners/DispatchersInterface.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
|
class DispatchersInterface(ABC):
|
||||||
|
pass
|
||||||
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
from typing import Self, Any
|
from typing import Self, Any
|
||||||
from Interfaces.Application.NucelarMonitorInterface import NucelarMonitorInterface
|
from Interfaces.Application.NucelarMonitorInterface import NucelarMonitorInterface
|
||||||
from Abstracts.DatabaseAbstract import DatabaseAbstract
|
from Interfaces.Owners.DatabasesInterface import DatabasesInterface
|
||||||
|
|
||||||
class DatabasesManager:
|
class DatabasesManager:
|
||||||
|
|
||||||
@ -12,7 +12,7 @@ class DatabasesManager:
|
|||||||
|
|
||||||
key:str
|
key:str
|
||||||
|
|
||||||
self.__databases:dict[str, DatabaseAbstract] = {}
|
self.__databases:dict[str, DatabasesInterface] = {}
|
||||||
|
|
||||||
for key in (
|
for key in (
|
||||||
"default_databases_files", "databases_files",
|
"default_databases_files", "databases_files",
|
||||||
@ -20,34 +20,34 @@ class DatabasesManager:
|
|||||||
):
|
):
|
||||||
self.add(self.nucelar_monitor.settings.get(key, None, []), True)
|
self.add(self.nucelar_monitor.settings.get(key, None, []), True)
|
||||||
|
|
||||||
def get(self:Self, key:str) -> type[DatabaseAbstract]|None:
|
def get(self:Self, key:str) -> type[DatabasesInterface]|None:
|
||||||
return self.__databases.get(key, None)
|
return self.__databases.get(key, None)
|
||||||
|
|
||||||
def add(self:Self, inputs:Any|None, overwrite:bool = False) -> None:
|
def add(self:Self, inputs:Any|None, overwrite:bool = False) -> None:
|
||||||
|
|
||||||
subinputs:dict[str, type[DatabaseAbstract]|dict[str, Any|None]]
|
subinputs:dict[str, type[DatabasesInterface]|dict[str, Any|None]]
|
||||||
|
|
||||||
for subinputs in self.nucelar_monitor.files.load_json(inputs):
|
for subinputs in self.nucelar_monitor.files.load_json(inputs):
|
||||||
|
|
||||||
key:str
|
key:str
|
||||||
database:DatabaseAbstract|dict[str, Any|None]
|
database:DatabasesInterface|dict[str, Any|None]
|
||||||
|
|
||||||
for key, database in subinputs.items():
|
for key, database in subinputs.items():
|
||||||
if isinstance(database, dict):
|
if isinstance(database, dict):
|
||||||
database = self.nucelar_monitor.models.get(
|
database = self.nucelar_monitor.models.get(
|
||||||
DatabaseAbstract,
|
DatabasesInterface,
|
||||||
self.nucelar_monitor.settings.get(("database_type", "type"), database, "sql_server")
|
self.nucelar_monitor.settings.get(("database_type", "type"), database, "sql_server")
|
||||||
)(self.nucelar_monitor, database)
|
)(self.nucelar_monitor, database)
|
||||||
if database is None:
|
if database is None:
|
||||||
continue
|
continue
|
||||||
if database is not None and isinstance(database, DatabaseAbstract) and (
|
if database is not None and isinstance(database, DatabasesInterface) and (
|
||||||
overwrite or key not in self.__databases
|
overwrite or key not in self.__databases
|
||||||
):
|
):
|
||||||
self.__databases[key] = database
|
self.__databases[key] = database
|
||||||
|
|
||||||
def close(self:Self) -> None:
|
def close(self:Self) -> None:
|
||||||
|
|
||||||
database:type[DatabaseAbstract]
|
database:type[DatabasesInterface]
|
||||||
|
|
||||||
for database in self.__databases.values():
|
for database in self.__databases.values():
|
||||||
database.close()
|
database.close()
|
||||||
@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
from typing import Any, Self, TypeVar
|
from typing import Any, Self, TypeVar
|
||||||
from Interfaces.Application.NucelarMonitorInterface import NucelarMonitorInterface
|
from Interfaces.Application.NucelarMonitorInterface import NucelarMonitorInterface
|
||||||
from Abstracts.DispatcherAbstract import DispatcherAbstract
|
from Interfaces.Owners.DispatchersInterface import DispatchersInterface
|
||||||
|
|
||||||
T = TypeVar("T", bound = DispatcherAbstract)
|
T = TypeVar("T", bound = DispatchersInterface)
|
||||||
|
|
||||||
class DispatchersManager:
|
class DispatchersManager:
|
||||||
|
|
||||||
@ -14,32 +14,32 @@ class DispatchersManager:
|
|||||||
|
|
||||||
key:str
|
key:str
|
||||||
|
|
||||||
self.__dispatcher:dict[str, DispatcherAbstract] = {}
|
self.__dispatchers:dict[str, DispatchersInterface] = {}
|
||||||
|
|
||||||
for key in (
|
for key in (
|
||||||
"default_dispatcher_files", "dispatcher_files",
|
"default_dispatchers_files", "dispatchers_files",
|
||||||
"default_dispatcher", "dispatcher"
|
"default_dispatchers", "dispatchers"
|
||||||
):
|
):
|
||||||
self.add(self.nucelar_monitor.settings.get(key, None, []), True)
|
self.add(self.nucelar_monitor.settings.get(key, None, []), True)
|
||||||
|
|
||||||
def get(self:Self, Type:type[T], key:str) -> T|None:
|
def get(self:Self, Type:type[T], key:str) -> T|None:
|
||||||
if key in self.__dispatcher and isinstance(self.__dispatcher[key], Type):
|
if key in self.__dispatchers and isinstance(self.__dispatchers[key], Type):
|
||||||
return self.__dispatcher[key]
|
return self.__dispatchers[key]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def add(self:Self, inputs:Any|None, overwrite:bool = False) -> None:
|
def add(self:Self, inputs:Any|None, overwrite:bool = False) -> None:
|
||||||
|
|
||||||
subinputs:dict[str, str|DispatcherAbstract]
|
subinputs:dict[str, str|DispatchersInterface]
|
||||||
|
|
||||||
for subinputs in self.nucelar_monitor.files.load_json(inputs):
|
for subinputs in self.nucelar_monitor.files.load_json(inputs):
|
||||||
|
|
||||||
key:str
|
key:str
|
||||||
dispatcher:DispatcherAbstract|str
|
dispatcher:DispatchersInterface|str
|
||||||
|
|
||||||
for key, dispatcher in subinputs.items():
|
for key, dispatcher in subinputs.items():
|
||||||
if isinstance(dispatcher, str):
|
if isinstance(dispatcher, str):
|
||||||
dispatcher = self.nucelar_monitor.models.get(DispatcherAbstract, dispatcher)(self.nucelar_monitor)
|
dispatcher = self.nucelar_monitor.models.get(DispatchersInterface, dispatcher)(self.nucelar_monitor)
|
||||||
if dispatcher is not None and isinstance(dispatcher, DispatcherAbstract) and (
|
if dispatcher is not None and isinstance(dispatcher, DispatchersInterface) and (
|
||||||
overwrite or key not in self.__dispatcher
|
overwrite or key not in self.__dispatchers
|
||||||
):
|
):
|
||||||
self.__dispatcher[key] = dispatcher
|
self.__dispatchers[key] = dispatcher
|
||||||
@ -59,8 +59,6 @@ class SettingsManager:
|
|||||||
def add(self:Self, inputs:Any|None, overwrite:bool = False) -> None:
|
def add(self:Self, inputs:Any|None, overwrite:bool = False) -> None:
|
||||||
|
|
||||||
subinputs:dict[str, Any|None]
|
subinputs:dict[str, Any|None]
|
||||||
|
|
||||||
print(inputs)
|
|
||||||
|
|
||||||
for subinputs in self.nucelar_monitor.files.load_json(inputs):
|
for subinputs in self.nucelar_monitor.files.load_json(inputs):
|
||||||
|
|
||||||
|
|||||||
@ -1,20 +1,21 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import datetime
|
||||||
from typing import Self
|
from typing import Self
|
||||||
|
|
||||||
class CPUModel:
|
class CPUModel:
|
||||||
def __init__(self:Self,
|
def __init__(self:Self,
|
||||||
_in:float,
|
_in:float,
|
||||||
_out:float,
|
_out:float,
|
||||||
maximum:float,
|
|
||||||
minimum:float,
|
minimum:float,
|
||||||
|
maximum:float,
|
||||||
average:float
|
average:float
|
||||||
) -> None:
|
) -> None:
|
||||||
self._in:float = _in
|
self._in:float = _in
|
||||||
self.out:float = _out
|
self.out:float = _out
|
||||||
self.maximum:float = maximum
|
|
||||||
self.minimum:float = minimum
|
self.minimum:float = minimum
|
||||||
|
self.maximum:float = maximum
|
||||||
self.average:float = average
|
self.average:float = average
|
||||||
|
|
||||||
class MemoryModel:
|
class MemoryModel:
|
||||||
@ -22,16 +23,16 @@ class MemoryModel:
|
|||||||
total:int,
|
total:int,
|
||||||
_in:int,
|
_in:int,
|
||||||
_out:int,
|
_out:int,
|
||||||
maximum:int,
|
|
||||||
minimum:int,
|
minimum:int,
|
||||||
average:float
|
maximum:int,
|
||||||
|
average:int
|
||||||
) -> None:
|
) -> None:
|
||||||
self.total:int = total
|
self.total:int = total
|
||||||
self._in:int = _in
|
self._in:int = _in
|
||||||
self.out:int = _out
|
self.out:int = _out
|
||||||
self.maximum:int = maximum
|
|
||||||
self.minimum:int = minimum
|
self.minimum:int = minimum
|
||||||
self.average:float = average
|
self.maximum:int = maximum
|
||||||
|
self.average:int = int(average)
|
||||||
|
|
||||||
class NetUseModel:
|
class NetUseModel:
|
||||||
def __init__(self:Self, _bytes:int, packets:int, errors:int) -> None:
|
def __init__(self:Self, _bytes:int, packets:int, errors:int) -> None:
|
||||||
@ -67,8 +68,8 @@ class DiskModel:
|
|||||||
|
|
||||||
class CandleTimeModel:
|
class CandleTimeModel:
|
||||||
def __init__(self:Self, start:int, end:int) -> None:
|
def __init__(self:Self, start:int, end:int) -> None:
|
||||||
self.start:int = start
|
self.start:datetime.datetime = datetime.datetime.fromtimestamp(start)
|
||||||
self.end:int = end
|
self.end:datetime.datetime = datetime.datetime.fromtimestamp(end)
|
||||||
|
|
||||||
class IterationModel:
|
class IterationModel:
|
||||||
def __init__(self:Self,
|
def __init__(self:Self,
|
||||||
|
|||||||
1
Python/requirements.txt
Normal file
1
Python/requirements.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
pyodbc==5.3.0
|
||||||
@ -13,7 +13,7 @@ inputs:dict[str, dict[str, Any|None]] = {
|
|||||||
"agents" : AgentsController,
|
"agents" : AgentsController,
|
||||||
"sql_server" : SQLServerDriver,
|
"sql_server" : SQLServerDriver,
|
||||||
"web_server" : WebServerDriver,
|
"web_server" : WebServerDriver,
|
||||||
"agents_dispatcher" : AgentsDispatcher,
|
"sql_server_agents" : AgentsDispatcher,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
14
README.md
14
README.md
@ -45,4 +45,16 @@ Datos de envío Debian:
|
|||||||
5. `int`: Paquetes enviados actualmente.
|
5. `int`: Paquetes enviados actualmente.
|
||||||
6. `int`: Errores en envío actualmente.
|
6. `int`: Errores en envío actualmente.
|
||||||
|
|
||||||
La idea es procesar el uso de red en Python.
|
La idea es procesar el uso de red en Python.
|
||||||
|
|
||||||
|
Para instalar el Driver cliente de SQL Server para usar con el Python ODBC sobre Debian.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
|
||||||
|
sudo add-apt-repository "$(curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list)"
|
||||||
|
sudo apt update
|
||||||
|
sudo apt -y install msodbcsql18 mssql-tools18 unixodbc-dev
|
||||||
|
|
||||||
|
```
|
||||||
@ -4,18 +4,19 @@ use NucelarMonitor
|
|||||||
|
|
||||||
if object_id(N'dbo.tables_drop', N'P') is not null drop procedure dbo.tables_drop
|
if object_id(N'dbo.tables_drop', N'P') is not null drop procedure dbo.tables_drop
|
||||||
go
|
go
|
||||||
create procedure dbo.tables_drop as begin
|
create procedure dbo.tables_drop as begin set nocount on
|
||||||
|
|
||||||
set nocount on
|
-- Plain 2.
|
||||||
|
|
||||||
-- Level Plains.
|
|
||||||
if object_id(N'dbo.MachineInterfacesTrafficPlain', N'U') is not null drop table dbo.MachineInterfacesTrafficPlain
|
if object_id(N'dbo.MachineInterfacesTrafficPlain', N'U') is not null drop table dbo.MachineInterfacesTrafficPlain
|
||||||
|
|
||||||
|
-- Plains 1.
|
||||||
if object_id(N'dbo.MachineInterfacesPlain', N'U') is not null drop table dbo.MachineInterfacesPlain
|
if object_id(N'dbo.MachineInterfacesPlain', N'U') is not null drop table dbo.MachineInterfacesPlain
|
||||||
if object_id(N'dbo.MachineDisksPlain', N'U') is not null drop table dbo.MachineDisksPlain
|
if object_id(N'dbo.MachineDisksPlain', N'U') is not null drop table dbo.MachineDisksPlain
|
||||||
|
|
||||||
|
-- Plains 0.
|
||||||
if object_id(N'dbo.MachinePlain', N'U') is not null drop table dbo.MachinePlain
|
if object_id(N'dbo.MachinePlain', N'U') is not null drop table dbo.MachinePlain
|
||||||
|
|
||||||
-- Level 2.
|
-- Level 2.
|
||||||
if object_id(N'dbo.MachineInterfacesData', N'U') is not null drop table dbo.MachineInterfacesData
|
|
||||||
if object_id(N'dbo.MachineInterfacesTraffic', N'U') is not null drop table dbo.MachineInterfacesTraffic
|
if object_id(N'dbo.MachineInterfacesTraffic', N'U') is not null drop table dbo.MachineInterfacesTraffic
|
||||||
if object_id(N'dbo.MachineDisksSpace', N'U') is not null drop table dbo.MachineDisksSpace
|
if object_id(N'dbo.MachineDisksSpace', N'U') is not null drop table dbo.MachineDisksSpace
|
||||||
if object_id(N'dbo.Exceptions', N'U') is not null drop table dbo.Exceptions
|
if object_id(N'dbo.Exceptions', N'U') is not null drop table dbo.Exceptions
|
||||||
|
|||||||
@ -4,9 +4,7 @@ use NucelarMonitor
|
|||||||
|
|
||||||
if object_id(N'dbo.tables_create', N'P') is not null drop procedure dbo.tables_create
|
if object_id(N'dbo.tables_create', N'P') is not null drop procedure dbo.tables_create
|
||||||
go
|
go
|
||||||
create procedure dbo.tables_create as begin
|
create procedure dbo.tables_create as begin set nocount on
|
||||||
|
|
||||||
set nocount on
|
|
||||||
|
|
||||||
-- Level 0.
|
-- Level 0.
|
||||||
if object_id(N'dbo.Machines', N'U') is null create table dbo.Machines(
|
if object_id(N'dbo.Machines', N'U') is null create table dbo.Machines(
|
||||||
@ -16,8 +14,8 @@ create procedure dbo.tables_create as begin
|
|||||||
date_in datetime not null constraint machines_df_date_in default getdate(),
|
date_in datetime not null constraint machines_df_date_in default getdate(),
|
||||||
date_out datetime,
|
date_out datetime,
|
||||||
constraint machines_pk primary key clustered (id),
|
constraint machines_pk primary key clustered (id),
|
||||||
constraint machines_uk_key unique ([key]),
|
constraint machines_uk_key unique nonclustered ([key] asc) with (fillfactor = 90),
|
||||||
constraint machines_ck_key check ([key] like '[a-zA-Z0-9][a-zA-Z0-9_]{0,31}')
|
constraint machines_ck_key check ([key] not like '%[^a-zA-Z0-9_]%' and [key] like '[a-zA-Z_]%')
|
||||||
)
|
)
|
||||||
|
|
||||||
if object_id(N'dbo.Types', N'U') is null create table dbo.Types(
|
if object_id(N'dbo.Types', N'U') is null create table dbo.Types(
|
||||||
@ -28,7 +26,7 @@ create procedure dbo.tables_create as begin
|
|||||||
date_out datetime,
|
date_out datetime,
|
||||||
constraint types_pk primary key clustered (id),
|
constraint types_pk primary key clustered (id),
|
||||||
constraint types_uk_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
constraint types_uk_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
||||||
constraint types_ck_name check ([name] like '[a-zA-Z_][a-zA-Z0-9_]{0,31}')
|
constraint types_ck_name check ([name] not like '%[^a-zA-Z0-9_]%' and [name] like '[a-zA-Z_]%')
|
||||||
)
|
)
|
||||||
|
|
||||||
if object_id(N'dbo.Domains', N'U') is null create table dbo.Domains(
|
if object_id(N'dbo.Domains', N'U') is null create table dbo.Domains(
|
||||||
@ -39,9 +37,8 @@ create procedure dbo.tables_create as begin
|
|||||||
date_out datetime,
|
date_out datetime,
|
||||||
constraint domains_pk primary key clustered (id),
|
constraint domains_pk primary key clustered (id),
|
||||||
constraint domains_uk_domain unique nonclustered (domain asc) with (fillfactor = 90),
|
constraint domains_uk_domain unique nonclustered (domain asc) with (fillfactor = 90),
|
||||||
constraint domains_ck_domain check ([domain] like '[a-zA-Z0-9_-.]{1,64}')
|
constraint domains_ck_domain check (len(domain) > 0 and domain not like '%[^a-zA-Z0-9_-.]%')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if object_id(N'dbo.Hostnames', N'U') is null create table dbo.Hostnames(
|
if object_id(N'dbo.Hostnames', N'U') is null create table dbo.Hostnames(
|
||||||
id integer not null identity(1, 1),
|
id integer not null identity(1, 1),
|
||||||
@ -51,7 +48,7 @@ create procedure dbo.tables_create as begin
|
|||||||
date_out datetime,
|
date_out datetime,
|
||||||
constraint hostnames_pk primary key clustered (id),
|
constraint hostnames_pk primary key clustered (id),
|
||||||
constraint hostnames_uk_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
constraint hostnames_uk_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
||||||
constraint hostnames_ck_name check ([name] like '[a-zA-Z0-9_-]{1,32}')
|
constraint hostnames_ck_name check (len([name]) > 0 and [name] not like '%[^a-zA-Z0-9_-]%')
|
||||||
)
|
)
|
||||||
|
|
||||||
if object_id(N'dbo.Disks', N'U') is null create table dbo.Disks(
|
if object_id(N'dbo.Disks', N'U') is null create table dbo.Disks(
|
||||||
@ -64,11 +61,10 @@ create procedure dbo.tables_create as begin
|
|||||||
date_out datetime,
|
date_out datetime,
|
||||||
constraint disks_pk primary key clustered (id),
|
constraint disks_pk primary key clustered (id),
|
||||||
-- constraint disks_uk_name unique nonclustered ([name] asc, mountpoint asc) with (fillfactor = 90),
|
-- constraint disks_uk_name unique nonclustered ([name] asc, mountpoint asc) with (fillfactor = 90),
|
||||||
constraint disks_ck_name check (
|
constraint disks_ck_name check ((
|
||||||
[name] like '[a-zA-Z0-9_-]{1,32}' or
|
len([name]) > 0 and [name] not like '%[^a-zA-Z0-9_-]%'
|
||||||
mountpoint like '[A-Z]:'
|
) or [name] like '[A-Z]:'),
|
||||||
),
|
constraint disks_ck_size check (size >= 0 and size < power(cast(2 as bigint), 53)),
|
||||||
constraint disks_ck_size check (size >= 0 and size < power(2, 53)),
|
|
||||||
constraint disks_ck_mountpoint check (
|
constraint disks_ck_mountpoint check (
|
||||||
mountpoint like '/%' or
|
mountpoint like '/%' or
|
||||||
mountpoint like '[a-zA-Z]:\%' or
|
mountpoint like '[a-zA-Z]:\%' or
|
||||||
@ -84,7 +80,7 @@ create procedure dbo.tables_create as begin
|
|||||||
date_out datetime,
|
date_out datetime,
|
||||||
constraint interfaces_pk primary key clustered (id),
|
constraint interfaces_pk primary key clustered (id),
|
||||||
-- constraint interfaces_uk_machine_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
-- constraint interfaces_uk_machine_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
||||||
constraint interfaces_ck_name check ([name] like '[a-zA-Z0-9_-]{1,32}')
|
constraint interfaces_ck_name check (len([name]) > 0 and [name] not like '%[^a-zA-Z0-9_-]%')
|
||||||
)
|
)
|
||||||
|
|
||||||
if object_id(N'dbo.CandlesTimes', N'U') is null create table dbo.CandlesTimes(
|
if object_id(N'dbo.CandlesTimes', N'U') is null create table dbo.CandlesTimes(
|
||||||
@ -96,7 +92,8 @@ create procedure dbo.tables_create as begin
|
|||||||
date_out datetime,
|
date_out datetime,
|
||||||
constraint candles_times_pk primary key clustered (id),
|
constraint candles_times_pk primary key clustered (id),
|
||||||
constraint candles_times_uk_from_to unique nonclustered ([from] asc, [to] asc) with (fillfactor = 90),
|
constraint candles_times_uk_from_to unique nonclustered ([from] asc, [to] asc) with (fillfactor = 90),
|
||||||
constraint candles_times_ck_from_to check ([from] < [to])
|
constraint candles_times_ck_from_to check ([from] < [to]),
|
||||||
|
constraint candles_times_ck_iterations check (iterations > 0)
|
||||||
)
|
)
|
||||||
|
|
||||||
if object_id(N'dbo.BigData', N'U') is null create table dbo.BigData(
|
if object_id(N'dbo.BigData', N'U') is null create table dbo.BigData(
|
||||||
@ -115,7 +112,8 @@ create procedure dbo.tables_create as begin
|
|||||||
date_in datetime not null constraint messages_df_date_in default getdate(),
|
date_in datetime not null constraint messages_df_date_in default getdate(),
|
||||||
date_out datetime,
|
date_out datetime,
|
||||||
constraint messages_pk primary key clustered (id),
|
constraint messages_pk primary key clustered (id),
|
||||||
constraint messages_ck_key check ([key] like '[a-zA-Z_][a-zA-Z0-9_]{0,127}')
|
constraint messages_uk_key unique nonclustered ([key] asc) with (fillfactor = 90),
|
||||||
|
constraint messages_ck_key check ([key] not like '%[^a-zA-Z0-9_]%' and [key] like '[a-zA-Z_]%')
|
||||||
)
|
)
|
||||||
|
|
||||||
if object_id(N'dbo.Databases', N'U') is null create table dbo.Databases(
|
if object_id(N'dbo.Databases', N'U') is null create table dbo.Databases(
|
||||||
@ -125,7 +123,7 @@ create procedure dbo.tables_create as begin
|
|||||||
date_out datetime,
|
date_out datetime,
|
||||||
constraint databases_pk primary key clustered (id),
|
constraint databases_pk primary key clustered (id),
|
||||||
constraint databases_uk_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
constraint databases_uk_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
||||||
constraint databases_ck_name check ([name] like '[a-zA-Z_][a-zA-Z0-9_]{0,63}')
|
constraint databases_ck_name check ([name] not like '%[^a-zA-Z0-9_]%' and [name] like '[a-zA-Z_]%')
|
||||||
)
|
)
|
||||||
|
|
||||||
-- Level 1.
|
-- Level 1.
|
||||||
@ -189,29 +187,29 @@ create procedure dbo.tables_create as begin
|
|||||||
on update no action
|
on update no action
|
||||||
on delete no action,
|
on delete no action,
|
||||||
constraint machine_ram_ck_memory_total check (
|
constraint machine_ram_ck_memory_total check (
|
||||||
total between 0 and power(2, 53) - 1
|
total between 0 and power(cast(2 as bigint), 53) - 1
|
||||||
),
|
),
|
||||||
constraint machine_ram_ck_memory_in check (
|
constraint machine_ram_ck_memory_in check (
|
||||||
[in] between 0 and power(2, 53) - 1 and
|
[in] between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
[in] between minimum and maximum and
|
[in] between minimum and maximum and
|
||||||
[in] <= total
|
[in] <= total
|
||||||
),
|
),
|
||||||
constraint machine_ram_ck_memory_out check (
|
constraint machine_ram_ck_memory_out check (
|
||||||
[out] between 0 and power(2, 53) - 1 and
|
[out] between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
[out] between minimum and maximum and
|
[out] between minimum and maximum and
|
||||||
[out] <= total
|
[out] <= total
|
||||||
),
|
),
|
||||||
constraint machine_ram_ck_memory_minimum check (
|
constraint machine_ram_ck_memory_minimum check (
|
||||||
minimum between 0 and power(2, 53) - 1 and
|
minimum between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
minimum <= total and
|
minimum <= total and
|
||||||
minimum <= maximum
|
minimum <= maximum
|
||||||
),
|
),
|
||||||
constraint machine_ram_ck_memory_maximum check (
|
constraint machine_ram_ck_memory_maximum check (
|
||||||
maximum between 0 and power(2, 53) - 1 and
|
maximum between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
maximum between total and minimum
|
maximum between minimum and total
|
||||||
),
|
),
|
||||||
constraint machine_ram_ck_memory_average check (
|
constraint machine_ram_ck_memory_average check (
|
||||||
average between 0 and power(2, 53) - 1 and
|
average between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
average between minimum and maximum and
|
average between minimum and maximum and
|
||||||
average <= total
|
average <= total
|
||||||
)
|
)
|
||||||
@ -237,9 +235,12 @@ create procedure dbo.tables_create as begin
|
|||||||
if object_id(N'dbo.MachineInterfaces', N'U') is null create table dbo.MachineInterfaces(
|
if object_id(N'dbo.MachineInterfaces', N'U') is null create table dbo.MachineInterfaces(
|
||||||
id integer not null identity(1, 1),
|
id integer not null identity(1, 1),
|
||||||
machine integer not null,
|
machine integer not null,
|
||||||
[interface] integer not null,
|
[interface] integer not null,
|
||||||
belongs bit not null constraint machine_interfaces_df_belongs default 1,
|
belongs bit not null constraint machine_interfaces_df_belongs default 1,
|
||||||
mounted bit not null constraint machine_interfaces_df_mounted default 1,
|
mounted bit not null constraint machine_interfaces_df_mounted default 1,
|
||||||
|
is_ipv6 bit not null constraint machine_interfaces_data_df_is_ipv6 default 0,
|
||||||
|
[address] varchar(45) not null,
|
||||||
|
mask tinyint not null,
|
||||||
date_in datetime not null constraint machine_interfaces_df_date_in default getdate(),
|
date_in datetime not null constraint machine_interfaces_df_date_in default getdate(),
|
||||||
date_out datetime,
|
date_out datetime,
|
||||||
constraint machine_interfaces_pk primary key clustered (id),
|
constraint machine_interfaces_pk primary key clustered (id),
|
||||||
@ -262,7 +263,7 @@ create procedure dbo.tables_create as begin
|
|||||||
on update no action
|
on update no action
|
||||||
on delete no action,
|
on delete no action,
|
||||||
constraint procedures_uk_name unique nonclustered ([database] asc, [name] asc) with (fillfactor = 90),
|
constraint procedures_uk_name unique nonclustered ([database] asc, [name] asc) with (fillfactor = 90),
|
||||||
constraint procedures_ck_name check ([name] like '[a-zA-Z_][a-zA-Z0-9_]{0,63}')
|
constraint procedures_ck_name check ([name] not like '%[^a-zA-Z0-9_]%' and [name] like '[a-zA-Z_]%')
|
||||||
)
|
)
|
||||||
|
|
||||||
-- Level 2.
|
-- Level 2.
|
||||||
@ -281,7 +282,7 @@ create procedure dbo.tables_create as begin
|
|||||||
on update no action
|
on update no action
|
||||||
on delete no action,
|
on delete no action,
|
||||||
constraint machine_disks_space_ck_free check (
|
constraint machine_disks_space_ck_free check (
|
||||||
free between 0 and power(2, 53) - 1 -- and
|
free between 0 and power(cast(2 as bigint), 53) - 1 -- and
|
||||||
-- free <= isnull((
|
-- free <= isnull((
|
||||||
-- select top 1 disks.[size]
|
-- select top 1 disks.[size]
|
||||||
-- from dbo.Disks disks
|
-- from dbo.Disks disks
|
||||||
@ -301,7 +302,7 @@ create procedure dbo.tables_create as begin
|
|||||||
candle_time integer not null,
|
candle_time integer not null,
|
||||||
[type] integer not null,
|
[type] integer not null,
|
||||||
bytes bigint not null,
|
bytes bigint not null,
|
||||||
packages integer not null,
|
packets integer not null,
|
||||||
errors integer not null,
|
errors integer not null,
|
||||||
date_in datetime not null constraint machine_interfaces_traffic_df_date_in default getdate(),
|
date_in datetime not null constraint machine_interfaces_traffic_df_date_in default getdate(),
|
||||||
date_out datetime,
|
date_out datetime,
|
||||||
@ -316,40 +317,40 @@ create procedure dbo.tables_create as begin
|
|||||||
on update no action
|
on update no action
|
||||||
on delete no action,
|
on delete no action,
|
||||||
constraint machine_interfaces_traffic_ck_bytes check (
|
constraint machine_interfaces_traffic_ck_bytes check (
|
||||||
bytes between 0 and power(2, 53) - 1
|
bytes between 0 and power(cast(2 as bigint), 53) - 1
|
||||||
),
|
),
|
||||||
constraint machine_interfaces_traffic_ck_packages check (
|
constraint machine_interfaces_traffic_ck_packets check (
|
||||||
packages between 0 and power(2, 31) - 1
|
packets between 0 and power(2, 30) - 1
|
||||||
),
|
),
|
||||||
constraint machine_interfaces_traffic_ck_errors check (
|
constraint machine_interfaces_traffic_ck_errors check (
|
||||||
errors between 0 and power(2, 31) - 1
|
errors between 0 and power(2, 30) - 1
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if object_id(N'dbo.MachineInterfacesData', N'U') is null create table dbo.MachineInterfacesData(
|
-- if object_id(N'dbo.MachineInterfacesData', N'U') is null create table dbo.MachineInterfacesData(
|
||||||
id integer not null identity(1, 1),
|
-- id integer not null identity(1, 1),
|
||||||
machine_interface integer not null,
|
-- machine_interface integer not null,
|
||||||
is_ipv6 bit not null constraint machine_interfaces_data_df_is_ipv6 default 0,
|
-- is_ipv6 bit not null constraint machine_interfaces_data_df_is_ipv6 default 0,
|
||||||
[address] varchar(45) not null,
|
-- [address] varchar(45) not null,
|
||||||
mask tinyint not null,
|
-- mask tinyint not null,
|
||||||
date_in datetime not null constraint machine_interfaces_data_df_date_in default getdate(),
|
-- date_in datetime not null constraint machine_interfaces_data_df_date_in default getdate(),
|
||||||
date_out datetime,
|
-- date_out datetime,
|
||||||
constraint machine_interfaces_data_pk primary key clustered (id),
|
-- constraint machine_interfaces_data_pk primary key clustered (id),
|
||||||
constraint machine_interfaces_data_fk_machine_interface foreign key (machine_interface) references dbo.MachineInterfaces(id)
|
-- constraint machine_interfaces_data_fk_machine_interface foreign key (machine_interface) references dbo.MachineInterfaces(id)
|
||||||
on update no action
|
-- on update no action
|
||||||
on delete no action,
|
-- on delete no action,
|
||||||
constraint machine_interfaces_data_ck_is_ipv6 check (
|
-- constraint machine_interfaces_data_ck_is_ipv6 check (
|
||||||
(is_ipv6 = 0 and [address] like '[0-9]%.%.%.%') or
|
-- (is_ipv6 = 0 and [address] like '[0-9]%.%.%.%') or
|
||||||
(is_ipv6 = 1 and [address] like '%:%')
|
-- (is_ipv6 = 1 and [address] like '%:%')
|
||||||
),
|
-- ),
|
||||||
constraint machine_interfaces_data_ck_address check (
|
-- constraint machine_interfaces_data_ck_address check (
|
||||||
([address] like '[0-9]%.%.%.%' and mask between 0 and 32) or
|
-- ([address] like '[0-9]%.%.%.%' and mask between 0 and 32) or
|
||||||
([address] like '%:%' and mask between 0 and 128)
|
-- ([address] like '%:%' and mask between 0 and 128)
|
||||||
),
|
-- ),
|
||||||
constraint machine_interfaces_data_ck_mask check (
|
-- constraint machine_interfaces_data_ck_mask check (
|
||||||
(mask between 0 and (case when is_ipv6 = 1 then 128 else 32 end))
|
-- (mask between 0 and (case when is_ipv6 = 1 then 128 else 32 end))
|
||||||
)
|
-- )
|
||||||
)
|
-- )
|
||||||
|
|
||||||
if object_id(N'dbo.Exceptions', N'U') is null create table dbo.Exceptions(
|
if object_id(N'dbo.Exceptions', N'U') is null create table dbo.Exceptions(
|
||||||
id integer not null identity(1, 1),
|
id integer not null identity(1, 1),
|
||||||
@ -376,7 +377,7 @@ create procedure dbo.tables_create as begin
|
|||||||
on delete no action
|
on delete no action
|
||||||
)
|
)
|
||||||
|
|
||||||
-- Level Plains 1.
|
-- Level Plains 0.
|
||||||
if object_id(N'dbo.MachinePlain', N'U') is null create table dbo.MachinePlain(
|
if object_id(N'dbo.MachinePlain', N'U') is null create table dbo.MachinePlain(
|
||||||
id integer not null identity(1, 1),
|
id integer not null identity(1, 1),
|
||||||
[key] varchar(32) not null,
|
[key] varchar(32) not null,
|
||||||
@ -410,32 +411,32 @@ create procedure dbo.tables_create as begin
|
|||||||
constraint machine_plain_fk_machine_cpu foreign key (machine_cpu) references dbo.MachineCPU(id)
|
constraint machine_plain_fk_machine_cpu foreign key (machine_cpu) references dbo.MachineCPU(id)
|
||||||
on update no action
|
on update no action
|
||||||
on delete no action,
|
on delete no action,
|
||||||
constraint machine_plain_uk_key unique ([key]),
|
constraint machine_plain_uk_key unique nonclustered ([key] asc) with (fillfactor = 90),
|
||||||
constraint machine_plain_ck_key check ([key] like '[a-zA-Z0-9][a-zA-Z0-9_]{0,31}'),
|
constraint machine_plain_ck_key check ([key] not like '%[^a-zA-Z0-9_]%' and [key] like '[a-zA-Z_]%'),
|
||||||
constraint machine_plain_ck_memory_total check (
|
constraint machine_plain_ck_memory_total check (
|
||||||
ram_total between 0 and power(2, 53) - 1
|
ram_total between 0 and power(cast(2 as bigint), 53) - 1
|
||||||
),
|
),
|
||||||
constraint machine_plain_ck_memory_in check (
|
constraint machine_plain_ck_memory_in check (
|
||||||
ram_in between 0 and power(2, 53) - 1 and
|
ram_in between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
ram_in between ram_minimum and ram_maximum and
|
ram_in between ram_minimum and ram_maximum and
|
||||||
ram_in <= ram_total
|
ram_in <= ram_total
|
||||||
),
|
),
|
||||||
constraint machine_plain_ck_memory_out check (
|
constraint machine_plain_ck_memory_out check (
|
||||||
ram_out between 0 and power(2, 53) - 1 and
|
ram_out between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
ram_out between ram_minimum and ram_maximum and
|
ram_out between ram_minimum and ram_maximum and
|
||||||
ram_out <= ram_total
|
ram_out <= ram_total
|
||||||
),
|
),
|
||||||
constraint machine_plain_ck_memory_minimum check (
|
constraint machine_plain_ck_memory_minimum check (
|
||||||
ram_minimum between 0 and power(2, 53) - 1 and
|
ram_minimum between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
ram_minimum <= ram_total and
|
ram_minimum <= ram_total and
|
||||||
ram_minimum <= ram_maximum
|
ram_minimum <= ram_maximum
|
||||||
),
|
),
|
||||||
constraint machine_plain_ck_memory_maximum check (
|
constraint machine_plain_ck_memory_maximum check (
|
||||||
ram_maximum between 0 and power(2, 53) - 1 and
|
ram_maximum between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
ram_maximum between ram_total and ram_minimum
|
ram_maximum between ram_minimum and ram_total
|
||||||
),
|
),
|
||||||
constraint machine_plain_ck_memory_average check (
|
constraint machine_plain_ck_memory_average check (
|
||||||
ram_average between 0 and power(2, 53) - 1 and
|
ram_average between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
ram_average between ram_minimum and ram_maximum and
|
ram_average between ram_minimum and ram_maximum and
|
||||||
ram_average <= ram_total
|
ram_average <= ram_total
|
||||||
),
|
),
|
||||||
@ -464,10 +465,11 @@ create procedure dbo.tables_create as begin
|
|||||||
-- Level Plains 1.
|
-- Level Plains 1.
|
||||||
if object_id(N'dbo.MachineInterfacesPlain', N'U') is null create table dbo.MachineInterfacesPlain(
|
if object_id(N'dbo.MachineInterfacesPlain', N'U') is null create table dbo.MachineInterfacesPlain(
|
||||||
id integer not null identity(1, 1),
|
id integer not null identity(1, 1),
|
||||||
|
plain integer not null,
|
||||||
machine integer not null,
|
machine integer not null,
|
||||||
interface integer not null,
|
interface integer not null,
|
||||||
machine_interface integer not null,
|
machine_interface integer not null,
|
||||||
[name] varchar(32) not null,
|
mounted bit not null constraint machine_interfaces_plain_df_mounted default 1,
|
||||||
is_ipv6 bit not null constraint machine_interfaces_plain_df_is_ipv6 default 0,
|
is_ipv6 bit not null constraint machine_interfaces_plain_df_is_ipv6 default 0,
|
||||||
[address] varchar(45) not null,
|
[address] varchar(45) not null,
|
||||||
mask tinyint not null,
|
mask tinyint not null,
|
||||||
@ -475,41 +477,20 @@ create procedure dbo.tables_create as begin
|
|||||||
date_in datetime not null constraint machine_interfaces_plain_df_date_in default getdate(),
|
date_in datetime not null constraint machine_interfaces_plain_df_date_in default getdate(),
|
||||||
date_out datetime,
|
date_out datetime,
|
||||||
constraint machine_interfaces_plain_pk primary key clustered (id),
|
constraint machine_interfaces_plain_pk primary key clustered (id),
|
||||||
|
constraint machine_interfaces_plain_fk_plain foreign key (plain) references dbo.MachinePlain(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action,
|
||||||
constraint machine_interfaces_plain_fk_machine foreign key (machine) references dbo.Machines(id)
|
constraint machine_interfaces_plain_fk_machine foreign key (machine) references dbo.Machines(id)
|
||||||
on update no action
|
on update no action
|
||||||
on delete no action,
|
on delete no action,
|
||||||
constraint machine_interfaces_plain_fk_interface foreign key (interface) references dbo.Interfaces(id)
|
constraint machine_interfaces_plain_fk_interface foreign key (interface) references dbo.Interfaces(id)
|
||||||
on update no action
|
on update no action
|
||||||
on delete no action,
|
on delete no action,
|
||||||
|
constraint machine_interfaces_plain_fk_machine_interface foreign key (machine_interface) references dbo.MachineInterfaces(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action,
|
||||||
constraint machine_interfaces_plain_uk_machine_interface unique nonclustered (machine asc, [interface] asc) with (fillfactor = 90),
|
constraint machine_interfaces_plain_uk_machine_interface unique nonclustered (machine asc, [interface] asc) with (fillfactor = 90),
|
||||||
-- constraint machine_interfaces_plain_uk_machine_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
-- constraint machine_interfaces_plain_uk_machine_name unique nonclustered ([name] asc) with (fillfactor = 90)
|
||||||
constraint machine_interfaces_plain_ck_name check ([name] like '[a-zA-Z0-9_-]{1,32}'),
|
|
||||||
constraint machine_interfaces_plain_ck_interface check ([interface] like '[a-zA-Z0-9_-]{1,32}')
|
|
||||||
)
|
|
||||||
|
|
||||||
if object_id(N'dbo.MachineInterfacesTrafficPlain', N'U') is null create table dbo.MachineInterfacesTrafficPlain(
|
|
||||||
id integer not null identity(1, 1),
|
|
||||||
machine_interface integer not null,
|
|
||||||
candle_time integer not null,
|
|
||||||
[type] integer not null,
|
|
||||||
bytes bigint not null,
|
|
||||||
packages integer not null,
|
|
||||||
errors integer not null,
|
|
||||||
date_in datetime not null constraint machine_interfaces_traffic_plain_df_date_in default getdate(),
|
|
||||||
date_out datetime,
|
|
||||||
constraint machine_interfaces_traffic_plain_pk primary key clustered (id),
|
|
||||||
constraint machine_interfaces_traffic_plain_fk_machine_interface foreign key (machine_interface) references dbo.MachineInterfacesPlain(id)
|
|
||||||
on update no action
|
|
||||||
on delete no action,
|
|
||||||
constraint machine_interfaces_traffic_plain_fk_candle_time foreign key (candle_time) references dbo.CandlesTimes(id)
|
|
||||||
on update no action
|
|
||||||
on delete no action,
|
|
||||||
constraint machine_interfaces_traffic_plain_fk_type foreign key ([type]) references dbo.Types(id)
|
|
||||||
on update no action
|
|
||||||
on delete no action,
|
|
||||||
constraint machine_interfaces_traffic_plain_ck_bytes check (bytes between 0 and power(2, 53) - 1),
|
|
||||||
constraint machine_interfaces_traffic_plain_ck_packages check (packages between 0 and power(2, 31) - 1),
|
|
||||||
constraint machine_interfaces_traffic_plain_ck_errors check (errors between 0 and power(2, 31) - 1)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if object_id(N'dbo.MachineDisksPlain', N'U') is null create table dbo.MachineDisksPlain(
|
if object_id(N'dbo.MachineDisksPlain', N'U') is null create table dbo.MachineDisksPlain(
|
||||||
@ -538,22 +519,47 @@ create procedure dbo.tables_create as begin
|
|||||||
on delete no action,
|
on delete no action,
|
||||||
constraint machine_disks_plain_uk_machine_disk unique nonclustered (machine asc, [disk] asc) with (fillfactor = 90),
|
constraint machine_disks_plain_uk_machine_disk unique nonclustered (machine asc, [disk] asc) with (fillfactor = 90),
|
||||||
-- constraint machine_disks_plain_uk_name unique nonclustered ([name] asc, mountpoint asc) with (fillfactor = 90),
|
-- constraint machine_disks_plain_uk_name unique nonclustered ([name] asc, mountpoint asc) with (fillfactor = 90),
|
||||||
constraint machine_disks_plain_ck_name check (
|
constraint machine_disks_plain_ck_name check ((
|
||||||
[name] like '[a-zA-Z0-9_-]{1,32}' or
|
len([name]) > 0 and [name] not like '%[^a-zA-Z0-9_-]%'
|
||||||
mountpoint like '[A-Z]:'
|
) or [name] like '[A-Z]:'),
|
||||||
),
|
constraint machine_disks_plain_ck_size check (size >= 0 and size < power(cast(2 as bigint), 53)),
|
||||||
constraint machine_disks_plain_ck_size check (size >= 0 and size < power(2, 53)),
|
|
||||||
constraint machine_disks_plain_ck_mountpoint check (
|
constraint machine_disks_plain_ck_mountpoint check (
|
||||||
mountpoint like '/%' or
|
mountpoint like '/%' or
|
||||||
mountpoint like '[a-zA-Z]:\%' or
|
mountpoint like '[a-zA-Z]:\%' or
|
||||||
mountpoint like '\\%'
|
mountpoint like '\\%'
|
||||||
),
|
),
|
||||||
constraint machine_disks_plain_ck_free check (
|
constraint machine_disks_plain_ck_free check (
|
||||||
free between 0 and power(2, 53) - 1 and
|
free between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
free <= [size]
|
free <= [size]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
-- Plain 2.
|
||||||
|
if object_id(N'dbo.MachineInterfacesTrafficPlain', N'U') is null create table dbo.MachineInterfacesTrafficPlain(
|
||||||
|
id integer not null identity(1, 1),
|
||||||
|
plain integer not null,
|
||||||
|
candle_time integer not null,
|
||||||
|
[type] integer not null,
|
||||||
|
bytes bigint not null,
|
||||||
|
packets integer not null,
|
||||||
|
errors integer not null,
|
||||||
|
date_in datetime not null constraint machine_interfaces_traffic_plain_df_date_in default getdate(),
|
||||||
|
date_out datetime,
|
||||||
|
constraint machine_interfaces_traffic_plain_pk primary key clustered (id),
|
||||||
|
constraint machine_interfaces_traffic_plain_fk_plain foreign key (plain) references dbo.MachineInterfacesPlain(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action,
|
||||||
|
constraint machine_interfaces_traffic_plain_fk_candle_time foreign key (candle_time) references dbo.CandlesTimes(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action,
|
||||||
|
constraint machine_interfaces_traffic_plain_fk_type foreign key ([type]) references dbo.Types(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action,
|
||||||
|
constraint machine_interfaces_traffic_plain_ck_bytes check (bytes between 0 and power(cast(2 as bigint), 53) - 1),
|
||||||
|
constraint machine_interfaces_traffic_plain_ck_packets check (packets between 0 and power(2, 30) - 1),
|
||||||
|
constraint machine_interfaces_traffic_plain_ck_errors check (errors between 0 and power(2, 30) - 1)
|
||||||
|
)
|
||||||
|
|
||||||
end
|
end
|
||||||
go
|
go
|
||||||
|
|
||||||
|
|||||||
@ -4,9 +4,581 @@ use NucelarMonitor
|
|||||||
|
|
||||||
if object_id(N'dbo.tables_update', N'P') is not null drop procedure dbo.tables_update
|
if object_id(N'dbo.tables_update', N'P') is not null drop procedure dbo.tables_update
|
||||||
go
|
go
|
||||||
create procedure dbo.tables_update as begin
|
create procedure dbo.tables_update as begin set nocount on
|
||||||
|
|
||||||
set nocount on
|
declare @database varchar(64) = 'NucelarMonitor'
|
||||||
|
|
||||||
|
-- Level 0.
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Machines' and column_name = 'key') is null
|
||||||
|
alter table dbo.Machines add
|
||||||
|
[key] varchar(32) not null,
|
||||||
|
constraint machines_uk_key unique nonclustered ([key] asc) with (fillfactor = 90),
|
||||||
|
constraint machines_ck_key check ([key] not like '%[^a-zA-Z0-9_]%' and [key] like '[a-zA-Z_]%')
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Machines' and column_name = 'description') is null
|
||||||
|
alter table dbo.Machines add [description] varchar(512)
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Types' and column_name = 'name') is null
|
||||||
|
alter table dbo.Types add
|
||||||
|
[name] varchar(32) not null,
|
||||||
|
constraint types_uk_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
||||||
|
constraint types_ck_name check ([name] not like '%[^a-zA-Z0-9_]%' and [name] like '[a-zA-Z_]%')
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Types' and column_name = 'description') is null
|
||||||
|
alter table dbo.Types add [description] varchar(512)
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Domains' and column_name = 'domain') is null
|
||||||
|
alter table dbo.Domains add
|
||||||
|
domain varchar(64) not null,
|
||||||
|
constraint domains_uk_domain unique nonclustered (domain asc) with (fillfactor = 90),
|
||||||
|
constraint domains_ck_domain check (len(domain) > 0 and domain not like '%[^a-zA-Z0-9_-.]%')
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Domains' and column_name = 'description') is null
|
||||||
|
alter table dbo.Domains add [description] varchar(512)
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Hostnames' and column_name = 'name') is null
|
||||||
|
alter table dbo.Hostnames add
|
||||||
|
[name] varchar(32) not null,
|
||||||
|
constraint hostnames_uk_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
||||||
|
constraint hostnames_ck_name check (len([name]) > 0 and [name] not like '%[^a-zA-Z0-9_-]%')
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Hostnames' and column_name = 'description') is null
|
||||||
|
alter table dbo.Hostnames add [description] varchar(512)
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Disks' and column_name = 'name') is null
|
||||||
|
alter table dbo.Disks add
|
||||||
|
[name] varchar(32) not null,
|
||||||
|
constraint disks_ck_name check ((
|
||||||
|
len([name]) > 0 and [name] not like '%[^a-zA-Z0-9_-]%'
|
||||||
|
) or [name] like '[A-Z]:')
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Disks' and column_name = 'size') is null
|
||||||
|
alter table dbo.Disks add
|
||||||
|
[size] bigint not null,
|
||||||
|
constraint disks_ck_size check (size >= 0 and size < power(cast(2 as bigint), 53))
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Disks' and column_name = 'mountpoint') is null
|
||||||
|
alter table dbo.Disks add
|
||||||
|
mountpoint varchar(128) not null,
|
||||||
|
constraint disks_ck_mountpoint check (
|
||||||
|
mountpoint like '/%' or
|
||||||
|
mountpoint like '[a-zA-Z]:\%' or
|
||||||
|
mountpoint like '\\%'
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Disks' and column_name = 'description') is null
|
||||||
|
alter table dbo.Disks add [description] varchar(512)
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Interfaces' and column_name = 'name') is null
|
||||||
|
alter table dbo.Interfaces add
|
||||||
|
[name] varchar(32) not null,
|
||||||
|
constraint interfaces_ck_name check (len([name]) > 0 and [name] not like '%[^a-zA-Z0-9_-]%')
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Interfaces' and column_name = 'description') is null
|
||||||
|
alter table dbo.Interfaces add [description] varchar(512)
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'CandlesTimes' and column_name = 'from') is null
|
||||||
|
alter table dbo.CandlesTimes add
|
||||||
|
[from] datetime not null,
|
||||||
|
constraint candles_times_ck_from check ([from] < [to])
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'CandlesTimes' and column_name = 'to') is null
|
||||||
|
alter table dbo.CandlesTimes add
|
||||||
|
[to] datetime not null,
|
||||||
|
constraint candles_times_ck_to check ([from] < [to])
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'CandlesTimes' and column_name = 'iterations') is null
|
||||||
|
alter table dbo.CandlesTimes add
|
||||||
|
iterations integer not null,
|
||||||
|
constraint candles_times_ck_iterations check (iterations > 0)
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'BigData' and column_name = 'hash') is null
|
||||||
|
alter table dbo.BigData add
|
||||||
|
[hash] binary(64) not null,
|
||||||
|
constraint big_data_uk_hash unique nonclustered ([hash] asc) with (fillfactor = 90)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'BigData' and column_name = 'value') is null
|
||||||
|
alter table dbo.BigData add [value] varchar(max) not null
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Messages' and column_name = 'key') is null
|
||||||
|
alter table dbo.Messages add
|
||||||
|
[key] varchar(128) not null,
|
||||||
|
constraint messages_uk_key unique nonclustered ([key] asc) with (fillfactor = 90),
|
||||||
|
constraint messages_ck_key check ([key] not like '%[^a-zA-Z0-9_]%' and [key] like '[a-zA-Z_]%')
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Databases' and column_name = 'name') is null
|
||||||
|
alter table dbo.Databases add
|
||||||
|
[name] varchar(64) not null,
|
||||||
|
constraint databases_uk_name unique nonclustered ([name] asc) with (fillfactor = 90),
|
||||||
|
constraint databases_ck_name check ([name] not like '%[^a-zA-Z0-9_]%' and [name] like '[a-zA-Z_]%')
|
||||||
|
|
||||||
|
-- Level 1.
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineCPU' and column_name = 'machine') is null
|
||||||
|
alter table dbo.MachineCPU add
|
||||||
|
machine integer not null,
|
||||||
|
constraint machine_cpu_fk_machine foreign key (machine) references dbo.Machines(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineCPU' and column_name = 'candle_time') is null
|
||||||
|
alter table dbo.MachineCPU add
|
||||||
|
candle_time integer not null,
|
||||||
|
constraint machine_cpu_fk_candle_time foreign key (candle_time) references dbo.CandlesTimes(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineCPU' and column_name = 'in') is null
|
||||||
|
alter table dbo.MachineCPU add
|
||||||
|
[in] float not null,
|
||||||
|
constraint machine_cpu_ck_cpu_in check (
|
||||||
|
[in] between 0 and 100 and
|
||||||
|
[in] between minimum and maximum
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineCPU' and column_name = 'out') is null
|
||||||
|
alter table dbo.MachineCPU add
|
||||||
|
[out] float not null,
|
||||||
|
constraint machine_cpu_ck_cpu_out check (
|
||||||
|
[out] between 0 and 100 and
|
||||||
|
[out] between minimum and maximum
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineCPU' and column_name = 'minimum') is null
|
||||||
|
alter table dbo.MachineCPU add
|
||||||
|
minimum float not null,
|
||||||
|
constraint machine_cpu_ck_cpu_minimum check (
|
||||||
|
minimum between 0 and 100 and
|
||||||
|
minimum <= maximum
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineCPU' and column_name = 'maximum') is null
|
||||||
|
alter table dbo.MachineCPU add
|
||||||
|
maximum float not null,
|
||||||
|
constraint machine_cpu_ck_cpu_maximum check (
|
||||||
|
maximum between 0 and 100 and
|
||||||
|
maximum >= minimum
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineCPU' and column_name = 'average') is null
|
||||||
|
alter table dbo.MachineCPU add
|
||||||
|
average float not null,
|
||||||
|
constraint machine_cpu_ck_cpu_average check (
|
||||||
|
average between 0 and 100 and
|
||||||
|
average between minimum and maximum
|
||||||
|
)
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineRAM' and column_name = 'machine') is null
|
||||||
|
alter table dbo.MachineRAM add
|
||||||
|
machine integer not null,
|
||||||
|
constraint machine_ram_fk_machine foreign key (machine) references dbo.Machines(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineRAM' and column_name = 'candle_time') is null
|
||||||
|
alter table dbo.MachineRAM add
|
||||||
|
candle_time integer not null,
|
||||||
|
constraint machine_ram_fk_candle_time foreign key (candle_time) references dbo.CandlesTimes(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineRAM' and column_name = 'total') is null
|
||||||
|
alter table dbo.MachineRAM add
|
||||||
|
total float not null,
|
||||||
|
constraint machine_ram_ck_ram_total check (
|
||||||
|
total between 0 and power(cast(2 as bigint), 53) - 1
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineRAM' and column_name = 'in') is null
|
||||||
|
alter table dbo.MachineRAM add
|
||||||
|
[in] float not null,
|
||||||
|
constraint machine_ram_ck_ram_in check (
|
||||||
|
[in] between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
|
[in] between minimum and maximum and
|
||||||
|
[in] <= total
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineRAM' and column_name = 'out') is null
|
||||||
|
alter table dbo.MachineRAM add
|
||||||
|
[out] float not null,
|
||||||
|
constraint machine_ram_ck_ram_out check (
|
||||||
|
[out] between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
|
[out] between minimum and maximum and
|
||||||
|
[out] <= total
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineRAM' and column_name = 'minimum') is null
|
||||||
|
alter table dbo.MachineRAM add
|
||||||
|
minimum float not null,
|
||||||
|
constraint machine_ram_ck_ram_minimum check (
|
||||||
|
minimum between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
|
minimum <= total and
|
||||||
|
minimum <= maximum
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineRAM' and column_name = 'maximum') is null
|
||||||
|
alter table dbo.MachineRAM add
|
||||||
|
maximum float not null,
|
||||||
|
constraint machine_ram_ck_ram_maximum check (
|
||||||
|
maximum between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
|
maximum between minimum and total
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineRAM' and column_name = 'average') is null
|
||||||
|
alter table dbo.MachineRAM add
|
||||||
|
average float not null,
|
||||||
|
constraint machine_ram_ck_ram_average check (
|
||||||
|
average between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
|
average between minimum and maximum and
|
||||||
|
average <= total
|
||||||
|
)
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisks' and column_name = 'machine') is null
|
||||||
|
alter table dbo.MachineDisks add
|
||||||
|
machine integer not null,
|
||||||
|
constraint machine_disks_fk_machine foreign key (machine) references dbo.Machines(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisks' and column_name = 'disk') is null
|
||||||
|
alter table dbo.MachineDisks add
|
||||||
|
[disk] integer not null,
|
||||||
|
constraint machine_disks_fk_disk foreign key ([disk]) references dbo.Disks(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisks' and column_name = 'belongs') is null
|
||||||
|
alter table dbo.MachineDisks add belongs bit not null constraint machine_disks_df_belongs default 1
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisks' and column_name = 'mounted') is null
|
||||||
|
alter table dbo.MachineDisks add mounted bit not null constraint machine_disks_df_mounted default 1
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfaces' and column_name = 'machine') is null
|
||||||
|
alter table dbo.MachineInterfaces add
|
||||||
|
machine integer not null,
|
||||||
|
constraint machine_interfaces_fk_machine foreign key (machine) references dbo.Machines(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfaces' and column_name = 'interface') is null
|
||||||
|
alter table dbo.MachineInterfaces add
|
||||||
|
[interface] integer not null,
|
||||||
|
constraint machine_interfaces_fk_interface foreign key ([interface]) references dbo.Interfaces(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfaces' and column_name = 'belongs') is null
|
||||||
|
alter table dbo.MachineInterfaces add belongs bit not null constraint machine_interfaces_df_belongs default 1
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfaces' and column_name = 'mounted') is null
|
||||||
|
alter table dbo.MachineInterfaces add mounted bit not null constraint machine_interfaces_df_mounted default 1
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfaces' and column_name = 'is_ipv6') is null
|
||||||
|
alter table dbo.MachineInterfaces add is_ipv6 bit not null constraint machine_interfaces_df_is_ipv6 default 0
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfaces' and column_name = 'address') is null
|
||||||
|
alter table dbo.MachineInterfaces add [address] varchar(45) not null
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfaces' and column_name = 'mask') is null
|
||||||
|
alter table dbo.MachineInterfaces add mask tinyint not null
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Procedures' and column_name = 'database') is null
|
||||||
|
alter table dbo.Procedures add
|
||||||
|
[database] integer not null,
|
||||||
|
constraint procedures_fk_database foreign key ([database]) references dbo.Databases(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Procedures' and column_name = 'name') is null
|
||||||
|
alter table dbo.Procedures add
|
||||||
|
[name] varchar(64) not null,
|
||||||
|
constraint procedures_uk_name unique nonclustered ([database] asc, [name] asc) with (fillfactor = 90),
|
||||||
|
constraint procedures_ck_name check ([name] not like '%[^a-zA-Z0-9_]%' and [name] like '[a-zA-Z_]%')
|
||||||
|
|
||||||
|
-- Level 2.
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisksSpace' and column_name = 'machine_disk') is null
|
||||||
|
alter table dbo.MachineDisksSpace add
|
||||||
|
machine_disk integer not null,
|
||||||
|
constraint machine_disks_space_fk_machine_disk foreign key (machine_disk) references dbo.MachineDisks(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisksSpace' and column_name = 'candle_time') is null
|
||||||
|
alter table dbo.MachineDisksSpace add
|
||||||
|
candle_time integer not null,
|
||||||
|
constraint machine_disks_space_fk_candle_time foreign key (candle_time) references dbo.CandleTimes(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisksSpace' and column_name = 'candle_time') is null
|
||||||
|
alter table dbo.MachineDisksSpace add
|
||||||
|
free bigint not null,
|
||||||
|
constraint machine_disks_space_ck_free check (free between 0 and power(cast(2 as bigint), 53) - 1)
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesTraffic' and column_name = 'machine_interface') is null
|
||||||
|
alter table dbo.MachineInterfacesTraffic add
|
||||||
|
machine_interface integer not null,
|
||||||
|
constraint machine_interfaces_traffic_fk_machine_interface foreign key (machine_interface) references dbo.MachineInterfaces(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesTraffic' and column_name = 'candle_time') is null
|
||||||
|
alter table dbo.MachineInterfacesTraffic add
|
||||||
|
candle_time integer not null,
|
||||||
|
constraint machine_interfaces_traffic_fk_candle_time foreign key (candle_time) references dbo.CandleTimes(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesTraffic' and column_name = 'type') is null
|
||||||
|
alter table dbo.MachineInterfacesTraffic add
|
||||||
|
[type] integer not null,
|
||||||
|
constraint machine_interfaces_traffic_fk_type foreign key ([type]) references dbo.Types(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesTraffic' and column_name = 'bytes') is null
|
||||||
|
alter table dbo.MachineInterfacesTraffic add
|
||||||
|
bytes bigint not null,
|
||||||
|
constraint machine_interfaces_traffic_ck_bytes check (
|
||||||
|
bytes between 0 and power(cast(2 as bigint), 53) - 1
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesTraffic' and column_name = 'packets') is null
|
||||||
|
alter table dbo.MachineInterfacesTraffic add
|
||||||
|
packets integer not null,
|
||||||
|
constraint machine_interfaces_traffic_ck_packets check (
|
||||||
|
packets between 0 and power(2, 30) - 1
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesTraffic' and column_name = 'errors') is null
|
||||||
|
alter table dbo.MachineInterfacesTraffic add
|
||||||
|
errors integer not null,
|
||||||
|
constraint machine_interfaces_traffic_ck_errors check (
|
||||||
|
errors between 0 and power(2, 30) - 1
|
||||||
|
)
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Exceptions' and column_name = 'procedure') is null
|
||||||
|
alter table dbo.Exceptions add
|
||||||
|
[procedure] integer not null,
|
||||||
|
constraint exceptions_fk_procedure foreign key ([procedure]) references dbo.Procedures(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Exceptions' and column_name = 'message') is null
|
||||||
|
alter table dbo.Exceptions add
|
||||||
|
[message] integer not null,
|
||||||
|
constraint exceptions_fk_message foreign key ([message]) references dbo.Messages(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Exceptions' and column_name = 'parameters') is null
|
||||||
|
alter table dbo.Exceptions add
|
||||||
|
parameters integer not null,
|
||||||
|
constraint exceptions_fk_parameters foreign key (parameters) references dbo.BigData(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Exceptions' and column_name = 'exception') is null
|
||||||
|
alter table dbo.Exceptions add
|
||||||
|
exception integer not null,
|
||||||
|
constraint exceptions_fk_exception foreign key (exception) references dbo.BigData(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Exceptions' and column_name = 'status') is null
|
||||||
|
alter table dbo.Exceptions add [status] varchar(16)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'Exceptions' and column_name = 'code') is null
|
||||||
|
alter table dbo.Exceptions add [code] integer
|
||||||
|
|
||||||
|
-- Plain 0.
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'key') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
[key] varchar(32) not null,
|
||||||
|
constraint machine_plain_uk_key unique nonclustered ([key] asc) with (fillfactor = 90),
|
||||||
|
constraint machine_plain_ck_key check ([key] not like '%[^a-zA-Z0-9_]%' and [key] like '[a-zA-Z_]%')
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'machine') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
machine integer not null,
|
||||||
|
constraint machine_plain_fk_machine foreign key (machine) references dbo.Machines(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'candle_time') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
candle_time integer not null,
|
||||||
|
constraint machine_plain_fk_candle_time foreign key (candle_time) references dbo.CandlesTimes(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'machine_ram') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
machine_ram integer not null,
|
||||||
|
constraint machine_plain_fk_machine_ram foreign key (machine_ram) references dbo.MachinesRAM(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'machine_cpu') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
machine_cpu integer not null,
|
||||||
|
constraint machine_plain_fk_machine_cpu foreign key (machine_cpu) references dbo.MachinesCPU(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'ram_total') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
ram_total float not null,
|
||||||
|
constraint machine_plain_ck_ram_total check (
|
||||||
|
ram_total between 0 and power(cast(2 as bigint), 53) - 1
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'ram_in') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
ram_in float not null,
|
||||||
|
constraint machine_plain_ck_ram_in check (
|
||||||
|
ram_in between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
|
ram_in between ram_minimum and ram_maximum and
|
||||||
|
ram_in <= ram_total
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'ram_out') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
ram_out float not null,
|
||||||
|
constraint machine_plain_ck_ram_out check (
|
||||||
|
ram_out between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
|
ram_out between ram_minimum and ram_maximum and
|
||||||
|
ram_out <= ram_total
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'ram_minimum') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
ram_minimum float not null,
|
||||||
|
constraint machine_plain_ck_ram_minimum check (
|
||||||
|
ram_minimum between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
|
ram_minimum <= ram_total and
|
||||||
|
ram_minimum <= ram_maximum
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'ram_maximum') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
ram_maximum float not null,
|
||||||
|
constraint machine_plain_ck_ram_maximum check (
|
||||||
|
ram_maximum between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
|
ram_maximum between ram_minimum and ram_total
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'ram_average') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
ram_average float not null,
|
||||||
|
constraint machine_plain_ck_ram_average check (
|
||||||
|
ram_average between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
|
ram_average between ram_minimum and ram_maximum and
|
||||||
|
ram_average <= ram_total
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'cpu_in') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
cpu_in float not null,
|
||||||
|
constraint machine_plain_ck_cpu_in check (
|
||||||
|
cpu_in between 0 and 100 and
|
||||||
|
cpu_in between cpu_minimum and cpu_maximum
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'cpu_out') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
cpu_out float not null,
|
||||||
|
constraint machine_plain_ck_cpu_out check (
|
||||||
|
cpu_out between 0 and 100 and
|
||||||
|
cpu_out between cpu_minimum and cpu_maximum
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'cpu_minimum') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
cpu_minimum float not null,
|
||||||
|
constraint machine_plain_ck_cpu_minimum check (
|
||||||
|
cpu_minimum between 0 and 100 and
|
||||||
|
cpu_minimum <= cpu_maximum
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'cpu_maximum') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
cpu_maximum float not null,
|
||||||
|
constraint machine_plain_ck_cpu_maximum check (
|
||||||
|
cpu_maximum between 0 and 100 and
|
||||||
|
cpu_maximum >= cpu_minimum
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachinePlain' and column_name = 'cpu_average') is null
|
||||||
|
alter table dbo.MachinePlain add
|
||||||
|
cpu_average float not null,
|
||||||
|
constraint machine_plain_ck_cpu_average check (
|
||||||
|
cpu_average between 0 and 100 and
|
||||||
|
cpu_average between cpu_minimum and cpu_maximum
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Plain 1.
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesPlain' and column_name = 'plain') is null
|
||||||
|
alter table dbo.MachineInterfacesPlain add
|
||||||
|
plain integer not null,
|
||||||
|
constraint machine_interfaces_plain_fk_plain foreign key (plain) references dbo.MachinePlain(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesPlain' and column_name = 'machine') is null
|
||||||
|
alter table dbo.MachineInterfacesPlain add
|
||||||
|
machine integer not null,
|
||||||
|
constraint machine_interfaces_plain_fk_machine foreign key (machine) references dbo.Machines(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesPlain' and column_name = 'interface') is null
|
||||||
|
alter table dbo.MachineInterfacesPlain add
|
||||||
|
interface integer not null,
|
||||||
|
constraint machine_interfaces_plain_fk_interface foreign key (interface) references dbo.Interfaces(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesPlain' and column_name = 'machine_interface') is null
|
||||||
|
alter table dbo.MachineInterfacesPlain add
|
||||||
|
machine_interface integer not null,
|
||||||
|
constraint machine_interfaces_plain_fk_machine_interface foreign key (machine_interface) references dbo.MachineInterfaces(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesPlain' and column_name = 'mounted') is null
|
||||||
|
alter table dbo.MachineInterfacesPlain add mounted bit not null constraint machine_interfaces_plain_df_mounted default 1
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesPlain' and column_name = 'is_ipv6') is null
|
||||||
|
alter table dbo.MachineInterfacesPlain add is_ipv6 bit not null constraint machine_interfaces_plain_df_is_ipv6 default 0
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesPlain' and column_name = 'address') is null
|
||||||
|
alter table dbo.MachineInterfacesPlain add [address] varchar(45) not null
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesPlain' and column_name = 'mask') is null
|
||||||
|
alter table dbo.MachineInterfacesPlain add mask tinyint not null
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesPlain' and column_name = 'belongs') is null
|
||||||
|
alter table dbo.MachineInterfacesPlain add belongs bit not null constraint machine_interfaces_plain_df_belongs default 1
|
||||||
|
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisksPlain' and column_name = 'plain') is null
|
||||||
|
alter table dbo.MachineDisksPlain add
|
||||||
|
plain integer not null,
|
||||||
|
constraint machine_disks_plain_fk_plain foreign key (plain) references dbo.MachinePlain(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisksPlain' and column_name = 'machine') is null
|
||||||
|
alter table dbo.MachineDisksPlain add
|
||||||
|
machine integer not null,
|
||||||
|
constraint machine_disks_plain_fk_machine foreign key (machine) references dbo.Machines(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisksPlain' and column_name = 'disk') is null
|
||||||
|
alter table dbo.MachineDisksPlain add
|
||||||
|
disk integer not null,
|
||||||
|
constraint machine_disks_plain_fk_disk foreign key (disk) references dbo.Disks(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action,
|
||||||
|
constraint machine_disks_plain_uk_machine_disk unique nonclustered (machine asc, [disk] asc) with (fillfactor = 90)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisksPlain' and column_name = 'candle_time') is null
|
||||||
|
alter table dbo.MachineDisksPlain add
|
||||||
|
candle_time integer not null,
|
||||||
|
constraint machine_disks_plain_fk_candle_time foreign key (candle_time) references dbo.CandlesTimes(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisksPlain' and column_name = 'name') is null
|
||||||
|
alter table dbo.MachineDisksPlain add
|
||||||
|
[name] varchar(32) not null,
|
||||||
|
constraint machine_disks_plain_ck_name check ((
|
||||||
|
len([name]) > 0 and [name] not like '%[^a-zA-Z0-9_-]%'
|
||||||
|
) or [name] like '[A-Z]:')
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisksPlain' and column_name = 'size') is null
|
||||||
|
alter table dbo.MachineDisksPlain add
|
||||||
|
[size] bigint not null,
|
||||||
|
constraint machine_disks_plain_ck_size check (size >= 0 and size < power(cast(2 as bigint), 53))
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisksPlain' and column_name = 'mountpoint') is null
|
||||||
|
alter table dbo.MachineDisksPlain add
|
||||||
|
mountpoint varchar(128) not null,
|
||||||
|
constraint machine_disks_plain_ck_mountpoint check (
|
||||||
|
mountpoint like '/%' or
|
||||||
|
mountpoint like '[a-zA-Z]:\%' or
|
||||||
|
mountpoint like '\\%'
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineDisksPlain' and column_name = 'free') is null
|
||||||
|
alter table dbo.MachineDisksPlain add
|
||||||
|
free bigint not null,
|
||||||
|
constraint machine_disks_plain_ck_free check (
|
||||||
|
free between 0 and power(cast(2 as bigint), 53) - 1 and
|
||||||
|
free <= [size]
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Plain 2.
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesTrafficPlain' and column_name = 'plain') is null
|
||||||
|
alter table dbo.MachineInterfacesTrafficPlain add
|
||||||
|
plain integer not null,
|
||||||
|
constraint machine_interfaces_traffic_plain_fk_plain foreign key (plain) references dbo.MachineInterfacesPlain(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesTrafficPlain' and column_name = 'candle_time') is null
|
||||||
|
alter table dbo.MachineInterfacesTrafficPlain add
|
||||||
|
candle_time integer not null,
|
||||||
|
constraint machine_interfaces_traffic_plain_fk_candle_time foreign key (candle_time) references dbo.CandlesTimes(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesTrafficPlain' and column_name = 'type') is null
|
||||||
|
alter table dbo.MachineInterfacesTrafficPlain add
|
||||||
|
[type] integer not null,
|
||||||
|
constraint machine_interfaces_traffic_plain_fk_type foreign key ([type]) references dbo.CandlesTimes(id)
|
||||||
|
on update no action
|
||||||
|
on delete no action
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesTrafficPlain' and column_name = 'bytes') is null
|
||||||
|
alter table dbo.MachineInterfacesTrafficPlain add
|
||||||
|
bytes bigint not null,
|
||||||
|
constraint machine_interfaces_traffic_plain_ck_bytes check (
|
||||||
|
bytes between 0 and power(cast(2 as bigint), 53) - 1
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesTrafficPlain' and column_name = 'packets') is null
|
||||||
|
alter table dbo.MachineInterfacesTrafficPlain add
|
||||||
|
packets bigint not null,
|
||||||
|
constraint machine_interfaces_traffic_plain_ck_packets check (
|
||||||
|
packets between 0 and power(2, 30) - 1
|
||||||
|
)
|
||||||
|
if (select top 1 0 from information_schema.columns where table_catalog = @database and table_name = 'MachineInterfacesTrafficPlain' and column_name = 'errors') is null
|
||||||
|
alter table dbo.MachineInterfacesTrafficPlain add
|
||||||
|
errors bigint not null,
|
||||||
|
constraint machine_interfaces_traffic_plain_ck_errors check (
|
||||||
|
errors between 0 and power(2, 30) - 1
|
||||||
|
)
|
||||||
|
|
||||||
end
|
end
|
||||||
go
|
go
|
||||||
|
|||||||
@ -4,9 +4,7 @@ use NucelarMonitor
|
|||||||
|
|
||||||
if object_id(N'dbo.tables_fill', N'P') is not null drop procedure dbo.tables_fill
|
if object_id(N'dbo.tables_fill', N'P') is not null drop procedure dbo.tables_fill
|
||||||
go
|
go
|
||||||
create procedure dbo.tables_fill as begin
|
create procedure dbo.tables_fill as begin set nocount on
|
||||||
|
|
||||||
set nocount on
|
|
||||||
|
|
||||||
end
|
end
|
||||||
go
|
go
|
||||||
|
|||||||
@ -4,7 +4,9 @@ use NucelarMonitor
|
|||||||
|
|
||||||
if object_id(N'dbo.hash_big_data', N'FN') is not null drop function dbo.hash_big_data
|
if object_id(N'dbo.hash_big_data', N'FN') is not null drop function dbo.hash_big_data
|
||||||
go
|
go
|
||||||
create function dbo.hash_big_data (@value varchar(max)) returns binary(64) begin
|
create function dbo.hash_big_data (
|
||||||
|
@value varchar(max)
|
||||||
|
) returns binary(64) begin
|
||||||
return (select top 1 convert(binary(64), hashbytes('SHA2_256', convert(nvarchar(max), @value))))
|
return (select top 1 convert(binary(64), hashbytes('SHA2_256', convert(nvarchar(max), @value))))
|
||||||
end
|
end
|
||||||
go
|
go
|
||||||
@ -8,7 +8,7 @@ create procedure dbo.get_procedure
|
|||||||
@database varchar(64),
|
@database varchar(64),
|
||||||
@procedure varchar(64),
|
@procedure varchar(64),
|
||||||
@id integer output
|
@id integer output
|
||||||
as begin
|
as begin set nocount on
|
||||||
|
|
||||||
declare @database_id integer = (
|
declare @database_id integer = (
|
||||||
select top 1 id from dbo.Databases where
|
select top 1 id from dbo.Databases where
|
||||||
@ -16,8 +16,6 @@ as begin
|
|||||||
[name] = @database
|
[name] = @database
|
||||||
)
|
)
|
||||||
|
|
||||||
set nocount on
|
|
||||||
|
|
||||||
if @database_id is null begin
|
if @database_id is null begin
|
||||||
insert into dbo.Databases([name]) values (@database)
|
insert into dbo.Databases([name]) values (@database)
|
||||||
set @database_id = scope_identity()
|
set @database_id = scope_identity()
|
||||||
@ -43,12 +41,10 @@ go
|
|||||||
create procedure dbo.get_big_data
|
create procedure dbo.get_big_data
|
||||||
@value varchar(max),
|
@value varchar(max),
|
||||||
@id integer output
|
@id integer output
|
||||||
as begin
|
as begin set nocount on
|
||||||
|
|
||||||
declare @hash binary(64) = dbo.hash_big_data(@value)
|
declare @hash binary(64) = dbo.hash_big_data(@value)
|
||||||
|
|
||||||
set nocount on
|
|
||||||
|
|
||||||
set @id = (
|
set @id = (
|
||||||
select top 1 id from dbo.BigData where
|
select top 1 id from dbo.BigData where
|
||||||
date_out is null and
|
date_out is null and
|
||||||
@ -68,9 +64,7 @@ go
|
|||||||
create procedure dbo.get_message
|
create procedure dbo.get_message
|
||||||
@message varchar(128),
|
@message varchar(128),
|
||||||
@id integer output
|
@id integer output
|
||||||
as begin
|
as begin set nocount on
|
||||||
|
|
||||||
set nocount on
|
|
||||||
|
|
||||||
set @id = (
|
set @id = (
|
||||||
select top 1 id from dbo.Messages where
|
select top 1 id from dbo.Messages where
|
||||||
@ -126,6 +120,7 @@ as begin set nocount on
|
|||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
go
|
||||||
|
|
||||||
if object_id(N'dbo.get_basic_data_ids', N'P') is not null drop procedure dbo.get_basic_data_ids
|
if object_id(N'dbo.get_basic_data_ids', N'P') is not null drop procedure dbo.get_basic_data_ids
|
||||||
go
|
go
|
||||||
@ -201,4 +196,26 @@ as begin set nocount on
|
|||||||
execute dbo.get_interface @name, @interface_id output
|
execute dbo.get_interface @name, @interface_id output
|
||||||
|
|
||||||
end
|
end
|
||||||
|
go
|
||||||
|
|
||||||
|
if object_id(N'dbo.get_candle_time', N'P') is not null drop procedure dbo.get_candle_time
|
||||||
|
go
|
||||||
|
create procedure dbo.get_candle_time
|
||||||
|
@candle_start datetime,
|
||||||
|
@candle_end datetime,
|
||||||
|
@candle_interations integer,
|
||||||
|
@id integer output
|
||||||
|
as begin set nocount on
|
||||||
|
set @id = (
|
||||||
|
select top 1 id from dbo.CandlesTimes where
|
||||||
|
date_out is null and
|
||||||
|
[from] = @candle_start and
|
||||||
|
[to] = @candle_end and
|
||||||
|
iterations = @candle_interations
|
||||||
|
)
|
||||||
|
if @id is null begin
|
||||||
|
insert into dbo.CandlesTimes([from], [to], iterations) values (@candle_start, @candle_end, @candle_interations)
|
||||||
|
set @id = scope_identity()
|
||||||
|
end
|
||||||
|
end
|
||||||
go
|
go
|
||||||
@ -9,7 +9,7 @@ create procedure dbo.set_exception
|
|||||||
@procedure varchar(64),
|
@procedure varchar(64),
|
||||||
@message varchar(128),
|
@message varchar(128),
|
||||||
@parameters varchar(max) = null
|
@parameters varchar(max) = null
|
||||||
as begin
|
as begin set nocount on
|
||||||
|
|
||||||
declare @procedure_id integer
|
declare @procedure_id integer
|
||||||
declare @message_id integer
|
declare @message_id integer
|
||||||
@ -17,8 +17,6 @@ as begin
|
|||||||
declare @exception_message_id integer
|
declare @exception_message_id integer
|
||||||
declare @parameters_id integer
|
declare @parameters_id integer
|
||||||
|
|
||||||
set nocount on
|
|
||||||
|
|
||||||
execute dbo.get_procedure @database, @procedure, @procedure_id output
|
execute dbo.get_procedure @database, @procedure, @procedure_id output
|
||||||
execute dbo.get_big_data @exception_message, @exception_message_id output
|
execute dbo.get_big_data @exception_message, @exception_message_id output
|
||||||
execute dbo.get_big_data @parameters, @parameters_id output
|
execute dbo.get_big_data @parameters, @parameters_id output
|
||||||
@ -73,13 +71,13 @@ as begin set nocount on
|
|||||||
|
|
||||||
if (select top 1 id from dbo.MachinePlain where
|
if (select top 1 id from dbo.MachinePlain where
|
||||||
date_out is null and
|
date_out is null and
|
||||||
machine = @machine_id and
|
machine = @machine_id
|
||||||
candle_time = @candle_time_id
|
|
||||||
) is null
|
) is null
|
||||||
insert into dbo.MachinePlain([key], machine, candle_time, machine_ram, machine_cpu, ram_total, ram_in, ram_out, ram_minimum, ram_maximum, ram_average, cpu_in, cpu_out, cpu_minimum, cpu_maximum, cpu_average) values
|
insert into dbo.MachinePlain([key], machine, candle_time, machine_ram, machine_cpu, ram_total, ram_in, ram_out, ram_minimum, ram_maximum, ram_average, cpu_in, cpu_out, cpu_minimum, cpu_maximum, cpu_average) values
|
||||||
(@key, @machine_id, @candle_time_id, @machine_ram_id, @machine_cpu_id, @ram_total, @ram_in, @ram_out, @ram_minimum, @ram_maximum, @ram_average, @cpu_in, @cpu_out, @cpu_minimum, @cpu_maximum, @cpu_average)
|
(@key, @machine_id, @candle_time_id, @machine_ram_id, @machine_cpu_id, @ram_total, @ram_in, @ram_out, @ram_minimum, @ram_maximum, @ram_average, @cpu_in, @cpu_out, @cpu_minimum, @cpu_maximum, @cpu_average)
|
||||||
else
|
else
|
||||||
update dbo.MachinePlain set
|
update dbo.MachinePlain set
|
||||||
|
candle_time = @candle_time_id,
|
||||||
machine_ram = @machine_ram_id,
|
machine_ram = @machine_ram_id,
|
||||||
machine_cpu = @machine_cpu_id,
|
machine_cpu = @machine_cpu_id,
|
||||||
ram_total = @ram_total,
|
ram_total = @ram_total,
|
||||||
@ -95,8 +93,7 @@ as begin set nocount on
|
|||||||
cpu_average = @cpu_average
|
cpu_average = @cpu_average
|
||||||
where
|
where
|
||||||
date_out is null and
|
date_out is null and
|
||||||
[key] = @key and
|
[key] = @key
|
||||||
candle_time = @candle_time_id
|
|
||||||
|
|
||||||
end
|
end
|
||||||
go
|
go
|
||||||
@ -106,67 +103,55 @@ go
|
|||||||
create procedure dbo.set_machine_interface_data
|
create procedure dbo.set_machine_interface_data
|
||||||
@key varchar(32),
|
@key varchar(32),
|
||||||
@name varchar(32),
|
@name varchar(32),
|
||||||
@bytes bigint,
|
|
||||||
@packages integer,
|
|
||||||
@errors integer,
|
|
||||||
@is_ipv6 bit,
|
@is_ipv6 bit,
|
||||||
@address varchar(45),
|
@address varchar(45),
|
||||||
@mask tinyint
|
@mask tinyint,
|
||||||
|
@mounted bit,
|
||||||
|
@id integer output
|
||||||
as begin set nocount on
|
as begin set nocount on
|
||||||
|
|
||||||
declare @machine_id integer
|
declare @machine_id integer
|
||||||
declare @interface_id integer
|
declare @interface_id integer
|
||||||
declare @machine_interface_id integer
|
declare @plain_id integer
|
||||||
declare @machine_interface_data_id integer
|
|
||||||
|
|
||||||
execute dbo.get_interface @name, @interface_id output
|
execute dbo.get_interface @name, @interface_id output
|
||||||
execute dbo.get_machine @key, @machine_id output
|
execute dbo.get_machine @key, @machine_id output
|
||||||
|
set @plain_id = (select top 1 id from dbo.MachinePlain where date_out is null and machine = @machine_id)
|
||||||
|
|
||||||
set @machine_interface_id = (
|
set @id = (
|
||||||
select top 1 id from dbo.MachineInterfaces where
|
select top 1 id from dbo.MachineInterfaces where
|
||||||
date_out is null and
|
date_out is null and
|
||||||
machine = @machine_id and
|
machine = @machine_id and
|
||||||
[interface] = @interface_id
|
[interface] = @interface_id
|
||||||
)
|
)
|
||||||
|
|
||||||
if @machine_interface_id is null begin
|
if @id is null begin
|
||||||
insert into dbo.MachineInterfaces(machine, [interface]) values (@machine_id, @interface_id)
|
insert into dbo.MachineInterfaces(machine, [interface], mounted, is_ipv6, [address], mask) values
|
||||||
set @machine_interface_id = scope_identity()
|
(@machine_id, @interface_id, @mounted, @is_ipv6, @address, @mask)
|
||||||
end
|
set @id = scope_identity()
|
||||||
|
insert into dbo.MachineInterfacesPlain(plain, machine, [interface], machine_interface, mounted, is_ipv6, [address], mask) values
|
||||||
set @machine_interface_data_id = (
|
(@plain_id, @machine_id, @interface_id, @id, @mounted, @is_ipv6, @address, @mask)
|
||||||
select top 1 id from dbo.MachineInterfacesData where
|
end else if (
|
||||||
date_out is null and
|
select top 1 0 from dbo.MachineInterfaces where
|
||||||
machine_interface = @machine_interface_id and
|
id = @id and
|
||||||
|
mounted = @mounted and
|
||||||
is_ipv6 = @is_ipv6 and
|
is_ipv6 = @is_ipv6 and
|
||||||
[address] = @address and
|
[address] = @address and
|
||||||
mask = @mask
|
mask = @mask
|
||||||
)
|
) is null begin
|
||||||
|
insert into dbo.MachineInterfaces(machine, [interface], mounted, is_ipv6, [address], mask) values
|
||||||
if @machine_interface_data_id is null begin
|
(@machine_id, @interface_id, @mounted, @is_ipv6, @address, @mask)
|
||||||
|
set @id = scope_identity()
|
||||||
insert into dbo.MachineInterfacesData(machine_interface, is_ipv6, [address], mask) values
|
update dbo.MachineInterfacesPlain set
|
||||||
(@machine_interface_id, @is_ipv6, @address, @mask)
|
machine_interface = @id,
|
||||||
set @machine_interface_data_id = scope_identity()
|
mounted = @mounted,
|
||||||
|
is_ipv6 = @is_ipv6,
|
||||||
if (select top 1 0 from dbo.MachineInterfacesPlain where
|
[address] = @address,
|
||||||
|
mask = @mask
|
||||||
|
where
|
||||||
date_out is null and
|
date_out is null and
|
||||||
machine = @machine_id and
|
plain = @plain_id and
|
||||||
[interface] = @interface_id
|
[interface] = @interface_id
|
||||||
) is null
|
|
||||||
insert into dbo.MachineInterfacesPlain(plain, machine, [interface], machine_interface, [name], is_ipv6, [address], mask) values
|
|
||||||
(null, @machine_id, @interface_id, @machine_interface_id, @name, @is_ipv6, @address, @mask)
|
|
||||||
else
|
|
||||||
update dbo.MachineInterfacesPlain set
|
|
||||||
machine_interface = @machine_interface_id,
|
|
||||||
is_ipv6 = @is_ipv6,
|
|
||||||
[address] = @address,
|
|
||||||
mask = @mask
|
|
||||||
where
|
|
||||||
date_out is null and
|
|
||||||
machine = @machine_id and
|
|
||||||
[interface] = @interface_id
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -175,65 +160,45 @@ go
|
|||||||
if object_id(N'dbo.set_machine_interface_traffic', N'P') is not null drop procedure dbo.set_machine_interface_traffic
|
if object_id(N'dbo.set_machine_interface_traffic', N'P') is not null drop procedure dbo.set_machine_interface_traffic
|
||||||
go
|
go
|
||||||
create procedure dbo.set_machine_interface_traffic
|
create procedure dbo.set_machine_interface_traffic
|
||||||
@key varchar(32),
|
@id integer,
|
||||||
@name varchar(32),
|
|
||||||
@type varchar(32),
|
@type varchar(32),
|
||||||
@candle_start datetime,
|
@candle_start datetime,
|
||||||
@candle_end datetime,
|
@candle_end datetime,
|
||||||
@candle_interations integer,
|
@candle_interations integer,
|
||||||
@bytes bigint,
|
@bytes bigint,
|
||||||
@packages integer,
|
@packages integer,
|
||||||
@errors integer,
|
@errors integer
|
||||||
as begin set nocount on
|
as begin set nocount on
|
||||||
|
|
||||||
declare @machine_id integer
|
|
||||||
declare @type_id integer
|
declare @type_id integer
|
||||||
declare @candle_time_id integer
|
declare @candle_time_id integer
|
||||||
declare @interface_id integer
|
|
||||||
declare @machine_interface_id integer
|
|
||||||
declare @plain_id integer
|
declare @plain_id integer
|
||||||
|
|
||||||
execute dbo.get_basic_data_ids
|
|
||||||
@key,
|
|
||||||
@candle_start,
|
|
||||||
@candle_end,
|
|
||||||
@candle_interations,
|
|
||||||
@machine_id output,
|
|
||||||
@candle_time_id output
|
|
||||||
execute dbo.get_type @type, @type_id output
|
execute dbo.get_type @type, @type_id output
|
||||||
execute dbo.get_interface @name, @interface_id output
|
execute dbo.get_candle_time @candle_start, @candle_end, @candle_interations, @candle_time_id output
|
||||||
|
set @plain_id = (select top 1 id from dbo.MachineInterfacesPlain where date_out is null and machine_interface = @id)
|
||||||
set @machine_interface_id = (
|
|
||||||
select top 1 id from dbo.MachineInterfaces where
|
|
||||||
date_out is null and
|
|
||||||
machine = @machine_id and
|
|
||||||
[interface] = @interface_id
|
|
||||||
)
|
|
||||||
|
|
||||||
insert into dbo.MachineInterfacesTraffic(machine_interface, [type], candle_time, bytes, packages, errors) values
|
insert into dbo.MachineInterfacesTraffic(machine_interface, [type], candle_time, bytes, packages, errors) values
|
||||||
(@machine_interface_id, @type_id, @candle_time_id, @bytes, @packages, @errors)
|
(@id, @type_id, @candle_time_id, @bytes, @packages, @errors)
|
||||||
|
|
||||||
set @plain_id = (select top 1 id from dbo.MachineInterfacesPlain where
|
|
||||||
date_out is null and
|
|
||||||
machine = @machine_id and
|
|
||||||
[interface] = @interface_id
|
|
||||||
)
|
|
||||||
|
|
||||||
if (select top 1 0 from dbo.MachineInterfacesTrafficPlain where
|
if (select top 1 0 from dbo.MachineInterfacesTrafficPlain where
|
||||||
date_out is null and
|
date_out is null and
|
||||||
machine_interface = @machine_interface_id and
|
plain = @plain_id and
|
||||||
[type] = @type_id
|
[type] = @type_id and
|
||||||
|
candle_time = @candle_time_id
|
||||||
) is null
|
) is null
|
||||||
insert into dbo.MachineInterfacesTrafficPlain(plain, machine_interface, candle_time, [type], bytes, packages, errors) values
|
insert into dbo.MachineInterfacesTrafficPlain(plain, candle_time, [type], bytes, packages, errors) values
|
||||||
(@plain_id, @machine_interface_id, @candle_time_id, @type_id, @bytes, @packages, @errors)
|
(@plain_id, @candle_time_id, @type_id, @bytes, @packages, @errors)
|
||||||
else
|
else
|
||||||
update dbo.MachineInterfacesTrafficPlain set
|
update dbo.MachineInterfacesTrafficPlain set
|
||||||
bytes = @bytes,
|
bytes = @bytes,
|
||||||
candle_time = @candle_time_id
|
packages = @packages,
|
||||||
|
errors = @errors
|
||||||
where
|
where
|
||||||
date_out is null and
|
date_out is null and
|
||||||
machine_interface = @machine_interface_id and
|
plain = @plain_id and
|
||||||
[type] = @type_id
|
[type] = @type_id and
|
||||||
|
candle_time = @candle_time_id
|
||||||
|
|
||||||
end
|
end
|
||||||
go
|
go
|
||||||
@ -1,3 +1,11 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
cd `dirname $(readlink -f "$0")`/../Python
|
cd `dirname $(readlink -f "$0")`/../Python
|
||||||
|
if [ ! -d .venv ];then
|
||||||
|
python3 -m venv .venv
|
||||||
|
source .venv/bin/activate
|
||||||
|
pip install --upgrade pip
|
||||||
|
[ -f requirements.txt ] && pip install -r requirements.txt
|
||||||
|
else
|
||||||
|
source .venv/bin/activate
|
||||||
|
fi
|
||||||
python3 "run.py"
|
python3 "run.py"
|
||||||
Loading…
Reference in New Issue
Block a user