Web application configuration

Configuration parameters of SAYMON web application are stored in the configuration file /etc/saymon/saymon-client.yaml.

Web application configuration files can be stored in the following locations (in descending order of priority):

  • MongoDB – parameters that can be edited via Rest API;

  • /etc/saymon/saymon-client.yaml – web application configuration parameters in YAML format;

  • /etc/saymon/saymon-client.json – web application configuration parameters in JSON format;

  • /etc/saymon/client-config.js – web application configuration parameters in the old JS format (used with old versions of the web application);

  • ./backend/server/saymon-client.yaml – default web application configuration parameters.

A lower priority configuration file is used if there is no higher priority configuration file.

agentInstallerUrl

A URL of the agent installation script.

  • YAML

  • JSON

agentInstallerUrl: example.com/saymon-agent-installation.sh
{
  "agentInstallerUrl": "example.com/saymon-agent-installation.sh",
  ...
}

The specified link is added to the generated agent installation command during the autoinstallation process.

agent installation command

By default, this link is not set.

authEnabled

Enables manual registration for users;

  • YAML

  • JSON

authEnabled: false
{
  "authEnabled": false,
  ...
}
  • false – registration is disabled,

  • true – registration is enabled.

Default – false – registration is disabled.

authTokenEnabled

Configures whether to display the Authorization link field and the button that generates an API token in the user configuration window.

  • YAML

  • JSON

authTokenEnabled: false
{
  "authTokenEnabled": false,
  ...
}
  • false – field disabled,

  • true – field enabled.

Default – true – field enabled.

authentication

In this section, you can configure user authentication parameters.

  • YAML

  • JSON

authentication:
  availableMethods:
    - native
    - keycloak
  methodByDefault: keycloak
  services:
    keycloak:
      configUri: keycloak_frontend.json
      legacySupport: false
{
  "authentication": {
    "availableMethods": [
      "native",
      "keycloak"
    ],
    "methodByDefault": "keycloak",
    "services": {
      "keycloak": {
        "configUri": "keycloak_frontend.json",
        "legacySupport": false
      }
    }
  }
}

authentication.availableMethods

List of available user authentication methods:

  • "native" – username and password authentication

  • "keycloak" – authentication via Keycloak

By default – "native".

authentication.methodByDefault

Authentication method that is used by default.

By default "native" is used.

authentication.services

Section with configuration parameters of authentication services.

authentication.services.keycloak

Section with parameters for authentication via Keycloak.

authentication.services.keycloak.configUri

Name of the configuration file generated by the Keycloak server for the web application.

The file must be placed on the SAYMON server in the /etc/saymon directory.

authentication.services.keycloak.legacySupport

Enables support for Keycloak server version 19 and older;

  • false – support for Keycloak server version 19 and older is disabled;

  • true – support for Keycloak server version 19 and older is enabled.

By default false – disabled.

canEditObjectStyle

It allows to configure CSS styles for objects and links.

  • YAML

  • JSON

canEditObjectStyle: true
{
  "canEditObjectStyle": true,
  ...
}

With this option enabled, the Style tab appears in the Parameters menu (of objects, links);

When you disable this option, applied styles remain on objects and links.
  • false – style configuration is disabled,

  • true – style configuration is enabled.

Default – true – style configuration is enabled.

comet

Section with parameters that define interaction between the web application and Saymon via the Comet server.

  • YAML

  • JSON

comet:
  port: 8091
  url:
    - "https://example.com/ws"
    - "http://10.78.5.11:8092"
{
  "comet": {
    "port": 8091,
    "url": [
      "https://example.com/ws",
      "http://10.78.5.11:8092"
    ]
  }
}

comet.port

Port number that the web application uses to connect to the Comet server.

Port 8091 is used by default.

comet.url

Address for connecting the web application to the Comet server from different networks. You can set the address of the server by its IP address, domain name or host name. Additionally, you can specify the port.

If multiple connections are specified in the configuration, client tries to connect to each specified address until it established a connection. Address is selected randomly.

If the comet.url parameter is specified, then the comet.port parameter is ignored.

configuration

Section with system configuration window parameters.

  • YAML

  • JSON

configuration:
  objectPermissions:
    displayType: tree
{
  "configuration": {
    "objectPermissions": {
      "displayType": "tree"
    }
  }
}

configuration.objectPermissions

Object access settings.

configuration.objectPermissions.displayType

Object access menu display settings.

Default value – tree.

collapseSections

It specifies the way sections and graphs are displayed;

  • YAML

  • JSON

