Skip to main content

Asyncio implementation of the Zabbix Sender protocol

Project description

Zabbix sender

Dependency free implementation of the Zabbix Sender protocol using asyncio.

Key features:

  • Full specification implemented compared to other Zabbix sender implementations
  • Compression is enabled as default
  • Asynchronous implementation allows the program to continue while waiting for a response from Zabbix

Installation

The package can be found on PyPI and installed using pip:

pip install asyncio-zabbix-sender

Usage

The measurements for the Zabbix trapper item(s) can be sent using a high-level API. The Measurements object is a collection of measurements. The measurements can both be added via the constructor (as per the example below), but also dynamically via the add_measurement method.

import datetime
from asyncio_zabbix_sender import ZabbixSender, Measurements, Measurement

sender = ZabbixSender("example.com")

measurements = Measurements([
    Measurement(
        "vm-game-server", "cheat.used[doom,player1]", "idkfa", datetime.datetime.utcnow()
    )
])

response = await sender.send(measurements)

This package can also be used on a lower level to send packets directly.

from asyncio_zabbix_sender import create_packet, ZabbixSender

packet = create_packet(
    request=b'{"request":"sender data","data":[{"host":"<hostname>","key":"trap","value":"test value"}]}',
    use_compression=True
)

sender = ZabbixSender("example.com")
response = await sender.send_packet(packet)

Logging

The logger can be configured by using the name asyncio-zabbix-sender:

import logging

logger = logging.getLogger("asyncio-zabbix-sender")
logger.setLevel(logging.DEBUG)

Example from the test_send unit test by running pytest with --log-cli-level=DEBUG:

DEBUG    asyncio-zabbix-sender:_protocol.py:47 Compressed packet: 40 bytes. Original 35.
DEBUG    asyncio-zabbix-sender:_zabbix_sender.py:63 Created packet from measurements. Used compression: True.
DEBUG    asyncio-zabbix-sender:_zabbix_sender.py:78 Sending packet: b'ZBXD\x03(\x00\x00\x00#\x00\x00\x00x\x9c\xabVJI,IT\xb2\x8a\x8e\xd5Q*J-,M-.Q\xb2R*N\xcdKI-R\x00K\xd5\x02\x00\xd3\xc2\x0b\xfb'
DEBUG    asyncio-zabbix-sender:_zabbix_sender.py:84 Got response: b'x\x9c\x15\xc8\xc1\n\x80 \x0c\x00\xd0_\x19;G\xa0\xd9!\xfd\x1a\xd1\t\x82l\xe2\xec\x14\xfd{y{\xbc\x07\x07i\x17VB\x0f\xa8wJ\xa4\x8a\x1b`\xe5"\xab\xfa\x90U\x94=8\x13\xa0\xc4\xda\x96m\x80)3\xb6\x7f\x8f\x00JI8+h\'\x9e\x1e\x0e\xb3;s^\x16\xdf\x0f\xc8\xd6\x1d\xb5'
INFO     asyncio-zabbix-sender:_zabbix_sender.py:87 Packet sent: 53 bytes. Response data received: 88 bytes. Response flags 3.
DEBUG    asyncio-zabbix-sender:_zabbix_sender.py:97 Parsed response payload: {'response': 'success', 'info': 'processed: 41; failed: 2; total: 43; seconds spent: 31.41592'}

Note that only a summary of the packet that are send and the response received are logged as informational. Everything else is logged at debug level.

The INFO log entry contains the response flags. A response flag are set by:

  • 0x01 - Zabbix communications protocol
  • 0x02 - If compression is used
  • 0x04 - If the response is a large packet

Road map

The following improvements are planned (not necessary in order):

  • Encryption between the sender and Zabbix
    • connection using TLS and a pre-shared key (psk)
    • connection using TLS and a certificate (cert)
  • Better error handling
  • More documentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asyncio_zabbix_sender-0.1.1.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

asyncio_zabbix_sender-0.1.1-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file asyncio_zabbix_sender-0.1.1.tar.gz.

File metadata

  • Download URL: asyncio_zabbix_sender-0.1.1.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.8.10 Linux/5.4.0-144-generic

File hashes

Hashes for asyncio_zabbix_sender-0.1.1.tar.gz
Algorithm Hash digest
SHA256 94d6fa33769684694ba7886c03e1a2a1cdce434b30d8d670ab90e60736524fad
MD5 f0cb42987ca49f275d0edd430079494e
BLAKE2b-256 086b92f6f8b34eb8748b61547ba160d7b2d284cfdecc19d9dedd8684fa0b19bb

See more details on using hashes here.

File details

Details for the file asyncio_zabbix_sender-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for asyncio_zabbix_sender-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d48f23c5683366402a6effd68c7c7272a79bbdd8a07c71652f403a3dac48cd30
MD5 4eed74df3960c914ceff228818180180
BLAKE2b-256 1a6a1a55b532329ffe95358bb3bf513ec159f74ede73ef048a31c6090da980bf

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page