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):

  • Better error handling
  • More documentation (how to set up ssl among other things)

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.2.0.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

asyncio_zabbix_sender-0.2.0-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for asyncio_zabbix_sender-0.2.0.tar.gz
Algorithm Hash digest
SHA256 792ec23ca4c2586cac57cc6b63da2addb6e04f7c9d538f6ee71379a48e7cd3aa
MD5 78f437d4fcf9468b93cc9670dc35a38b
BLAKE2b-256 dac3759569bd06fbfb73644235db04ef42ec47a1c1d2c478ee12d0a18bd28767

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncio_zabbix_sender-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 616c1f97f6ff1fdd4c185db2ec923b546f600031364f312005e2601f7f54377f
MD5 2714defb553b5471086fd11a53cad4a8
BLAKE2b-256 7fc5364647fc54341fbe1f2d433def24931508a913495dd9bbf3a4d4d1ddd4b2

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