Пример #1
0
def test_enhanced_metrics_on_config():
    module_config = haproxy.config(mock_config_enhanced_metrics_on)
    assert module_config['socket'] == '/var/run/haproxy.sock'
    assert module_config['enhanced_metrics']
    assert module_config['proxy_monitors'] == ['server', 'frontend', 'backend']
    assert module_config['testing']
    assert module_config['excluded_metrics'] == set()
def test_metrics_submitted_for_resolvers():
    haproxy.submit_metrics = MagicMock()
    mock_config = Mock()
    mock_config.children = [ConfigOption('Testing', ('True', ))]
    haproxy.collect_metrics(haproxy.config(mock_config))
    haproxy.submit_metrics.assert_has_calls([
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'cname_error',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'truncated',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'update',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'refused',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'any_err',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'cname',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'outdated',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'too_big',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'invalid',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'snd_error',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'nx',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'valid',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'timeout',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'other',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns2',
            'type_instance': 'sent',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (4, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'cname_error',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'truncated',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'update',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'refused',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'any_err',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'cname',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'outdated',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'too_big',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'invalid',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'snd_error',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'nx',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (4, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'valid',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'timeout',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'other',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (8, ),
            'plugin_instance': 'nameserver.dns1',
            'type_instance': 'sent',
            'type': 'gauge',
            'plugin': 'haproxy'
        })
    ])
def test_default_config():
    module_config = haproxy.config(mock_config_default_values)
    assert module_config['socket'] == '/var/run/haproxy.sock'
    assert module_config['proxy_monitors'] == ['server', 'frontend', 'backend']
    assert module_config['testing']
def test_metrics_submitted_for_backend_and_server_with_correct_names():
    haproxy.submit_metrics = MagicMock()
    mock_config = Mock()
    mock_config.children = [
        ConfigOption('ProxyMonitor', ('backend', )),
        ConfigOption('EnhancedMetrics', ('True', )),
        ConfigOption('Testing', ('True', ))
    ]
    haproxy.collect_metrics(haproxy.config(mock_config))
    haproxy.submit_metrics.assert_has_calls([
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'rtime',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (2, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'smax',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'lastsess',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'check_duration',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (2, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'rate',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'wredis',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'eresp',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'dresp',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'cli_abrt',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'bin',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (344777, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'lbtot',
            'type': 'counter',
            'plugin': 'haproxy'
        }),
        call({
            'values': (344777, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'stot',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'econ',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (18, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'ttime',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'downtime',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'qcur',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'wretr',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'qtime',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'srv_abrt',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'bout',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'ctime',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'scur',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'bck',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'qmax',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (9, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'rate_max',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (1, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'act',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend.elasticache',
            'type_instance': 'chkfail',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'rtime',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (2, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'smax',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'comp_byp',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'lastsess',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (3, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'rate',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'wredis',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'comp_out',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'eresp',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'dresp',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'comp_in',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'dreq',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'cli_abrt',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'bin',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (344777, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'lbtot',
            'type': 'counter',
            'plugin': 'haproxy'
        }),
        call({
            'values': (515751, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'stot',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'econ',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (18, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'ttime',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (800, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'slim',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'downtime',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'qcur',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'comp_rsp',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'wretr',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'qtime',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'srv_abrt',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'bout',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'ctime',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'scur',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'bck',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'qmax',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (9, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'rate_max',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (1, ),
            'plugin_instance': 'backend.elasticsearch_backend',
            'type_instance': 'act',
            'type': 'gauge',
            'plugin': 'haproxy'
        })
    ])
def test_metrics_submitted_for_frontend_with_correct_names():
    haproxy.submit_metrics = MagicMock()
    mock_config = Mock()
    mock_config.children = [
        ConfigOption('ProxyMonitor', ('frontend', )),
        ConfigOption('EnhancedMetrics', ('True', )),
        ConfigOption('Testing', ('True', ))
    ]
    haproxy.collect_metrics(haproxy.config(mock_config))
    haproxy.submit_metrics.assert_has_calls([
        call({
            'values': (3, ),
            'type_instance': 'connrate',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (5, ),
            'type_instance': 'cumreq',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (78, ),
            'type_instance': 'idle_pct',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'smax',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'rate',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'req_rate',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'dresp',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'ereq',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'dreq',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'bin',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'stot',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'req_rate_max',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (8000, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'slim',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'rate_lim',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'bout',
            'type': 'derive',
            'plugin': 'haproxy'
        }),
        call({
            'values': (0, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'scur',
            'type': 'gauge',
            'plugin': 'haproxy'
        }),
        call({
            'values': (10, ),
            'plugin_instance': 'frontend.sensu_frontend',
            'type_instance': 'rate_max',
            'type': 'gauge',
            'plugin': 'haproxy'
        })
    ])
Пример #6
0
def test_enhanced_metrics():
    haproxy.collect_metrics(haproxy.config(mock_config_enhanced_sample))
Пример #7
0
def test_exclude_metric():
    haproxy.collect_metrics(haproxy.config(mock_config_exclude_bytes_out))
Пример #8
0
def test_read():
    haproxy.collect_metrics(haproxy.config(mock_config))