Пример #1
0
def test_integration(aggregator, instance):
    init_config = {'metric_definitions': ALL_METRICS}

    c = EventStoreCheck('eventstore', init_config, {}, None)

    c.check(instance)

    for endpoint in instance['endpoints']:
        for metric in init_config['metric_definitions'][endpoint]:
            aggregator.assert_metric(metric['metric_name'], tags=[])

    aggregator.assert_all_metrics_covered()
Пример #2
0
def test_config():
    c = EventStoreCheck('eventstore', {}, {}, None)

    # empty instance
    instance = {}
    with pytest.raises(CheckException):
        c.check(instance)

    # Timeout
    instance = {'url': 'http://foobar'}
    with pytest.raises(CheckException):
        c.check(instance)

    # Statuscode
    instance = {'url': 'https://google.com/IwillReturnA404StatusCode'}
    with pytest.raises(CheckException):
        c.check(instance)

    # Decode Error
    instance = {'url': 'https://google.com'}
    with pytest.raises(CheckException):
        c.check(instance)
Пример #3
0
def test_config():
    c = EventStoreCheck('eventstore', {}, {}, None)

    # empty instance
    instance = {}
    with pytest.raises(CheckException):
        c.check(instance)

    # empty list of metric endpoints
    instance = {'url': 'http://foobar', 'endpoints': []}
    with pytest.raises(CheckException, match='.+is empty$'):
        c.check(instance)

    # bad list of metric endpoints
    instance = {'url': 'http://foobar', 'endpoints': 'baz'}
    with pytest.raises(CheckException, match='^Incorrect value.+'):
        c.check(instance)

    # unknown metric endpoint
    instance = {'url': 'http://foobar', 'endpoints': ['/quux']}
    with pytest.raises(CheckException, match='^Unknown.+'):
        c.check(instance)

    # Timeout
    instance = {'url': 'http://10.0.0.0', 'endpoints': ['/stats']}
    with pytest.raises(CheckException, match='.+timed out.+'):
        c.check(instance)

    # Statuscode
    instance = {
        'url': 'https://google.com/IwillReturnA404StatusCode',
        'endpoints': ['/stats']
    }
    with pytest.raises(CheckException, match='^Invalid Status Code.+'):
        c.check(instance)

    # Decode Error
    c = EventStoreCheck('eventstore', {'metric_definitions': {
        '/': []
    }}, {}, None)
    instance = {'url': 'https://google.com', 'endpoints': ['/']}
    with pytest.raises(CheckException, match='.+unserializable.+'):
        c.check(instance)
