1 # Copyright 2018 Whitestack, LLC
2 # *************************************************************
4 # This file is part of OSM Monitoring module
5 # All Rights Reserved to Whitestack, LLC
7 # Licensed under the Apache License, Version 2.0 (the "License"); you may
8 # not use this file except in compliance with the License. You may obtain
9 # a copy of the License at
11 # http://www.apache.org/licenses/LICENSE-2.0
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16 # License for the specific language governing permissions and limitations
19 # For those usages not covered by the Apache License, Version 2.0 please
20 # contact: bdiaz@whitestack.com or glavado@whitestack.com
28 from aiokafka
import AIOKafkaConsumer
30 from osm_mon
.core
.settings
import Config
32 log
= logging
.getLogger(__name__
)
37 if not _processes_running():
39 if not _is_kafka_ok():
41 if not _is_prometheus_exporter_ok():
46 def _processes_running():
47 def _contains_process(processes
, process_name
):
49 if process_name
in row
:
52 processes_to_check
= ['osm-mon-collector', 'osm-mon-evaluator', 'osm-mon-server']
53 ps
= subprocess
.Popen(['ps', 'aux'], stdout
=subprocess
.PIPE
).communicate()[0]
54 processes_running
= ps
.decode().split('\n')
55 for p
in processes_to_check
:
56 if not _contains_process(processes_running
, p
):
61 def _is_prometheus_exporter_ok():
63 r
= requests
.get('http://localhost:8000')
67 log
.exception("MON Prometheus exporter is not running")
72 async def _test_kafka(loop
):
73 cfg
= Config
.instance()
74 consumer
= AIOKafkaConsumer(
76 loop
=loop
, bootstrap_servers
=cfg
.BROKER_URI
)
77 await consumer
.start()
81 loop
= asyncio
.get_event_loop()
82 loop
.run_until_complete(_test_kafka(loop
))
85 log
.exception("MON can not connect to Kafka")
89 if __name__
== '__main__':