collapseSections: true
{
  "collapseSections": true,
  ...
}
  • false – sections are pinned, graphs are shown,,

  • true – sections are unpinned, graphs are hidden.

Default – true – sections are unpinned, graphs are hidden.

defaultClassImage

This option allows you to set a standard icon and its size for objects of a particular class.

  • YAML

  • JSON

defaultClassImage:
  "29":
    img: /images/cloud.svg
    dim:
      - 300
      - 200
{
  "defaultClassImage": {
    "29": {
      "img": "/images/cloud.svg",
      "dim": [
        156,
        104
      ]
    }
  }
}

defaultClassImage.<number>

Class ID, 29, for example.

defaultClassImage.<number>.img

Path to the image relative to the directory where the configuration file is located.

Only SVG file can be set as a default class image. Images in other formats (for example, PNG, JPEG, or GIF) will be displayed in the class setting image, but won’t be displayed in the object parameters window and standard view.

defaultClassImage.<number>.dim

Size of the image (in pixels, [width, height]).

Default – [300, 200]

Configuration of a default link in an embedded widget. You can change this link in the generated code of the widget later.

This section allows to configure text and URL of the link in an embedded widget:

embedded graph
  • YAML

  • JSON

defaultEmbeddableLink:
  url: http://saymon.info/
  name: SAYMON
{
  "defaultEmbeddableLink": {
    "url": "http://saymon.info/",
    "name": "SAYMON"
  },
}

URL of the embedded widget link.

Text of the embedded widget link.

defaultPieChartColors

Default colors for pie chart (Circle) and radial chart. If there are more sectors than default colors, colors would loop.

  • YAML

  • JSON

defaultPieChartColors:
  - "#a90329"
  - "#3276b1"
  - "#009F3D"
  - "#9868B8"
  - "#F2C001"
  - "#FF742C"
  - "#90574E"
  - "#EB77BE"
  - "#FF9796"
  - "#AAC6E5"
  - "#8BDE90"
  - "#FDB5D0"
{
  "defaultPieChartColors": [
    "#a90329",
    "#3276b1",
    "#009F3D",
    "#9868B8",
    "#F2C001",
    "#FF742C",
    "#90574E",
    "#EB77BE",
    "#FF9796",
    "#AAC6E5",
    "#8BDE90",
    "#FDB5D0"
  ]
}

disabledSections

It allows to remove sections shown in the End view in the upper part of the screen.

  • YAML

  • JSON

disabledSections:
  - audit-log
  - config-log
  ...
{
  "disabledSections": [
    "audit-log",
    "config-log",
    ...
  ]
}

The list of all available sections:

By default – empty array, all sections are enabled.

documentation

This section allows you to set links to SAYMON documentation.

  • YAML

  • JSON

documentation:
  main:
    root: https://docs.saymon.tech
  notificationTemplates:
    root: https://docs.saymon.tech/web-interface/system-configuration-window/notification-templates.html
  restApi:
    root: https://api.saymon.tech
"documentation": {
  "main": {
      "root": "https://docs.saymon.tech"
  },
  "notificationTemplates": {
      "root": "https://docs.saymon.tech/web-interface/system-configuration-window/notification-templates.html"
  },
  "restApi": {
      "root": "https://api.saymon.tech"
  }
}

Links that don’t start with http:// or https:// are relative to the SAYMON server address.

For example, the following configuration links to the documentation stored at the http://<saymon-hostname>/documentation/en address.

documentation:
  main:
    root: documentation/en

You can set a documentation for each of the supported languages:

  • root/en – English;

  • it – Italian.

For example, you can configure links to REST API for each language the following way:

documentation:
  restApi:
    en: https://docs.saymon.tech
    it: documentation/Italiano # https://<saymon-hostname>/documentation/Italiano

documentation.main

Links to the user documentation.

By default – https://docs.saymon.tech;

documentation.restApi

Links to the REST API documentation.

By default – https://api.saymon.tech

documentation.notificationTemplates

Link to the description of the notification templates. Documentation opens when you click the "More info" button in the notification templates settings:

notification templates docs

By default – link to the Notification templates article.

enableAnalytics

Enables the analytics module functionality;

  • YAML

  • JSON

enableAnalytics: false
{
  "enableAnalytics": false,
  ...
}
  • false – analytics disabled,

  • true – analytics enabled.

Default – false – analytics disabled.

enableJiraTrigger

Enables creation of a Jira task on object’s state change.

  • YAML

  • JSON

enableJiraTrigger: false
{
  "enableJiraTrigger": false,
  ...
}
  • false – functionality is disabled,

  • true – functionality is enabled.