Пример #4
0
def test_service_check(aggregator, eventstore_server):
    init_config = {
        'metric_definitions': [
            {
                "json_path": "proc.mem",
                "json_type": "int",
                "metric_name": "eventstore.proc.mem",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.cpu",
                "json_type": "float",
                "metric_name": "eventstore.proc.cpu",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.cpuScaled",
                "json_type": "float",
                "metric_name": "eventstore.proc.cpu_scaled",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.threadsCount",
                "json_type": "int",
                "metric_name": "eventstore.proc.threads",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.contentionsRate",
                "json_type": "float",
                "metric_name": "eventstore.proc.contentions_rate",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.thrownExceptionsRate",
                "json_type": "float",
                "metric_name": "eventstore.proc.thrown_exceptions_rate",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.diskIo.readBytes",
                "json_type": "int",
                "metric_name": "eventstore.proc.disk.read_bytes",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.diskIo.writtenBytes",
                "json_type": "int",
                "metric_name": "eventstore.proc.disk.write_bytes",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.diskIo.readOps",
                "json_type": "int",
                "metric_name": "eventstore.proc.disk.read_ops",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.diskIo.writeOps",
                "json_type": "int",
                "metric_name": "eventstore.proc.disk.write_ops",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.tcp.connections",
                "json_type": "int",
                "metric_name": "eventstore.tcp.connections",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.tcp.receivingSpeed",
                "json_type": "float",
                "metric_name": "eventstore.tcp.receiving_speed",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.tcp.sendingSpeed",
                "json_type": "float",
                "metric_name": "eventstore.tcp.sending_speed",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.tcp.inSend",
                "json_type": "int",
                "metric_name": "eventstore.tcp.in_send",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.tcp.measureTime",
                "json_type": "datetime",
                "metric_name": "eventstore.tcp.measure_time",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.tcp.pendingReceived",
                "json_type": "int",
                "metric_name": "eventstore.tcp.pending_received",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.tcp.pendingSend",
                "json_type": "int",
                "metric_name": "eventstore.tcp.pending_send",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.tcp.receivedBytesSinceLastRun",
                "json_type": "int",
                "metric_name": "eventstore.tcp.received_bytes.since_last_run",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.tcp.receivedBytesTotal",
                "json_type": "int",
                "metric_name": "eventstore.tcp.received_bytes.total",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.tcp.sentBytesSinceLastRun",
                "json_type": "int",
                "metric_name": "eventstore.tcp.sent_bytes.since_last_run",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.tcp.sentBytesTotal",
                "json_type": "int",
                "metric_name": "eventstore.tcp.sent_bytes.total",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.gc.allocationSpeed",
                "json_type": "float",
                "metric_name": "eventstore.gc.allocation_speed",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.gc.gen0ItemsCount",
                "json_type": "float",
                "metric_name": "eventstore.gc.items_count.gen0",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.gc.gen0Size",
                "json_type": "float",
                "metric_name": "eventstore.gc.size.gen0",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.gc.gen1ItemsCount",
                "json_type": "float",
                "metric_name": "eventstore.gc.items_count.gen1",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.gc.gen1Size",
                "json_type": "float",
                "metric_name": "eventstore.gc.size.gen1",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.gc.gen2ItemsCount",
                "json_type": "float",
                "metric_name": "eventstore.gc.items_count.gen2",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.gc.gen2Size",
                "json_type": "float",
                "metric_name": "eventstore.gc.size.gen2",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.gc.largeHeapSize",
                "json_type": "int",
                "metric_name": "eventstore.gc.large_heap_size",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.gc.timeInGc",
                "json_type": "float",
                "metric_name": "eventstore.gc.time_in_gc",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.gc.totalBytesInHeaps",
                "json_type": "int",
                "metric_name": "eventstore.gc.total_bytes_in_heaps",
                "metric_type": "gauge"
            },
            {
                "json_path": "sys.cpu",
                "json_type": "float",
                "metric_name": "eventstore.sys.cpu",
                "metric_type": "gauge"
            },
            {
                "json_path": "sys.freeMem",
                "json_type": "int",
                "metric_name": "eventstore.sys.free_mem",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.queue.*.avgItemsPerSecond",
                "json_type": "int",
                "metric_name": "eventstore.es.queue.avg_items_per_second",
                "metric_type": "histogram"
            },
            {
                "json_path": "es.queue.*.avgProcessingTime",
                "json_type": "float",
                "metric_name": "eventstore.es.queue.avg_processing_time",
                "metric_type": "histogram"
            },
            {
                "json_path": "es.queue.*.currentIdleTime",
                "json_type": "datetime",
                "metric_name": "eventstore.es.queue.current_idle_time",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.queue.*.currentItemProcessingTime",
                "json_type": "datetime",
                "metric_name": "eventstore.es.queue.current_processing_time",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.queue.*.idleTimePercent",
                "json_type": "float",
                "metric_name": "eventstore.es.queue.idle_time_percent",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.queue.*.length",
                "json_type": "int",
                "metric_name": "eventstore.es.queue.length",
                "metric_type": "histogram"
            },
            {
                "json_path": "es.queue.*.lengthCurrentTryPeak",
                "json_type": "int",
                "metric_name": "eventstore.es.queue.length_current_try_peak",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.queue.*.lengthLifetimePeak",
                "json_type": "int",
                "metric_name": "eventstore.es.queue.length_lifetime_peak",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.queue.*.totalItemsProcessed",
                "json_type": "int",
                "metric_name": "eventstore.es.queue.total_items_processed",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.writer.lastFlushSize",
                "json_type": "int",
                "metric_name": "eventstore.es.writer.flush_size.last",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.writer.lastFlushDelayMs",
                "json_type": "float",
                "metric_name": "eventstore.es.writer.flush_delay_ms.last",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.writer.meanFlushSize",
                "json_type": "int",
                "metric_name": "eventstore.es.writer.flush_size.mean",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.writer.meanFlushDelayMs",
                "json_type": "float",
                "metric_name": "eventstore.es.writer.flush_delay_ms.mean",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.writer.maxFlushSize",
                "json_type": "int",
                "metric_name": "eventstore.es.writer.flush_size.max",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.writer.maxFlushDelayMs",
                "json_type": "float",
                "metric_name": "eventstore.es.writer.flush_delay_ms.max",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.writer.queuedFlushMessages",
                "json_type": "int",
                "metric_name": "eventstore.es.writer.queued_flush_messages",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.readIndex.cachedRecord",
                "json_type": "int",
                "metric_name": "eventstore.es.read_index.cached_record",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.readIndex.notCachedRecord",
                "json_type": "int",
                "metric_name": "eventstore.es.read_index.not_cached_record",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.readIndex.cachedStreamInfo",
                "json_type": "int",
                "metric_name": "eventstore.es.read_index.cached_stream_info",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.readIndex.notCachedStreamInfo",
                "json_type": "int",
                "metric_name": "eventstore.es.read_index.not_cached_stream_info",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.readIndex.cachedTransInfo",
                "json_type": "int",
                "metric_name": "eventstore.es.read_index.cached_trans_info",
                "metric_type": "gauge"
            },
            {
                "json_path": "es.readIndex.notCachedTransInfo",
                "json_type": "int",
                "metric_name": "eventstore.es.read_index.not_cached_trans_info",
                "metric_type": "gauge"
            }
        ]
    }

    c = EventStoreCheck('eventstore', init_config, {}, None)

    # the check should send OK
    instance = {
        'default_timeout': 5,
        'tag_by_url': True,
        'url': 'http://{}:2113/stats'.format(get_docker_hostname()),
        'name': 'testInstance',
        'json_path': [
            '*',
            '*.*',
            '*.*.*',
            '*.*.*.*'
        ]
    }
    c.check(instance)
    for metric in init_config['metric_definitions']:
        aggregator.assert_metric(metric['metric_name'], tags=[])

    i = 1
    for m in aggregator.not_asserted():
        print(m)
        print('\r')
        print(i)
        i = i + 1
    # Assert coverage for this check on this instance
    aggregator.assert_all_metrics_covered()
