Plugin StructureΒΆ

The most complete example of plugin structure is the following

example/
|-- manifest.lua
|-- locales
|   `-- en.lua
|-- alert_endpoints
|   |-- example.lua
|   `-- prefs_entries.lua
|-- alert_definitions
|   `-- alert_example.lua
|-- status_definitions
|   `-- status_example.lua
|-- checks
|   |-- interface
|   |   `-- example.lua
|   |-- network
|   |   `-- example.lua
|   |-- snmp_device
|   |   `-- example.lua
|   `-- system
|       `-- example.lua
|-- ts_schemas
|   |-- min.lua
|   `-- 5mins.lua
`-- web_gui
    |-- example_page.lua
    `-- menu.lua

The root directory example must have a name which is representative for the plugin. Sub-directories contain:

  • manifest.lua: file containing a name and a description of the plugin. See Manifest.
  • locales (optional): files for the localization of strings used within the plugin, such as the description of a generated alert. When this directory is omitted, strings found in the plugin will be taken verbatim. See Localization.
  • alert_endpoints (optional): files to create alert endpoints. An alert endpoint is called by ntopng every time an alert is generated. Alert endpoints enable an alert to be post-processed or delivered downstream to an external alert collector. This directory can be omitted when the plugin does not create alert endpoints. See Alert Endpoints.
  • checks: files with the logic necessary to perform custom actions. This directory contains additional sub-directories, namely, interface, network, snmp_device, and system. ntopng guarantees files found under the interface directory are be executed for every interface; files found under the network directory will be executed for every local network; and so on. Sub-directories can be missing or empty, depending on whether the plugins wants to perform certain actions or not. See Checks.
  • ts_schemas: contains timeseries schemas definitions. See Timeseries Schemas.
  • web_gui: file to create custom ntopng pages and link them in the main ntopng menu. See Custom Pages.