Default – false – functionality is disabled.

enableConditionalIncidents

Enables the incident generation functionality;

  • YAML

  • JSON

enableConditionalIncidents: false
{
  "enableConditionalIncidents": false,
  ...
}
  • false – functionality is disabled,

  • true – functionality is enabled.

Default – false – functionality is disabled.

enableSmsTrigger

  • YAML

  • JSON

enableSmsTrigger: false
{
  "enableSmsTrigger": false,
  ...
}
  • false – SMS-notifications are disabled,

  • true – SMS-notifications are enabled.

Default – false – SMS-notifications are disabled.

enableSnmpTranslate

It enables translation of numeric SNMP OIDs to the text format;

  • YAML

  • JSON

enableSnmpTranslate: false
{
  "enableSnmpTranslate": false,
  ...
}
  • false – translation is disabled,

  • true – translation is enabled.

Default – false – translation is disabled.

enableVoiceCallTrigger

  • YAML

  • JSON

enableVoiceCallTrigger: false
{
  "enableVoiceCallTrigger": false,
  ...
}
  • false – voice notifications are disabled,

  • true – voice notifications are enabled.

Default – false – voice notifications are disabled.

forceEmptyStandardView

List of classes for which the UI will show standard view by default, even if the object of the specified class has no children.

  • YAML

  • JSON

forceEmptyStandardView:
  - 1
  - 3
  - 13
  - 43
{
  "forceEmptyStandardView": [
    1,
    3,
    13,
    43
  ]
}

By default, when an object is selected, SAYMON shows its End view, even if the object does not contain other objects.

The list of Class IDs, for which SAYMON will display the Standard view if the selected object is empty, can be set in this parameter.

By default:

  • 1 (Root),

  • 3 (Host),

  • 13 (Node),

  • 43 (Dashboard).

System stores the last selected for each object in the browser’s local storage. The last selected view is preferred to the default one.

geoMap

SAYMON allows to link objects to their geographical location and browse them on a map.

geoMap:
  serverName: openstreetmap.org
  initialPosition:
    - 30.341306
    - 59.930089
  initialZoom: 8

geoMap.initialPosition

Initial position on the map. Format value is [longitude, latitude].

Position is set as an array of two values, where the first value is longitude and the second is latitude:

  • YAML

  • JSON

initialPosition:
  - 30.341306
  - 59.930089
"initialPosition": [
    30.341306,
    59.930089
],

By default – [30.341306,59.930089].

If you set values that go out of range of valid values ([0,90] for latitude, [0,180] for longitude), the map would not load.

geoMap.initialZoom

Initial zoom of the map. Possible values are from 2 to 20. If you specify the value outside of this range, the zoom value is clamped.

Default – 8.

geoMap.serverName

Name of the server used for displaying the map. Name should be specified without the protocol, for example, openstreetmap.org or 192.168.1.10/maps.

Default – openstreetmap.org.

You can also use a local OSM server.

grid

This section allows to set a grid for objects alignment in the Standard view.

grid:
  dim: 20
  color: rgba(128, 128, 128, 0.3)
  border: 4

grid.dim

Grid size (in pixels).

Default – 20.

grid.color

Grid color in the RGBA format.

Default – "rgba(128, 128, 128, 0.3)."

grid.border

Maximum indent between objects and grid border (in pixels).

Behavior of resizing an object with default settings (border: 20, dim: 4):

grid resize border

Default – 4.

gridView

This section contains parameters of displaying objects in the Grid view.

  • YAML

  • JSON

gridView:
  cols: 6
  colWidth: 240
  rowHeight: 90
  gutterSize: 5
{
  "gridView": {
    "cols": 6,
    "colWidth": 240,
    "rowHeight": 90,
    "gutterSize": 5
  }
}

gridView.cols

Amount of objects placed in one row of the grid.

With gridView.cols > 0 width of objects changes automatically.

With gridView.cols = 0 the number of objects in a row adjusts to the screen width.

Default – 6.

gridView.colWidth

Object width with gridView.cols = 0 (in pixels).

Default – 240.

gridView.rowHeight

Height of objects (in pixels).

Default – 90.

gridView.gutterSize

Indent between objects (in pixels).

Default – 5.

history

This section contains parameters for displaying data on graphs, as well as some additional interface elements, used for plotting.

  • YAML

  • JSON

