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

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: asyncio_zabbix_sender-0.1.2.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-144-generic

File hashes

Hashes for asyncio_zabbix_sender-0.1.2.tar.gz
Algorithm Hash digest
SHA256 cb5de212d9a9f5b73f4e5d45392e640fa82b191d4bc865fd7b95da86a9558e64
MD5 4e4a5fea51bee2477020c15c7303b08f
BLAKE2b-256 5d3261d383cbfea38432217102fb17828ccb998b3dcef8485c130839ba81180a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncio_zabbix_sender-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 60d0cf606db660770e91c5b8411a913fddf8fa0165152374264b1b1c85d2fbc0
MD5 4cd8eff7f18e4a56933a49450b859d2b
BLAKE2b-256 451506e3454c8b9dcad8640cd9d2843fcf0e05ab4e095c7ea20eee561a2ad4df

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