def test_service_check(aggregator, instance):
    init_config = {
        'metric_definitions': [
            {
                "json_path": "proc.mem",
                "json_type": "int",
                "metric_name": "eventstore.proc.mem",
                "metric_type": "gauge"
            },
            {
                "json_path": "proc.cpu",
                "json_type": "float",
                "metric_name": "eventstore.proc.cpu",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.cpuScaled",
                "json_type": "float",
                "metric_name": "eventstore.proc.cpu_scaled",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.threadsCount",
                "json_type": "int",
                "metric_name": "eventstore.proc.threads",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.contentionsRate",
                "json_type": "float",
                "metric_name": "eventstore.proc.contentions_rate",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.thrownExceptionsRate",
                "json_type": "float",
                "metric_name": "eventstore.proc.thrown_exceptions_rate",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.diskIo.readBytes",
                "json_type": "int",
                "metric_name": "eventstore.proc.disk.read_bytes",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.diskIo.writtenBytes",
                "json_type": "int",
                "metric_name": "eventstore.proc.disk.write_bytes",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.diskIo.readOps",
                "json_type": "int",
                "metric_name": "eventstore.proc.disk.read_ops",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.diskIo.writeOps",
                "json_type": "int",
                "metric_name": "eventstore.proc.disk.write_ops",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.tcp.connections",
                "json_type": "int",
                "metric_name": "eventstore.tcp.connections",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.tcp.receivingSpeed",
                "json_type": "float",
                "metric_name": "eventstore.tcp.receiving_speed",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.tcp.sendingSpeed",
                "json_type": "float",
                "metric_name": "eventstore.tcp.sending_speed",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.tcp.inSend",
                "json_type": "int",
                "metric_name": "eventstore.tcp.in_send",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.tcp.measureTime",
                "json_type": "datetime",
                "metric_name": "eventstore.tcp.measure_time",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.tcp.pendingReceived",
                "json_type": "int",
                "metric_name": "eventstore.tcp.pending_received",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.tcp.pendingSend",
                "json_type": "int",
                "metric_name": "eventstore.tcp.pending_send",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.tcp.receivedBytesSinceLastRun",
                "json_type": "int",
                "metric_name": "eventstore.tcp.received_bytes.since_last_run",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.tcp.receivedBytesTotal",
                "json_type": "int",
                "metric_name": "eventstore.tcp.received_bytes.total",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.tcp.sentBytesSinceLastRun",
                "json_type": "int",
                "metric_name": "eventstore.tcp.sent_bytes.since_last_run",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.tcp.sentBytesTotal",
                "json_type": "int",
                "metric_name": "eventstore.tcp.sent_bytes.total",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.gc.allocationSpeed",
                "json_type": "float",
                "metric_name": "eventstore.gc.allocation_speed",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.gc.gen0ItemsCount",
                "json_type": "float",
                "metric_name": "eventstore.gc.items_count.gen0",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.gc.gen0Size",
                "json_type": "float",
                "metric_name": "eventstore.gc.size.gen0",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.gc.gen1ItemsCount",
                "json_type": "float",
                "metric_name": "eventstore.gc.items_count.gen1",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.gc.gen1Size",
                "json_type": "float",
                "metric_name": "eventstore.gc.size.gen1",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.gc.gen2ItemsCount",
                "json_type": "float",
                "metric_name": "eventstore.gc.items_count.gen2",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.gc.gen2Size",
                "json_type": "float",
                "metric_name": "eventstore.gc.size.gen2",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.gc.largeHeapSize",
                "json_type": "int",
                "metric_name": "eventstore.gc.large_heap_size",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.gc.timeInGc",
                "json_type": "float",
                "metric_name": "eventstore.gc.time_in_gc",
                "metric_type": "gauge",
            },
            {
                "json_path": "proc.gc.totalBytesInHeaps",
                "json_type": "int",
                "metric_name": "eventstore.gc.total_bytes_in_heaps",
                "metric_type": "gauge",
            },
            {
                "json_path": "sys.cpu",
                "json_type": "float",
                "metric_name": "eventstore.sys.cpu",
                "metric_type": "gauge"
            },
            {
                "json_path": "sys.freeMem",
                "json_type": "int",
                "metric_name": "eventstore.sys.free_mem",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.queue.*.avgItemsPerSecond",
                "json_type": "int",
                "metric_name": "eventstore.es.queue.avg_items_per_second",
                "metric_type": "histogram",
            },
            {
                "json_path": "es.queue.*.avgProcessingTime",
                "json_type": "float",
                "metric_name": "eventstore.es.queue.avg_processing_time",
                "metric_type": "histogram",
            },
            {
                "json_path": "es.queue.*.currentIdleTime",
                "json_type": "datetime",
                "metric_name": "eventstore.es.queue.current_idle_time",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.queue.*.currentItemProcessingTime",
                "json_type": "datetime",
                "metric_name": "eventstore.es.queue.current_processing_time",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.queue.*.idleTimePercent",
                "json_type": "float",
                "metric_name": "eventstore.es.queue.idle_time_percent",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.queue.*.length",
                "json_type": "int",
                "metric_name": "eventstore.es.queue.length",
                "metric_type": "histogram",
            },
            {
                "json_path": "es.queue.*.lengthCurrentTryPeak",
                "json_type": "int",
                "metric_name": "eventstore.es.queue.length_current_try_peak",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.queue.*.lengthLifetimePeak",
                "json_type": "int",
                "metric_name": "eventstore.es.queue.length_lifetime_peak",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.queue.*.totalItemsProcessed",
                "json_type": "int",
                "metric_name": "eventstore.es.queue.total_items_processed",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.writer.lastFlushSize",
                "json_type": "int",
                "metric_name": "eventstore.es.writer.flush_size.last",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.writer.lastFlushDelayMs",
                "json_type": "float",
                "metric_name": "eventstore.es.writer.flush_delay_ms.last",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.writer.meanFlushSize",
                "json_type": "int",
                "metric_name": "eventstore.es.writer.flush_size.mean",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.writer.meanFlushDelayMs",
                "json_type": "float",
                "metric_name": "eventstore.es.writer.flush_delay_ms.mean",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.writer.maxFlushSize",
                "json_type": "int",
                "metric_name": "eventstore.es.writer.flush_size.max",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.writer.maxFlushDelayMs",
                "json_type": "float",
                "metric_name": "eventstore.es.writer.flush_delay_ms.max",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.writer.queuedFlushMessages",
                "json_type": "int",
                "metric_name": "eventstore.es.writer.queued_flush_messages",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.readIndex.cachedRecord",
                "json_type": "int",
                "metric_name": "eventstore.es.read_index.cached_record",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.readIndex.notCachedRecord",
                "json_type": "int",
                "metric_name": "eventstore.es.read_index.not_cached_record",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.readIndex.cachedStreamInfo",
                "json_type": "int",
                "metric_name": "eventstore.es.read_index.cached_stream_info",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.readIndex.notCachedStreamInfo",
                "json_type": "int",
                "metric_name":
                "eventstore.es.read_index.not_cached_stream_info",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.readIndex.cachedTransInfo",
                "json_type": "int",
                "metric_name": "eventstore.es.read_index.cached_trans_info",
                "metric_type": "gauge",
            },
            {
                "json_path": "es.readIndex.notCachedTransInfo",
                "json_type": "int",
                "metric_name":
                "eventstore.es.read_index.not_cached_trans_info",
                "metric_type": "gauge",
            },
        ]
    }

    c = EventStoreCheck('eventstore', init_config, {}, None)

    c.check(instance)

    for metric in init_config['metric_definitions']:
        aggregator.assert_metric(metric['metric_name'], tags=[])

    aggregator.assert_all_metrics_covered()