history:
  downsampling:
    - period: 1-hours
      dsp: 60s-avg
    - period: 1-days
      dsp: 5m-avg
    - period: 1-weeks
      dsp: 1h-avg
    - dsp: 1d-avg
  modelChangeAnnotations: false
{
  "history": {
    "downsampling": [
      {
          "period": "1-hours",
          "dsp": "60s-avg"
      },
      {
          "period": "1-days",
          "dsp": "5m-avg"
      },
      {
          "period": "1-weeks",
          "dsp": "1h-avg"
      },
      {
          "dsp": "1d-avg"
      }
    ],
    "modelChangeAnnotations": false
  }
}

history.downsampling

Downsampling parameters.

If you add a downsampling section in the configuration file, default values are not used. If the server cannot find an appropriate setting for the specified time period, the chart will display a "No data for the selected range" message.

history.downsampling.period

Data selection period.

Period configuration has the following format:

<amount>-<hours|days|weeks|months>

history.downsampling.dsp

Data downsampling configuration.

Downsampling configuration has the following format:

<amount><period-prefix>-<avg|min|max>

Available period prefixes:

  • s – seconds;

  • m – minutes;

  • h – hours;

  • d – days.

The example below shows how to configure data downsampling.

  • "dsp: 5m-avg"

  • "dsp: 15s-avg"

With the following configuration, the system would show the 5 minute averages on the chart, when you set the time range to 6 hours.

history:
  downsampling:
    - period: 6-hours
      dsp: 5m-avg
downsampling 5m avg

With the following configuration, the system would show the 15 second averages on the chart, when you set the time range to 6 hours.

history:
  downsampling:
    - period: 6-hours
      dsp: 15s-avg
downsampling 15s avg
If you don’t the the period parameter, such dsp parameter becomes a default parameter for every period, that’s not specified in the configuration file.

history.modelChangeAnnotations

Whether to allow annotation changing on graphs

  • false – annotation changing is disabled,

  • true – annotation changing is enabled.

Default – false – annotation changing is disabled.

hideConnectionStatusNotifications

Hides Comet server connection status notifications;

  • YAML

  • JSON

hideConnectionStatusNotifications: false
{
  "hideConnectionStatusNotifications": false,
  ...
}
  • false – notifications are displayed in the web interface,

  • true – notifications are displayed in the console.

Default – false – notifications about connection status with the Comet server are displayed in the web interface.

hideResponseErrorNotifications

Hides notifications about errors that happen when automatic requests are sent to the server.

  • YAML

  • JSON

hideResponseErrorNotifications: false
{
  "hideResponseErrorNotifications": false,
  ...
}
  • false – notifications are displayed in the web interface,

  • true – notifications are hidden.

Default – false – notifications are displayed in the web interface.

Errors that are caused by the user, for example, issues after saving data in any of the forms, will be displayed in the web interface regardless of the configuration.

incidents

In this section you can set additional fields for the active alarms and historical alarms lists.

  • YAML

  • JSON

incidents:
  additionalFields:
    - owner.properties.address
    - owner.class_id
    - updated
  additionalFieldNames:
    - IP-address
    - Object Class ID
{
  "incidents": {
    "additionalFields": [
      "owner.properties.address",
      "owner.class_id",
      "updated"
    ],
    "additionalFieldNames": [
      "IP-address",
      "Object Class ID"
    ]
  }
}

incidents.additionalFields

Data sources for the additional fields.

You can set any incident parameter as a data source. Fields inside parameter objects must be specified after a dot. For example, to add an address Property of an object that triggered the incident to the additionalFields list, set it as owner.properties.address.

You can see all parameters in the REST API documentation.

You can use properties as data sources only if they have the type_id = 1 (properties added with the Properties menu or via REST API). You can’t use built-in parameters and sensor parameters such as TaskType or PingHost, as well as links added as Documents.
If the data source doesn’t have a corresponding value in the additionalFieldNames array, the column header will show the name of the data source instead.

incidents.additionalFieldNames

Names of the additional fields, which are displayed in the web interface.

The list of names corresponds to the list of data sources. The first data source in the additionalFields array would have the first name in the additionalFieldNames array and so on.

The number of names may not match the number of data sources. If the data source doesn’t have a corresponding value in the additionalFieldNames array, the column header will show the name of the data source instead.

To skip the data source and use its data source name instead, assign null or false to the respective values.

For example, the following configuration would add the localTimestamp, 'Owner ID', IP Address, and owner.class_id to the incidents table:

  • YAML

  • JSON

