Zenoss: Creating Custom Reports

4 min read


Zenoss Core 3.x Network and System Monitoring

Zenoss Core 3.x Network and System Monitoring

Implement Zenoss core and fit it into your security management environment using this easy-to-understand tutorial guide.

        Read more about this book      

(For more resources related to the subject, see here.)

Creating Custom Device Reports

When you view the Reports page in Zenoss Core, you should notice an empty report class called Custom Device Reports. The custom device report provides an interface that lets us query Zenoss Core for devices. Each device that matches the query is listed as a row on the report.

Let’s get started with a simple report to show uptime values for all devices, and then we’ll talk through the options.

With the Custom Device Reports organizer selected:

  1. Select Add Custom Device Report from the Add Report button (at the bottom of the Report Classes sidebar.
  2. In the Create Custom Device Report dialog, type a name for your report in the ID field. I’m going to use Uptime. When you click on Submit, the edit screen is displayed.
  3. Enter the following values for the Uptime report, as seen in the following screenshot. Leave all other fields set to their default values.
    • Title: Uptime
    • Sort Column: Name
    • Columns: uptimeStr, getId
    • To view the report, click the Save button, and then click on the View Report link (in the sidebar).

The following screenshot shows the edit screen of our report:

Zenoss: Creating Custom Reports

The next screenshot shows what our report looks like when we view it:

(Move the mouse over the image to enlarge it.)

As you see, we created a simple report that lists each device along with its uptime value. In this report, we use the Column field to do the heavy lifting. We specified the device attributes of uptimeStr and getId, which give us a human readable value of the device’s uptime and the name of the device, respectively.

A good place to find device attributes is in Appendix B, Device Attributes which lists common attributes you can use with TALES expressions.

Our report shows columns for Name and Uptime, which are the values we specified in the Column Names field. For each attribute specified in the Columns field, we can define a corresponding friendly Column Name. List the column names in the same sequence as the columns.

Now that we’ve seen how easy it is to get started with a simple report, we’ll preface our more involved examples by reviewing the available report fields.

Custom Device Report fields

The following table shows the available fields on the custom device reports:





Descriptive name for the report. The name doesn’t display on the report.



The title displays on the report.

Uptime Report


Specify the device class to query. The default is /, which will include all devices.



Use the query field to filter and select data. Accepts a python or TALES expression.


Leave blank to select all devices.

here.hw.cpus.countObjects() > 0


here.sysUpTime() > -1

here.comments != “”

Sort Column

Specify the column that the report is sorted on. Can either be the Column or Column Name value.




Sort Sense


Apply the specific sort order to the value in Sort Column. Can either be ascending or descending.







Specify the data to display for each device returned in the query. This can take a device attribute or a python expression. Python expressions must be prefaced with python:. Enter one value per line.





Column Names


Define the human-friendly names that correspond to each value you entered in Columns.


Enter one value per line.



Total Memory

There is minimal error checking done on the data you enter. If you enter a query with an invalid syntax, the View Report option will tell you about the error.

If you enter more column names than you specify columns, the interface will turn all the column names red when you save the report.

Let’s refine our uptime report a bit more, so we can figure out exactly how we can build meaningful queries.


Please enter your comment!
Please enter your name here