Overview
This document documents the mechanisms for generating (and managing) reports on demand (instead of via schedules, which are described here).
Generating Reports from the GUI
You find the report generating interface under the menu Views, On-Demand Reports or from the dashboard page.
The interface is mostly self-explanatory, and has a number of tooltips for documenting some of the non-obvious items.
When you hit the Generate button the report creation is started in the background, and you will be shown a message with a link to the report display; if your report covers lots of nodes or a long period, then it may take some time until generation is complete, but the GUI will be completely usable in the meantime. Your new report will show up as "in progress" on the report list until it's finished.
Report Naming and Storage Locations
Reports generated from the GUI are saved in /usr/local/omk/var/reports/on-demand
(but this is configurable, see <omk_reports_ondemand>
in opCommon.nmis
).
Reports generated by the scheduler are saved in the output directory that was set for the particular schedule. The GUI lets you select from any directory that is listed under opreports_output_dirs
in opCommon.nmis.
If you don't select a report name (under advanced options), then the report name will be generated from report type, date and a few other properties. If a name clash is detected, then newer reports will be named <originalname>.1
, .2
and so on. This de-clashing also applies to your custom report name!
Aging
Old on-demand reports are pruned based on the configuration setting default_report_keep_for
, subsection on-demand
(in opCommon.nmis
) by default that is set to 42 days.
Generating Reports from the Command Line
We recommend that you primarily use the report scheduling system and the GUI on-demand report creation for maximum robustness, but if utmost flexibility is required (at the expense of fewer safeguards) then there's a tool available for that, too: opReports ships with a command line tool for report generation: opreports-cli.pl
(in /usr/local/omk/bin/
).
Most of its options correspond closely to the ones described on the page on Scheduling Reports.
If you run the tool with "-h" or "–help" or "-?" you'll see the brief help text:
./bin/opreports-cli.pl -? opReports Version 3.1.0 ... usage: ./bin/opreports-cli.pl act=<report type> days=<N> from=<HH> to=<HH> start_date=<date_time> end_date=<date_time> group=<NMIS_GROUP>|All|Each noderegex=<regexp> nodes=NAME1 node=NAME2... node_intf_list=<listfile> node_list=<listfile> node_intf_type_list=<listfile> email=<user@domain.com,user2@domain.com...> output_file=<path> output_file_2=<path> format=HTML|CSV|XLSX format_2=... act: the report to create, (avgcpu|buffer|freemem|health|mempool|node|qos|response|summary|uptime|usage|util|wan) noderegex: a regular expression for matching the node name (not with group) group: group of devices to report on, either NMIS group name, "All", "Each" or nothing "All" (or nothing) means all nodes in all groups will produce a report containing all devices in all groups "Each" produces a separate report for each group. email: send report to the listed email addresses (comma separated list) days: Number of days to report start_date: The starting date and time e.g. "1-Apr-2012 14:35:00" end_date: The end date and time e.g. "5-Apr-2012 17:00:00" from: Business hours reporting, the daily start time in hours to: Business hours reporting, the daily end time in hours format: Desired Output Format, "HTML", "CSV", "XLSX"
Selecting output formats and destinations
With opreports-cli you have total control over what formats your reports are generated in, and where they are saved. Please note that reports created by opreports-cli are generally not visible in the GUI, and are not aged!
To generate a report in a format X (html, csv, xlsx), use the options format_N and output_file_N (N being a number); e.g. format_1=html output_file_1=/tmp/xyz.html
. You can use up to three format/output options (and if you want just one format, then you can leave off the "_N
").
Report formats csv and html can also be printed to stdout, using output_file_N=-
(minus sign); Note that this does not work for xlsx, and only one format can be sent to stdout.
The output_file_N option must be a path pointing to a file. Please note that opreports-cli overwrites existing files without warning!
In addition to file-based outputs you can also specify email recipients using the email=some@addre.ss,other@addr.ess
option. Please note that output_file_N
is still required. The report will be emailed to all recipients with all selected formats as attachments.
Making command-line generated reports visible to the GUI
To make manually generated reports show up in the GUI, and be aged by the scheduler, all the following conditions must be met:
- All
output_file_N
options must point to the same directory, and it must be one of the configured report directories (or the on-demand report directory).
Output to STDOUT (usingoutput_file_1=-
) is not allowed in this situation. - All the relative file names given in
output_N
must be identical (but for the extension).
this works:format_1=HTML output_file_1=/usr/local/omk/var/reports/on-demand/testme.html format_2=XLSX output_2=/usr/local/omk/var/reports/on-demand/testme.xlsx
whereas this doesn't:output_file_1=.../test_one.html output_file_2=..../test_two.csv
- You must add the option
actual_name=<the name of your report files minus extension>
.
For the example from step 2 this would beactual_name=testme
. - You must add the option
actual_uuid=<unique identifier>
.
The uuid should follow the UUID V4 standard format , but any globally unique string will do.
You can use theuuid
program to create a a proper uuid. - If you want your report to be treated as an instance of a scheduled report, then you must pass the schedule's
uuid
parameter. - If you want report aging, then you have to add a
keep_for=<days>
option.
If any of the requirements 1 to 5 are not met, then no report metadata json file is created and the GUI will not pick up the manually created report.
In version 3.0.7 and newer, the opReport scheduler logs the actual command line arguments that it uses for generating reports, which should provide a good example of how the parameters line up.
Overview of opreports-cli parameters
Parameter | Description |
---|---|
act=<report_type> | What report to generate. Required. |
days=<N> start_date=<date> end_date=<date> | The period the report should span. End date defaults to now, days defaults to 7. |
from=<HH> | Business-hour/Business-week reporting. Optional. Business week selection is supported in opReports version 3.0.8 and above. |
nodes_group=<groupname>|All|Each | Node selection by group name. All means one combined report, Each means one report per group. |
node_regexp=<regexp> | Node selection by name, either by regular expression or as a list of explicitely given node names |
node_intf_list=<listfile> | Node selection by list file. See How to select Nodes (and Interfaces) for reporting for file formats and details. |
format_1=HTML|CSV|XLSX | What formats to generate and where to store the resulting files. At least one format must be selected. |
email=<adress,address,...> | Optional recipients of the report. Only the selected output formats are emailed out. |
target_audience_group=<group> | If set, only members of this NMIS group can see the report in the GUI. Optional. |
actual_name=<report file name> | The base name shared by all output files for this report instance. Required for GUI visibility. |
actual_uuid=<uuid> | The globally unique identifier for this report instance. Required for GUI visibility. |
uuid=<uuid of a report schedule> | The unique identifier of the report schedule this report should be marked as belonging to. Optional. |
keep_for=<N> | How many days to keep this report instance. Optional. |
title=<text> | Custom report title. Optional. |
description=<text> | Custom report description. Optional. |
homelink=<html text> | Custom report header for HTML output. Optional. |
debug=N|verbose|true | If set, more verbose debug logging and output is produced. Optional. |
util_threshold | Optional parameters that are specific to particular report types. Please see the Report Types page for details. |
node_naming=<propname> | If set to an NMIS property name, the node's value for this property will be used for displaying the node's name. Optional. If the option is not set or if the given property is not present for a particular node, the node's plain name is shown. |
interface_naming=<propname> | If set to an NMIS interface property name, that interface's value for this property is used for displaying the interface name. Optional. |