incidents:
  additionalFields:
    - localTimestamp
    - owner._id
    - owner.properties.address
    - owner.class_id
  additionalFieldNames:
    - false
    - Owner ID
    - IP-address
{
  "incidents": {
    "additionalFields": [
      "owner._id",
      "owner.properties.address",
      "owner.class_id",
    ],
    "additionalFieldNames": [
      false,
      "Owner ID"
      "IP-address",
    ]
  }
}

languages

This section allows to control installed languages of web interface.

By default, only English is enabled. To enable other languages, you need to explicitly define them in the configuration file.

  • YAML

  • JSON

languages:
  en:
    short: us
    long: English
  it:
    short: it
    long: Italiano
{
  "languages": {
    "en": {
      "short": "us",
      "long": "English"
    },
    "it": {
      "short": "it",
      "long": "Italiano"
    }
  }
}

languages.<id>

Language identifier.

The following languages are available:

  • en | English,

  • it | Italian,

languages.<id>.long

Language full name.

This name displayed in SAYMON current user menu with selecting an interface language.

languages.<id>.short

Identifier of the flag icon.

This icon displayed in SAYMON current user menu with selecting an interface language.

image – es,

image – gb,

image – it,

image – us.

If you set a missing or incorrect language ID, the Spanish flag spain will be used.

monitoring

This section contains parameters to hide unused monitoring probes from the interface.

If you leave this section empty, every single probe will be displayed in the web interface.

  • YAML

  • JSON

monitoring:
  standardTasks:
    - ping
    - snmpGet
{
  "monitoring": {
    "standardTasks": [
      "ping",
      "snmpGet"
    ]
  }
}

monitoring.standardTasks

The array of identifiers of the displayed standard probes.

You can find a list of identifiers in the Standard probes identifiers section.

millisecondMonitoring

Enables data update every millisecond.

  • YAML

  • JSON

millisecondMonitoring: false
{
  "millisecondMonitoring": false,
  ...
}
  • false – update is disabled,

  • true – update is enabled.

Default – false – update is disabled.

pollInterval

Time period between data requests from the REST server, if the connection between the client and the Comet server is unavailable (in milliseconds).

  • YAML

  • JSON

pollInterval: 5000
{
  "pollInterval": 5000,
  ...
}

Default – 5000 – 5 seconds.

pollIntervalSocket

Time period between data requests from the Comet server, if the connection between the client and the Comet server is available (in milliseconds).

  • YAML

  • JSON

pollIntervalSocket: 60000
{
  "pollIntervalSocket": 60000,
  ...
}

Default – 60000 – 1 minute.

statHistory

Show the "Stat history" button.

  • YAML

  • JSON

statHistory: false
{
  "statHistory": false,
  ...
}
  • true – button is enabled,

  • false – button is disabled.

Server configuration parameter agent_stat must be enabled.

By default – false

title

Header for tabs and the name, displayed at the top left corner of web interface.

  • YAML

  • JSON

title: "SAYMON"
{
  "title": "SAYMON",
  ...
}

Default – SAYMON.

themes

This parameter is used to configure SAYMON themes.

  • YAML

  • JSON

themes:
  default:
    name: Light
  dark:
    name: Dark
{
  "themes": {
    "default": {
        "name": "Light"
    },
    "dark": {
        "name": "Dark"
    }
  }
}

CSS-files with themes are placed in the /usr/local/saymon/client/css directory.

Two themes are available by default – light (default) and dark (dark).

To add a new theme, create a new folder in the themes directory (for example, my-custom-theme). Then, add this folder to the configuration file:

  • YAML

  • JSON

themes:
  my-custom-theme:
    name: Custom Theme
{
    "themes": {
        "my-custom-theme": {
            "name": "Custom Theme"
        }
    }
}

themes.<theme-name>.name

Theme name is placed in the current user menu.

Name of the theme cannot be localized.

tree

This section contains parameters for object tree.

  • YAML

  • JSON

tree:
  filterSubmit: true
{
    "tree": {
        "filterSubmit": true
    },
}

tree.filterSubmit

Enables the apply filter button filter submit button and disables the automatic filtering;

Apply filter button is displayed next to the filter reset button when you start inputting a new filter:

filter submit button search
  • false – button is disabled,

  • true – button is enabled.

Default – false – button is disabled.

useNaturalSort

Enables sorting objects with the javascript-natural-sort library:

  • YAML

  • JSON

useNaturalSort: false
{
  "useNaturalSort": false,
  ...
}
  • false – objects are sorted with native functions of the browser,

  • true – objects are sorted with the javascript-natural-sort library.

Default – false – objects are sorted with native functions of the browser.

With set useNaturalSort = true performance of the web interface can degrade if there is huge number of objects in the system (100 000 and more).