zabbix-tools / zabbix_agent_bench Goto Github PK
View Code? Open in Web Editor NEWBenchmarking and stress testing tool for the Zabbix agent
Benchmarking and stress testing tool for the Zabbix agent
If the last key in a key file is a prototype, the parent discovery key and all of its children are omitted from the test.
This is because item discoveries are only executed (main.go:167) if a subsequent normal key is found (main.go:142) in the key file loading loop.
The following is the keys configuration file:
eventlog[System,,"Warning|Error|Critical",Zabbix Agent,,,]
perf_counter["\Process(zabbix_agentd)% Privileged Time"]
perf_counter["\Process(zabbix_agentd)% Processor Time"]
perf_counter["\Process(zabbix_agentd)% User Time"]
perf_counter["\Process(zabbix_agentd)\Creating Process ID"]
perf_counter["\Process(zabbix_agentd)\Elapsed Time"]
perf_counter["\Process(zabbix_agentd)\Handle Count"]
perf_counter["\Process(zabbix_agentd)\ID Process"]
perf_counter["\Process(zabbix_agentd)\IO Data Bytes/sec"]
perf_counter["\Process(zabbix_agentd)\IO Data Operations/sec"]
perf_counter["\Process(zabbix_agentd)\IO Other Bytes/sec"]
perf_counter["\Process(zabbix_agentd)\IO Other Operations/sec"]
perf_counter["\Process(zabbix_agentd)\IO Read Bytes/sec"]
perf_counter["\Process(zabbix_agentd)\IO Read Operations/sec"]
perf_counter["\Process(zabbix_agentd)\IO Write Bytes/sec"]
perf_counter["\Process(zabbix_agentd)\IO Write Operations/sec"]
perf_counter["\Process(zabbix_agentd)\Page Faults/sec"]
perf_counter["\Process(zabbix_agentd)\Page File Bytes"]
perf_counter["\Process(zabbix_agentd)\Page File Bytes Peak"]
perf_counter["\Process(zabbix_agentd)\Pool Nonpaged Bytes"]
perf_counter["\Process(zabbix_agentd)\Pool Paged Bytes"]
perf_counter["\Process(zabbix_agentd)\Priority Base"]
perf_counter["\Process(zabbix_agentd)\Private Bytes"]
perf_counter["\Process(zabbix_agentd)\Thread Count"]
perf_counter["\Process(zabbix_agentd)\Virtual Bytes"]
perf_counter["\Process(zabbix_agentd)\Virtual Bytes Peak"]
perf_counter["\Process(zabbix_agentd)\Working Set"]
perf_counter["\Process(zabbix_agentd)\Working Set - Private"]
perf_counter["\Process(zabbix_agentd)\Working Set Peak"]
This is the verbose output:
Testing 29 keys across 1 threads...
[item] eventlog[System,,"Warning|Error|Critical",Zabbix Agent,,,]: ZBX_NOTSUPPORTEDAccessible only as active check.
[item] perf_counter["\Process(zabbix_agentd)% Privileged Time"]: 0.000000
[item] perf_counter["\Process(zabbix_agentd)% Processor Time"]: 0.000000
[item] perf_counter["\Process(zabbix_agentd)% User Time"]: 0.000000
[item] perf_counter["\Process(zabbix_agentd)\Creating Process ID"]: 468.000000
[item] perf_counter["\Process(zabbix_agentd)\Elapsed Time"]: 7285.248998
[item] perf_counter["\Process(zabbix_agentd)\Handle Count"]: 458.000000
[item] perf_counter["\Process(zabbix_agentd)\ID Process"]: 6564.000000
[item] perf_counter["\Process(zabbix_agentd)\IO Data Bytes/sec"]: 0.000000
[item] perf_counter["\Process(zabbix_agentd)\IO Data Operations/sec"]: 0.000000
[item] perf_counter["\Process(zabbix_agentd)\IO Other Bytes/sec"]: 1994.828356
[item] perf_counter["\Process(zabbix_agentd)\IO Other Operations/sec"]: 34.996989
[item] perf_counter["\Process(zabbix_agentd)\IO Read Bytes/sec"]: 0.000000
[item] perf_counter["\Process(zabbix_agentd)\IO Read Operations/sec"]: 0.000000
[item] perf_counter["\Process(zabbix_agentd)\IO Write Bytes/sec"]: 0.000000
[item] perf_counter["\Process(zabbix_agentd)\IO Write Operations/sec"]: 0.000000
[item] perf_counter["\Process(zabbix_agentd)\Page Faults/sec"]: 0.000000
[item] perf_counter["\Process(zabbix_agentd)\Page File Bytes"]: 11231232.000000
[item] perf_counter["\Process(zabbix_agentd)\Page File Bytes Peak"]: 11231232.000000
[item] perf_counter["\Process(zabbix_agentd)\Pool Nonpaged Bytes"]: 46968.000000
[item] perf_counter["\Process(zabbix_agentd)\Pool Paged Bytes"]: 64532.000000
[item] perf_counter["\Process(zabbix_agentd)\Priority Base"]: 8.000000
[item] perf_counter["\Process(zabbix_agentd)\Private Bytes"]: 11231232.000000
[item] perf_counter["\Process(zabbix_agentd)\Thread Count"]: 57.000000
[item] perf_counter["\Process(zabbix_agentd)\Virtual Bytes"]: 104140800.000000
[item] perf_counter["\Process(zabbix_agentd)\Virtual Bytes Peak"]: 104140800.000000
[item] perf_counter["\Process(zabbix_agentd)\Working Set"]: 13565952.000000
[item] perf_counter["\Process(zabbix_agentd)\Working Set - Private"]: ZBX_NOTSUPPORTEDCannot obtain performance information from collector.
[item] perf_counter["\Process(zabbix_agentd)\Working Set Peak"]: 13565952.000000
This is the standard output:
eventlog[System,,"Warning|Error|Critical",Zabbix Agent,,,] : 0 1 0
perf_counter["\Process(zabbix_agentd)%!P(MISSING)rivileged Time"] : 1 0 0
perf_counter["\Process(zabbix_agentd)%!P(MISSING)rocessor Time"] : 1 0 0
perf_counter["\Process(zabbix_agentd)%!U(MISSING)ser Time"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Creating Process ID"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Elapsed Time"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Handle Count"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\ID Process"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\IO Data Bytes/sec"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\IO Data Operations/sec"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\IO Other Bytes/sec"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\IO Other Operations/sec"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\IO Read Bytes/sec"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\IO Read Operations/sec"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\IO Write Bytes/sec"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\IO Write Operations/sec"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Page Faults/sec"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Page File Bytes Peak"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Page File Bytes"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Pool Nonpaged Bytes"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Pool Paged Bytes"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Priority Base"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Private Bytes"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Thread Count"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Virtual Bytes Peak"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Virtual Bytes"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Working Set - Private"] : 0 1 0
perf_counter["\Process(zabbix_agentd)\Working Set Peak"] : 1 0 0
perf_counter["\Process(zabbix_agentd)\Working Set"] : 1 0 0
=== Totals ===
Total values processed: 29
Total unsupported values: 2
Total transport errors: 0
Total key list iterations: 1
Finished! Processed 29 values across 1 threads in 40.232175ms (720.816113 NVPS)
The following file will not work:
ext.nic.discovery[All]
ext.nic.flag.valid.broadcast.address.set[{#IF_NAME}]
The following file will work:
ext.nic.discovery[All]
ext.nic.flag.valid.broadcast.address.set[{#IF_NAME}]
system.uptime
Add syntax to the key file format to instruct zabbix_agent_bench to expect a ZBX_NOTSUPPORTED response. This is useful for testing boundary cases for agent keys.
Hi Ryan,
Could you provide also some benchmark performance statistic (e.g. request rate) please?
I've published something similar in python: https://github.com/jangaraj/zabbix-agent-stress-test
Extend the key file syntax to enable zabbix_agent_bench to expect a return value from tested keys. This should probably be specified as a regular expression.
E.g. agent.ping expects a return value of 1.
Add a new command switch to immediately terminate if an unsupported item or transport error occurs.
This is useful when running unit tests of agent items.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.