Revert "Feature 11061: Clean MON to have only the dashboarder"
This reverts commit 8c141fe62eb1d1f097c4d1d92f19a19a5de22d20.
Change-Id: I9c83c3c832312915439c7aa4b5ad5e081163bfa4
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
diff --git a/osm_mon/cmd/mon_collector.py b/osm_mon/cmd/mon_collector.py
new file mode 100644
index 0000000..30e6676
--- /dev/null
+++ b/osm_mon/cmd/mon_collector.py
@@ -0,0 +1,65 @@
+# -*- coding: utf-8 -*-
+
+# Copyright 2018 Whitestack, LLC
+# *************************************************************
+
+# This file is part of OSM Monitoring module
+# All Rights Reserved to Whitestack, LLC
+
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+# For those usages not covered by the Apache License, Version 2.0 please
+# contact: bdiaz@whitestack.com or glavado@whitestack.com
+##
+import argparse
+import logging
+import sys
+
+from osm_mon.collector.collector import Collector
+from osm_mon.core.config import Config
+from osm_mon.cmd.mon_utils import wait_till_core_services_are_ready
+
+
+def main():
+ parser = argparse.ArgumentParser(prog="osm-mon-collector")
+ parser.add_argument("--config-file", nargs="?", help="MON configuration file")
+ args = parser.parse_args()
+ cfg = Config(args.config_file)
+
+ root = logging.getLogger()
+ root.setLevel(logging.getLevelName(cfg.get("global", "loglevel")))
+ ch = logging.StreamHandler(sys.stdout)
+ ch.setLevel(logging.getLevelName(cfg.get("global", "loglevel")))
+ formatter = logging.Formatter(
+ "%(asctime)s - %(name)s - %(levelname)s - %(message)s", "%m/%d/%Y %I:%M:%S %p"
+ )
+ ch.setFormatter(formatter)
+ root.addHandler(ch)
+
+ log = logging.getLogger(__name__)
+ if wait_till_core_services_are_ready(cfg, "osm-mon-collector"):
+ log.info("Starting MON Collector...")
+ log.debug("Config: %s", cfg.conf)
+ log.info("Initializing database...")
+ try:
+ collector = Collector(cfg)
+ collector.collect_forever()
+ except Exception as e:
+ log.error("Failed to start MON Collector")
+ log.exception("Exception: %s", str(e))
+ else:
+ log.error("Failed to start MON Collector")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/osm_mon/cmd/mon_evaluator.py b/osm_mon/cmd/mon_evaluator.py
new file mode 100644
index 0000000..b1c0e2a
--- /dev/null
+++ b/osm_mon/cmd/mon_evaluator.py
@@ -0,0 +1,65 @@
+# -*- coding: utf-8 -*-
+
+# Copyright 2018 Whitestack, LLC
+# *************************************************************
+
+# This file is part of OSM Monitoring module
+# All Rights Reserved to Whitestack, LLC
+
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+# For those usages not covered by the Apache License, Version 2.0 please
+# contact: bdiaz@whitestack.com or glavado@whitestack.com
+##
+import argparse
+import logging
+import sys
+
+from osm_mon.core.config import Config
+from osm_mon.evaluator.evaluator import Evaluator
+from osm_mon.cmd.mon_utils import wait_till_core_services_are_ready
+
+
+def main():
+ parser = argparse.ArgumentParser(prog="osm-mon-evaluator")
+ parser.add_argument("--config-file", nargs="?", help="MON configuration file")
+ args = parser.parse_args()
+ cfg = Config(args.config_file)
+
+ root = logging.getLogger()
+ root.setLevel(logging.getLevelName(cfg.get("global", "loglevel")))
+ ch = logging.StreamHandler(sys.stdout)
+ ch.setLevel(logging.getLevelName(cfg.get("global", "loglevel")))
+ formatter = logging.Formatter(
+ "%(asctime)s - %(name)s - %(levelname)s - %(message)s", "%m/%d/%Y %I:%M:%S %p"
+ )
+ ch.setFormatter(formatter)
+ root.addHandler(ch)
+
+ log = logging.getLogger(__name__)
+ if wait_till_core_services_are_ready(cfg, "osm-mon-evaluator"):
+ log.info("Starting MON Evaluator...")
+ log.debug("Config: %s", cfg.conf)
+ log.info("Initializing database...")
+ try:
+ evaluator = Evaluator(cfg)
+ evaluator.evaluate_forever()
+ except Exception as e:
+ log.error("Failed to start MON Evaluator")
+ log.exception("Exception: %s", str(e))
+ else:
+ log.error("Failed to start MON Evaluator")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/osm_mon/cmd/mon_healthcheck.py b/osm_mon/cmd/mon_healthcheck.py
new file mode 100644
index 0000000..7eae4c2
--- /dev/null
+++ b/osm_mon/cmd/mon_healthcheck.py
@@ -0,0 +1,73 @@
+# Copyright 2018 Whitestack, LLC
+# *************************************************************
+
+# This file is part of OSM Monitoring module
+# All Rights Reserved to Whitestack, LLC
+
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+# For those usages not covered by the Apache License, Version 2.0 please
+# contact: bdiaz@whitestack.com or glavado@whitestack.com
+##
+import argparse
+import logging
+import subprocess
+import sys
+
+import requests
+
+log = logging.getLogger(__name__)
+
+
+def main():
+ parser = argparse.ArgumentParser(prog="osm-mon-healthcheck")
+ parser.add_argument("--config-file", nargs="?", help="MON configuration file")
+ # args = parser.parse_args()
+ # cfg = Config(args.config_file)
+
+ if not _processes_running():
+ sys.exit(1)
+ if not _is_prometheus_exporter_ok():
+ sys.exit(1)
+ sys.exit(0)
+
+
+def _processes_running():
+ def _contains_process(processes, process_name):
+ for row in processes:
+ if process_name in row:
+ return True
+ return False
+
+ processes_to_check = ["osm-mon-collector", "osm-mon-evaluator", "osm-mon-server"]
+ ps = subprocess.Popen(["ps", "aux"], stdout=subprocess.PIPE).communicate()[0]
+ processes_running = ps.decode().split("\n")
+ for p in processes_to_check:
+ if not _contains_process(processes_running, p):
+ log.error("Process %s not running!" % p)
+ return False
+ return True
+
+
+def _is_prometheus_exporter_ok():
+ try:
+ r = requests.get("http://localhost:8000")
+ r.raise_for_status()
+ return True
+ except Exception:
+ log.exception("MON Prometheus exporter is not running")
+ return False
+
+
+if __name__ == "__main__":
+ main()
diff --git a/osm_mon/cmd/mon_server.py b/osm_mon/cmd/mon_server.py
new file mode 100644
index 0000000..c4fa08b
--- /dev/null
+++ b/osm_mon/cmd/mon_server.py
@@ -0,0 +1,65 @@
+# -*- coding: utf-8 -*-
+
+# Copyright 2018 Whitestack, LLC
+# *************************************************************
+
+# This file is part of OSM Monitoring module
+# All Rights Reserved to Whitestack, LLC
+
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+# For those usages not covered by the Apache License, Version 2.0 please
+# contact: bdiaz@whitestack.com or glavado@whitestack.com
+##
+import argparse
+import logging
+import sys
+
+from osm_mon.core.config import Config
+from osm_mon.server.server import Server
+from osm_mon.cmd.mon_utils import wait_till_core_services_are_ready
+
+
+def main():
+ parser = argparse.ArgumentParser(prog="osm-mon-server")
+ parser.add_argument("--config-file", nargs="?", help="MON configuration file")
+ args = parser.parse_args()
+ cfg = Config(args.config_file)
+
+ root = logging.getLogger()
+ root.setLevel(logging.getLevelName(cfg.get("global", "loglevel")))
+ ch = logging.StreamHandler(sys.stdout)
+ ch.setLevel(logging.getLevelName(cfg.get("global", "loglevel")))
+ formatter = logging.Formatter(
+ "%(asctime)s - %(name)s - %(levelname)s - %(message)s", "%m/%d/%Y %I:%M:%S %p"
+ )
+ ch.setFormatter(formatter)
+ root.addHandler(ch)
+
+ log = logging.getLogger(__name__)
+ if wait_till_core_services_are_ready(cfg, "osm-mon-server"):
+ log.info("Starting MON Server...")
+ log.debug("Config: %s", cfg.conf)
+ log.info("Initializing database...")
+ try:
+ server = Server(cfg)
+ server.run()
+ except Exception as e:
+ log.error("Failed to start MON Server")
+ log.exception("Exception: %s", str(e))
+ else:
+ log.error("Failed to start MON Server")
+
+
+if __name__ == "__main__":
+ main()