Page 1 of 1

How to monitor Zimbra using pflogsumm and NET-SNMP-EXTEND

Posted: Mon Aug 14, 2017 12:20 pm
by jorgedlcruz
Hello everyone,
I've been working on a spare project using SNMP and Zimbra Collaboration. This project uses a modified version of the popular pflogsumm script to retrieve the Zimbra Collaboration email queues information and creates an output which we retrieve using the NET-SNMP-EXTEND, so we can monitor each sensor as an SNMP OID.


More information available in:

With this project you can monitor multiple things of a Zimbra Platform, fro example the Zimbra mail queues using the SNMP tool you prefer.

Zimbra Collaboration Performance
* Received Megabytes
* Delivered Megabytes
* Total Emails/received
* Total Emails/Delivered
* Total Recipients
* Total Senders
* Forwarded
* Deferred
* Bounced
* Rejected
* Held
* Discarded
* Domains Receiving Emails
* Domains Sending Emails

Also, and brand new, you can now monitor the service status, Version, License and License valid until:
These Scripts combine allow us to monitor from our Zimbra Collaboration:
* Zimbra Version
* Amavis Status
* Antispam Status
* Antivirus Status
* Convertd Status
* LDAP Status
* Logger Status
* Mailboxd Status
* Memcache Status
* MTA Status
* OpenDKIM Status
* Proxy Status
* Service Web App Status
* SNMP Status
* Spell Status
* Stats Status
* Zimbra Web App Status
* Zimbra Web Admin Web App Status
* Zimbra Configd Status
* Zimbra License Status
* Zimbra License valid until Status

Here are an example of how it might look like with PRTG and the Zimbra queues:

And this one just for Resources and Service and License status:

Coming next
This is just a v0.1 of this Dashboard, the next step will be to use the Zimbra SOAP API to obtain some extra information from the Zimbra Collaboration Environment, like:
* Number of Active Users
* Number of Inactive Users
* Number of Domains
* Number of Users with ActiveSync
* etc.

In next versions we will parse directly the logs and put the attempts of logins, and successful logins on a map.

As this is an open project, please feel free to share your ideas, feedback and if possible even help to make it better :) My MTA is really small, so I will appreciate a real feedback from a bigger MTA.

Thank you guys!

Re: How to monitor Zimbra using pflogsumm and NET-SNMP-EXTEND

Posted: Wed Oct 25, 2017 1:42 pm
by jorgedlcruz
Heads up!
The github project have been updated with a new set of scripts to monitor using SNMP: Zimbra version, Zimbra License and Zimbra services.


PS: The project is a Community contribution, this means is not supported officialy by Zimbra, just play with it on a staging or test environment.

Re: How to monitor Zimbra using pflogsumm and NET-SNMP-EXTEND

Posted: Tue Dec 05, 2017 11:18 pm
by BloodyIron
While I'm loving these built-in metrics, I really do want to see SNMP actually working in Zimbra OSE too. I effectively want both! Namely so that I can have my existing monitoring (LibreNMS) monitor Zimbra for stability and things like that. But the graph stuff you've been showing in this and the other thread would be super useful for realtime-ish troubleshooting too!

So, perhaps lump fixing SNMP into this too? And having documentation for how to use it? ;) (maybe you recall me discussing this with you in the past).

Re: How to monitor Zimbra using pflogsumm and NET-SNMP-EXTEND

Posted: Wed Dec 06, 2017 12:16 pm
by jorgedlcruz
Thank you for the comment! I remember our conversation, this works as well on Zimbra OSE :) All the instructions to make it work, and even extend it are here:

This gives you SNMP itself, which you can monitor with PRTG, LibreNMS or any other SNMP tool.

But I agree, I would love to see the SNMP Zimbra service extended more with this and with other stuff as well

Try it and let us know!


Re: How to monitor Zimbra using pflogsumm and NET-SNMP-EXTEND

Posted: Thu Oct 11, 2018 7:17 am
by jepy
1. how do I change the default snmp timeout? can I receive the tutorial to change the default snmp timeout via command line linux I use centos 7
2. the problem that I found is that when using a mail queue script in the snmp.conf the data cannot be retrieved, but if it doesn't use the mail queue script, only the script service can
3. if I don't use queue mail, but when I install the mailqueue script I can't


Re: How to monitor Zimbra using pflogsumm and NET-SNMP-EXTEND

Posted: Sat Jan 05, 2019 5:31 pm
by 486dx
Hello jorgedlcruz,
You did a really great application. With this we can monitor almost all critical metrics that generated from zimbra. I'll try it with Zabbix.

Re: How to monitor Zimbra using pflogsumm and NET-SNMP-EXTEND

Posted: Wed Jan 23, 2019 3:10 am
by jepy
how fix it ?
Use of uninitialized value in numeric gt (>) at /etc/snmp/scripts/ line 1084 is not a valid integer value

Re: How to monitor Zimbra using pflogsumm and NET-SNMP-EXTEND

Posted: Thu Nov 07, 2019 9:13 pm
by tonyg
I have a small server with low traffic, just for my own sites. But I really want to monitor my ZCS environment and get notified as soon as anything needs attention. I searched this forum for "SNMP" and found almost no info. So thank you very much for your effort on this FOSS.

I looked over the pflogsumm script. I really don't use Perl anymore so I might re-write that. I was more concerned with understanding what metrics are available, and how to get them out - that includes which files have valuable data, and what that data looks like.

I may or may not use PRTG, given the limit of 100 sensors on the freeware. I'm looking around for other freeware, but I don't care much about graphics. I can write my own code to monitor for issues and send notifications based on trigger values.

What I am curious about ... with all of the references to SNMP in Zimbra (and Postfix) can anyone provide a reference that explains exactly what the SNMP server and other processors are? I don't understand what data they are supposed to provide or how they render their data. I don't understand why we need to parse log files if there is SNMP functionality built-in somewhere.


Re: How to monitor Zimbra using pflogsumm and NET-SNMP-EXTEND

Posted: Wed Apr 22, 2020 1:24 pm
by Lewis-H
snmpwalk -c public -v2c NET-SNMP-EXTEND-MIB::nsExtendOutLine
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraHeld".1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraBounced".1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraSenders".1 = STRING: 1
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraDeferred".1 = STRING: 2
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraReceived".1 = STRING: 1
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraRejected".1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraDelivered".1 = STRING: 3
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraDiscarded".1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraForwarded".1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraRecipients".1 = STRING: 1
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraBytesReceived".1 = STRING: 570
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraRejectWarning".1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraBytesDelivered".1 = STRING: 3827
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraSendingDomains".1 = STRING: 1
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraRecipientDomains".1 = STRING: 1
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraVersion".1 = STRING: 8.7.11 GA
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusMTA".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusLDAP".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusSNMP".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusProxy".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusSpell".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusStats".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusAmavis".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusLogger".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusConfigd".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusLicense".1 = STRING: license is OK
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusAntispam".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusConvertd".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusMailboxd".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusMemcache".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusOpendkim".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusAntivirus".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusLicensevalid".1 = STRING: 20211231170000Z
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusZimbrawebapp".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusServicewebapp".1 = STRING: Running
NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusZimbraadminwebapp".1 = STRING: Running
You might want to translate this NET-SNMP-EXTEND into OIDs, examplefor ZimbraReceived below, you will need to do the same for every field:

snmpwalk -On -v2c -c public NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"ZimbraReceived\"
. = STRING: 3
Now we know the OID of every value, we can move to our preferred SNMP Tool and start monitoring it by using the OID.