Ad Widget

Collapse

RabbitMQ 3.8 monitoring

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • sylvain.m
    Junior Member
    • Oct 2020
    • 1

    #1

    RabbitMQ 3.8 monitoring

    Hello everyone,

    i'm new to Zabbix and I'm trying to monitor a RabbitMQ cluster v3.8 with Zabbix 4.2 (mandatory versions)

    Since the RMQ API return has changed, the official template doesn't seems to work OOB

    So, I created a script that get my informations :

    Code:
    #!/bin/python2.7
    
    # Libraries import
    import requests
    import json
    import sys
    import os
    
    # Define URLs
    overview="/api/overview"
    nodes="/api/nodes"
    queues="/api/queues"
    
    # Get credentials from file
    with open('/tech/zabbix/cred') as json_file:
    data = json.load(json_file)
    user = data['user']
    passwd = data['pass']
    
    # Test which URL we want to call
    if ''.join(sys.argv[1]) == "overview":
    commande=overview
    if ''.join(sys.argv[1]) == "queues":
    commande=queues
    if ''.join(sys.argv[1]) == "nodes":
    commande=nodes
    
    def upper_keys(x):
    if isinstance(x, list):
    return [upper_keys(v) for v in x]
    elif isinstance(x, dict):
    return dict(("" + k.upper() + "", upper_keys(v)) for k, v in x.iteritems())
    else:
    return x
    
    # Main
    response = requests.get("http://localhost:15672" + commande, auth=(user, passwd))
    if(response.ok):
    json_data = json.loads(response.content)
    # json = json.dumps(upper_keys(json_data), sort_keys=True, indent=4)
    json = json.dumps(upper_keys(json_data))
    print(json)
    This Python script provides this JSON output, depending on which arguments you pass (here is "queues") :

    Code:
    [{"MESSAGES_UNACKNOWLEDGED_RAM": 0, "RECOVERABLE_SLAVES": null, "CONSUMERS": 0, "REDUCTIONS": 36551995, "AUTO_DELETE": false, "MESSAGE_BYTES_PAGED_OUT": 0, "MESSAGE_BYTES_UNACKNOWLEDGED": 0, "REDUCTIONS_DETAILS": {"RATE": 0.0}, "MESSAGE_BYTES": 359988, "MESSAGES_UNACKNOWLEDGED": 0, "CONSUMER_UTILISATION": null, "EXCLUSIVE": false, "VHOST": "/", "GARBAGE_COLLECTION": {"MAX_HEAP_SIZE": 0, "MIN_HEAP_SIZE": 233, "FULLSWEEP_AFTER": 65535, "MINOR_GCS": 263, "MIN_BIN_VHEAP_SIZE": 46422}, "MESSAGES_DETAILS": {"RATE": 0.0}, "SLAVE_NODES": ["rabbit@server567"], "MESSAGE_BYTES_PERSISTENT": 0, "POLICY": "ha-all", "MESSAGES_PAGED_OUT": 0, "NODE": "rabbit@server566", "HEAD_MESSAGE_TIMESTAMP": null, "DURABLE": false, "MESSAGES_READY_RAM": 29999, "STATE": "running", "MESSAGE_STATS": {"PUBLISH_DETAILS": {"RATE": 0.0}, "PUBLISH": 29999}, "ARGUMENTS": {}, "EFFECTIVE_POLICY_DEFINITION": {"HA-MODE": "all"}, "MESSAGES_READY": 29999, "MESSAGES_RAM": 29999, "MESSAGE_BYTES_READY": 359988, "SINGLE_ACTIVE_CONSUMER_TAG": null, "NAME": "test-01", "MESSAGES_PERSISTENT": 0, "BACKING_QUEUE_STATUS": {"MIRROR_SENDERS": 0, "Q1": 0, "Q3": 0, "Q2": 0, "Q4": 29999, "AVG_ACK_EGRESS_RATE": 0.0, "MIRROR_SEEN": 0, "LEN": 29999, "TARGET_RAM_COUNT": "infinity", "MODE": "default", "NEXT_SEQ_ID": 29999, "DELTA": ["delta", "undefined", 0, 0, "undefined"], "AVG_ACK_INGRESS_RATE": 0.0, "AVG_EGRESS_RATE": 0.0, "AVG_INGRESS_RATE": 0.0}, "MESSAGES": 29999, "IDLE_SINCE": "2020-10-22 12:41:22", "OPERATOR_POLICY": null, "SYNCHRONISED_SLAVE_NODES": ["rabbit@server567"], "MEMORY": 18250220, "EXCLUSIVE_CONSUMER_TAG": null, "MESSAGES_READY_DETAILS": {"RATE": 0.0}, "TYPE": "classic", "MESSAGES_UNACKNOWLEDGED_DETAILS": {"RATE": 0.0}, "MESSAGE_BYTES_RAM": 359988}, {"MESSAGES_UNACKNOWLEDGED_RAM": 0, "RECOVERABLE_SLAVES": null, "CONSUMERS": 0, "REDUCTIONS": 35943061, "AUTO_DELETE": false, "MESSAGE_BYTES_PAGED_OUT": 0, "MESSAGE_BYTES_UNACKNOWLEDGED": 0, "REDUCTIONS_DETAILS": {"RATE": 0.0}, "MESSAGE_BYTES": 359988, "MESSAGES_UNACKNOWLEDGED": 0, "CONSUMER_UTILISATION": null, "EXCLUSIVE": false, "VHOST": "/", "GARBAGE_COLLECTION": {"MAX_HEAP_SIZE": 0, "MIN_HEAP_SIZE": 233, "FULLSWEEP_AFTER": 65535, "MINOR_GCS": 257, "MIN_BIN_VHEAP_SIZE": 46422}, "MESSAGES_DETAILS": {"RATE": 0.0}, "SLAVE_NODES": ["rabbit@server567"], "MESSAGE_BYTES_PERSISTENT": 0, "POLICY": "ha-all", "MESSAGES_PAGED_OUT": 0, "NODE": "rabbit@server566", "HEAD_MESSAGE_TIMESTAMP": null, "DURABLE": false, "MESSAGES_READY_RAM": 29999, "STATE": "running", "MESSAGE_STATS": {"PUBLISH_DETAILS": {"RATE": 0.0}, "PUBLISH": 29999}, "ARGUMENTS": {}, "EFFECTIVE_POLICY_DEFINITION": {"HA-MODE": "all"}, "MESSAGES_READY": 29999, "MESSAGES_RAM": 29999, "MESSAGE_BYTES_READY": 359988, "SINGLE_ACTIVE_CONSUMER_TAG": null, "NAME": "test-02", "MESSAGES_PERSISTENT": 0, "BACKING_QUEUE_STATUS": {"MIRROR_SENDERS": 0, "Q1": 0, "Q3": 0, "Q2": 0, "Q4": 29999, "AVG_ACK_EGRESS_RATE": 0.0, "MIRROR_SEEN": 0, "LEN": 29999, "TARGET_RAM_COUNT": "infinity", "MODE": "default", "NEXT_SEQ_ID": 29999, "DELTA": ["delta", "undefined", 0, 0, "undefined"], "AVG_ACK_INGRESS_RATE": 0.0, "AVG_EGRESS_RATE": 0.0, "AVG_INGRESS_RATE": 0.0}, "MESSAGES": 29999, "IDLE_SINCE": "2020-10-22 12:41:22", "OPERATOR_POLICY": null, "SYNCHRONISED_SLAVE_NODES": ["rabbit@server567"], "MEMORY": 18250220, "EXCLUSIVE_CONSUMER_TAG": null, "MESSAGES_READY_DETAILS": {"RATE": 0.0}, "TYPE": "classic", "MESSAGES_UNACKNOWLEDGED_DETAILS": {"RATE": 0.0}, "MESSAGE_BYTES_RAM": 359988}, {"MESSAGES_UNACKNOWLEDGED_RAM": 0, "RECOVERABLE_SLAVES": null, "CONSUMERS": 0, "REDUCTIONS": 36756275, "AUTO_DELETE": false, "MESSAGE_BYTES_PAGED_OUT": 0, "MESSAGE_BYTES_UNACKNOWLEDGED": 0, "REDUCTIONS_DETAILS": {"RATE": 0.0}, "MESSAGE_BYTES": 359988, "MESSAGES_UNACKNOWLEDGED": 0, "CONSUMER_UTILISATION": null, "EXCLUSIVE": false, "VHOST": "/", "GARBAGE_COLLECTION": {"MAX_HEAP_SIZE": 0, "MIN_HEAP_SIZE": 233, "FULLSWEEP_AFTER": 65535, "MINOR_GCS": 257, "MIN_BIN_VHEAP_SIZE": 46422}, "MESSAGES_DETAILS": {"RATE": 0.0}, "SLAVE_NODES": ["rabbit@server567"], "MESSAGE_BYTES_PERSISTENT": 0, "POLICY": "ha-all", "MESSAGES_PAGED_OUT": 0, "NODE": "rabbit@server566", "HEAD_MESSAGE_TIMESTAMP": null, "DURABLE": false, "MESSAGES_READY_RAM": 29999, "STATE": "running", "MESSAGE_STATS": {"PUBLISH_DETAILS": {"RATE": 0.0}, "PUBLISH": 29999}, "ARGUMENTS": {}, "EFFECTIVE_POLICY_DEFINITION": {"HA-MODE": "all"}, "MESSAGES_READY": 29999, "MESSAGES_RAM": 29999, "MESSAGE_BYTES_READY": 359988, "SINGLE_ACTIVE_CONSUMER_TAG": null, "NAME": "test-03", "MESSAGES_PERSISTENT": 0, "BACKING_QUEUE_STATUS": {"MIRROR_SENDERS": 0, "Q1": 0, "Q3": 0, "Q2": 0, "Q4": 29999, "AVG_ACK_EGRESS_RATE": 0.0, "MIRROR_SEEN": 0, "LEN": 29999, "TARGET_RAM_COUNT": "infinity", "MODE": "default", "NEXT_SEQ_ID": 29999, "DELTA": ["delta", "undefined", 0, 0, "undefined"], "AVG_ACK_INGRESS_RATE": 0.0, "AVG_EGRESS_RATE": 0.0, "AVG_INGRESS_RATE": 0.0}, "MESSAGES": 29999, "IDLE_SINCE": "2020-10-22 12:41:23", "OPERATOR_POLICY": null, "SYNCHRONISED_SLAVE_NODES": ["rabbit@server567"], "MEMORY": 18250204, "EXCLUSIVE_CONSUMER_TAG": null, "MESSAGES_READY_DETAILS": {"RATE": 0.0}, "TYPE": "classic", "MESSAGES_UNACKNOWLEDGED_DETAILS": {"RATE": 0.0}, "MESSAGE_BYTES_RAM": 359988}, {"MESSAGES_UNACKNOWLEDGED_RAM": 0, "RECOVERABLE_SLAVES": null, "CONSUMERS": 0, "REDUCTIONS": 322913, "AUTO_DELETE": false, "MESSAGE_BYTES_PAGED_OUT": 0, "MESSAGE_BYTES_UNACKNOWLEDGED": 0, "REDUCTIONS_DETAILS": {"RATE": 0.0}, "MESSAGE_BYTES": 0, "MESSAGES_UNACKNOWLEDGED": 0, "CONSUMER_UTILISATION": null, "EXCLUSIVE": false, "VHOST": "/", "GARBAGE_COLLECTION": {"MAX_HEAP_SIZE": 0, "MIN_HEAP_SIZE": 233, "FULLSWEEP_AFTER": 65535, "MINOR_GCS": 508, "MIN_BIN_VHEAP_SIZE": 46422}, "MESSAGES_DETAILS": {"RATE": 0.0}, "SLAVE_NODES": ["rabbit@server567"], "MESSAGE_BYTES_PERSISTENT": 0, "POLICY": "ha-all", "MESSAGES_PAGED_OUT": 0, "NODE": "rabbit@server566", "HEAD_MESSAGE_TIMESTAMP": null, "DURABLE": false, "MESSAGES_READY_RAM": 0, "STATE": "running", "ARGUMENTS": {}, "EFFECTIVE_POLICY_DEFINITION": {"HA-MODE": "all"}, "MESSAGES_READY": 0, "MESSAGES_RAM": 0, "MESSAGE_BYTES_READY": 0, "SINGLE_ACTIVE_CONSUMER_TAG": null, "NAME": "test-04", "MESSAGES_PERSISTENT": 0, "BACKING_QUEUE_STATUS": {"MIRROR_SENDERS": 0, "Q1": 0, "Q3": 0, "Q2": 0, "Q4": 0, "AVG_ACK_EGRESS_RATE": 0.0, "MIRROR_SEEN": 0, "LEN": 0, "TARGET_RAM_COUNT": "infinity", "MODE": "default", "NEXT_SEQ_ID": 0, "DELTA": ["delta", "undefined", 0, 0, "undefined"], "AVG_ACK_INGRESS_RATE": 0.0, "AVG_EGRESS_RATE": 0.0, "AVG_INGRESS_RATE": 0.0}, "MESSAGES": 0, "IDLE_SINCE": "2020-10-22 12:41:23", "OPERATOR_POLICY": null, "SYNCHRONISED_SLAVE_NODES": ["rabbit@server567"], "MEMORY": 10484, "EXCLUSIVE_CONSUMER_TAG": null, "MESSAGES_READY_DETAILS": {"RATE": 0.0}, "TYPE": "classic", "MESSAGES_UNACKNOWLEDGED_DETAILS": {"RATE": 0.0}, "MESSAGE_BYTES_RAM": 0}]
    I managed to get basic stuff with preprocessing steps (JSONPath) but here is the catch :

    I don't know how many queues I will get on each nodes, so I want to create a discovery rule to get everything from the JSON above (I have an item which contains this JSON)
    I tried so many things to use those data (from official template, asking around at my company, read everything that I can put my hand on) but I'm stuck

    does anyone has any idea ? I think it's possible but can't find the way

    Thank you very much
Working...