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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 792ec23ca4c2586cac57cc6b63da2addb6e04f7c9d538f6ee71379a48e7cd3aa |
|
MD5 | 78f437d4fcf9468b93cc9670dc35a38b |
|
BLAKE2b-256 | dac3759569bd06fbfb73644235db04ef42ec47a1c1d2c478ee12d0a18bd28767 |
File details
Details for the file asyncio_zabbix_sender-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: asyncio_zabbix_sender-0.2.0-py3-none-any.whl
- Upload date:
- Size: 13.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.8.10 Linux/5.4.0-171-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 616c1f97f6ff1fdd4c185db2ec923b546f600031364f312005e2601f7f54377f |
|
MD5 | 2714defb553b5471086fd11a53cad4a8 |
|
BLAKE2b-256 | 7fc5364647fc54341fbe1f2d433def24931508a913495dd9bbf3a4d4d1ddd4b2 |