Back to Glances

NATS

docs/gw/nats.rst

4.5.41.2 KB
Original Source

.. _nats:

NATS

NATS is a message broker.

You can export statistics to a NATS server.

The connection should be defined in the Glances configuration file as following:

.. code-block:: ini

[nats]
host=nats://localhost:4222
prefix=glances

and run Glances with:

.. code-block:: console

$ glances --export nats

Data model

Glances stats are published as JSON messagesto the following subjects:

<prefix>.<plugin>

Example:

CPU stats are published to glances.cpu

So a simple Python client will subscribe to this subject with:

import asyncio

import nats


async def main():
    nc = nats.NATS()

    await nc.connect(servers=["nats://localhost:4222"])

    future = asyncio.Future()

    async def cb(msg):
        nonlocal future
        future.set_result(msg)

    await nc.subscribe("glances.cpu", cb=cb)

    # Wait for message to come in
    print("Waiting (max 30 seconds) for a message on 'glances' subject...")
    msg = await asyncio.wait_for(future, 30)
    print(msg.subject, msg.data)

if __name__ == '__main__':
    asyncio.run(main())

To subscribe to all Glannces stats use wildcard:

    await nc.subscribe("glances.*", cb=cb)