It’s been a long time since my last software update, anyhow I’m happy to share an improved version of DBforBIX.
What’s new here? Well now, starting from this version, DBforBIX act as a Zabbix Proxy, this means that now you have the full control of your monitoring agent directly from the Zabbix’s consolle!
This is a quite big improvement, and I definitely needs to say thank you to Andrey for his good work!
Currently the persistence database is not yet active, mainly because of the huge refactoring and coding work done.
As soon as I can I’ll bring back the persistence to this new project.
Please note that this version is completely incompatible with the previous one.
For a better explanation of how configure it and use it please refer the github wiki pages of the project.
You of can follow the project on github. Stay tuned!
I’m pleased to announce that my new book on Zabbix is now available on the market.
Packt has introduced a new course “Zabbix: Enterprise Network Monitoring Made Easy”. It is basically a blend of three published books of the same technology, intending to serve the customers with well-developed content.
This is what the editor wrote about my “Mastering Zabbix – Second Edition” while talking about the project:
Among the three books chosen, your book has given us a great opportunity to create a learning path for our readers. The book has extremely rich content which deserves to be delivered to the customers, yet again in another way.
Tags: book, monitoring
I’m adding more and more functionality to DBforBIX2, this new version has been re-factored again a bit and between the new feature you find:
- Improved Connection Pooling with Apache DBCP 2.2.
- The items that can’t be sent are now stored in an application embedded database
This new persistence layer can be enabled per database so you need to specify:
DB.<DBNAME>.Persistence=TRUE
The only configuration required to make it work is the application parameter:
# Persistence Database Directory
DBforBix.PersistenceDir=./persistentdb/
This will enable DBforBIX to store the item directly in the application embedded database (made with H2).
That said doing a practical example if your Zabbix server is, for some reason, unavailable the item acquired from the monitored DBs will be stored in the application embedded database.
I’ve decided to move all the persistence in a database because of the high number of items that are getting saved in your file system. Simply to me wasn’t elegant nor the ideal solution.
This solution drastically reduce the number of files saved in your disk.
The project is hosted here: https://github.com/smartmarmot/DBforBIX.
I’m also updating the configuration you can find here: https://www.smartmarmot.com/wiki/index.php?title=DBforBIX2
I’m adding more and more functionality to DBforBIX2, this new version has been re-factored again a bit and between the new feature you find:
- Zabbix JSON protocol now back in the trunk, with multi-item supported.
- Brand new set of library adopted in order to update the project with the last version of:
- Apache DBCP2
- Apache Common
- Apache Codec
- Apache Lang3
- Common Pool2
- Persistent Stack
Let me spend some words about the Persistence, this can be enabled per database so you need to specify:
DB.<DBNAME>.Persistence=TRUE
This will enable DBforBIX to store the item directly on the file-system, for persistence. So doing a practical example if your Zabbix server is, for some reason, unavailable the item acquired from the DB will be stored on the filesystem. Currently this is an experimental feature, not deeply tested and then not production ready. Anyway as best practice since the number collected can quickly grown on the filesystem is better to enable this feature ONLY for the critical databases. That said the item will be now stored on /opt/dbforbix/temp directory, as soon as the Zabbix is back available all the item stored there will be sent and removed from the filesystem.
The main pros of this solution are:
- the number of itmes can quickly grown for a long downtime of the server.
- the is no way at the moment to specify a different location for this temporary persistent stack
When I have a bit more time I’ll move the persistence in an internal database in order to avoid the high number of files generated when Zabbix is not accessible.
The project is hosted here: https://github.com/smartmarmot/DBforBIX.
I’m also updating the configuration you can find here: https://www.smartmarmot.com/wiki/index.php?title=DBforBIX2
It’s been a long time since my last software publication, anyhow I’m here with a brand new release.
Please note that this release is not compatible with the previous one and must be considered as a BETA.
I’ve done a lot of refactoring and coding, now the code is more elegant and more maintainable. Also I’ve moved the query files to xml with quite a few improvements. Now is finally possible retrieve all the multi column items and the multi row query in an elegant way.
Just to provide an example the query that follow here extract all the fileds and send them as Zabbix items:
<query time=“600” item=“maxcount[%1]“>SELECT name,value FROM v$parameter WHERE name IN (‘processes’,’sessions’)</query>
Is going to generate the items oracle.maxcount[processes] and oracle.maxcount[sessions] with a single query.
Now is also more readable the period between one sample and the other one in this example every 600 seconds you’ll have your item refreshed (as specified with time=”600″).
I’ve also moved all the code to GitHub, in order to simplify the maintenance and collaboration.
The project is hosted here: https://github.com/smartmarmot/DBforBIX.
In the next days I’ll update the documentation, most likely I’ll add, for consistency, a proper wiki to github.
Enjoy!
Tags: dbforbix, monitoring, zabbix