1

Is it even possible/recommended ?

We are trying to set up few active items configured with a 1 second interval. However those items don't keep up the desired interval, instead we are gathering a value about every ~30 seconds (as seen on the corresponding graph).

Testing the above with a simple "echo 1" as user paramater on the client side, which should be sent every 1 second without delay, but is not. We deployed a client on the server itself with an item configured the same way as above, which is successfully gathered every seconds.

Our Zabbix setup is relatively new, therefore the underlying MySQL DB is rather small and we haven't that many clients/items. The server is running in a Linux VM and the clients on dedicated Linux hosts (not on a local network).

We looked at the configurations files both on the server/client, but didn't see what could help us achieve this (apart from adding more trappers). This seems not to be a connection issue as the client side buffer should overcome this.

Can't post more links, so here are the things we looked at :

  • Performance tuning page in the Zabbix reference manual
  • Alexei Vladishev zabbix performance tuning slides (found on slideshare)
Wexiwa
  • 11
  • 5
  • First, why do you need 1s interval? You are likely to have performance issue later. Second, active agents process items serially, so if you have other, slower items, they will slow down everything else. 30 seconds still looks strange, how many active items do you have on that agent, what do they do? And last - pollers won't help you, they are not involved with active items at all. – Richlv Oct 06 '16 at 13:02
  • @Richlv First, we would like to monitor fast changing values, that's why. Second, we didn't know for the sequential process, we have 31 items that are indirectly querying a database which is actively used. These tasks are taking at most 1s to complete. Thus, in the worst case, this could explain the 30 second interval if everything is sequential. For the third point, my bad for the writing pollers, I meant trappers. – Wexiwa Oct 06 '16 at 14:09
  • @Richlv Only 4 of those items are configured with a 1 s interval. Is there a way to add more processes or add parallelism with active items ? Or the only option would be to use zabbix_sender to manually send the values the way we want ? – Wexiwa Oct 06 '16 at 14:19
  • @Richlv I've made a test, disabling all the other items leaving only one, it confirms what I deduced from what you said : this unique item is now effectively gathered every seconds. – Wexiwa Oct 06 '16 at 15:47
  • There is no support for parallel active agent items at this time, you can vote on https://support.zabbix.com/browse/ZBXNEXT-691 . If you really want to have items with 1 second interval, zabbix_sender is probably the best choice - just make sure not to overload the Zabbix server/database. – Richlv Oct 13 '16 at 19:14

1 Answers1

0

Thanks to @Richlv and after some tests I made (see the comments) we found the issue. Because active items are processed sequentially and that the command behind those items could take a bit to return, therefore generating some delay stacking up for each item, the agent was doing his best looping through all the items.

As it isn't possible to have parallel processing of active items, the possible solutions in this case could be the following :

  • Increasing the time interval for active items
  • Using zabbix_sender to manually do the work (may need to also implement the client-side buffer that is provided with active items)
  • Perhaps another approach would be to use log file monitoring
  • Running 2 agent on the same client, thus setting up parallel processes, spreading the active items wisely (not a great solution though)
  • Improving performances of the command behind the active items and/or reducing worst-case timing (with a timeout for instance) -- What we did
Wexiwa
  • 11
  • 5