SmartCollect SC² Dokumentation / Administration / Bereitstellung der SmartCollect SC²

Bereitstellung der SmartCollect SC²

In früheren Versionen von SmartCollect SC² konnten Sie die API nur für die Bereitstellung von Datenquellen und Dashboards verwenden. Aber dafür musste der Dienst laufen, bevor Sie mit der Erstellung von Dashboards beginnen konnten, und Sie mussten auch Anmeldeinformationen für die HTTP-API einrichten. In v5.0 haben wir beschlossen, diese Erfahrung zu verbessern, indem wir ein neues aktives Provisioning-System hinzugefügt haben, das Konfigurationsdateien verwendet. Dies wird GitOps natürlicher machen, da Datenquellen und Dashboards über Dateien definiert werden können, die versionskontrolliert werden können. Wir hoffen, dieses System zu erweitern, um später auch Unterstützung für Benutzer, Orgs und Alerts hinzuzufügen.

Config File

Auf der Seite configuration finden Sie weitere Informationen darüber, was Sie in smartcollect.ini konfigurieren können

Config File Locations

  • Standardkonfiguration aus $WORKING_DIR/conf/defaults.ini
  • Benutzerdefinierte Konfiguration aus $WORKING_DIR/conf/custom.ini
  • Der Pfad der benutzerdefinierten Konfigurationsdatei kann mit dem Parameter --config außer Kraft gesetzt werden

Hinweis: Wenn Sie SmartCollect SC² mit den Paketen deb oder rpm installiert haben Pakete installiert haben, dann befindet sich Ihre Konfigurationsdatei unter “/etc/smartcollect/smartcollect.ini”. Dieser Pfad wird im SmartCollect SC² init.d-Skript mit dem --config-Dateiparameter angegeben.

Umgebungsvariablen verwenden

Es ist möglich, die Interpolation von Umgebungsvariablen in allen 3 Konfigurationsarten für die Bereitstellung zu verwenden. Erlaubte Syntax ist entweder $ENV_VAR_NAME oder ${ENV_VAR_NAME} und kann nur für Werte verwendet werden, nicht für Schlüssel oder größere Teile der Konfigs. Sie ist nicht in den Definitionsdateien des Dashboards verfügbar, nur in der Dashboard-Provisioning Konfiguration. Beispiel:

datasources:
  - name: MySQL
    url: http://localhost:$PORT
    user: $USER
    secureJsonData:
      password: $PASSWORD

Wenn Sie ein Literal $ in Ihrem Wert haben und eine Interpolation vermeiden wollen, kann $$ verwendet werden.


Data sources

Diese Funktion ist ab v5.0 verfügbar

Es ist möglich, Datenquellen in SmartCollect SC² zu verwalten, indem eine oder mehrere YAML-Konfigurationsdateien im Verzeichnis provisioning/datasources hinzugefügt werden. Jede Konfigurationsdatei kann eine Liste von Datenquellen enthalten, die während des Starts hinzugefügt oder aktualisiert werden sollen. Wenn die Datenquelle bereits existiert, aktualisiert SmartCollect SC² sie, damit sie mit der Konfigurationsdatei übereinstimmt. Die Konfigurationsdatei kann auch eine Liste von Datenquellen enthalten, die gelöscht werden sollen. Diese Liste wird deleteDatasources genannt. SmartCollect SC² löscht die in deleteDatasources aufgelisteten Datenquellen vor dem Einfügen/Aktualisieren derjenigen in der Liste datasource.

Ausführen mehrerer SmartCollect SC²-Instanzen

Wenn Sie mehrere Instanzen von SmartCollect SC² betreiben, können Sie auf Probleme stoßen, wenn diese unterschiedliche Versionen der Konfigurationsdatei datasource.yaml haben. Der beste Weg, dieses Problem zu lösen, ist, eine Versionsnummer zu jeder Datenquelle in der Konfiguration hinzuzufügen und diese zu erhöhen, wenn Sie die Konfiguration aktualisieren. SmartCollect SC² wird nur Datenquellen aktualisieren, die die gleiche oder eine niedrigere Versionsnummer haben, als in der Konfiguration angegeben. Auf diese Weise können alte Configs keine neueren Configs überschreiben, wenn sie zur gleichen Zeit neu gestartet werden.

Beispiel Datenquelle Config File

# config file version
apiVersion: 1

# list of datasources that should be deleted from the database
deleteDatasources:
  - name: MySQL
    orgId: 1

# list of datasources to insert/update depending
# what's available in the database
datasources:
  # <string, required> name of the datasource. Required
  - name: MySQL
    # <string, required> datasource type. Required
    type: mysql
    # <string, required> access mode. proxy or direct (Server or Browser in the UI). Required
    access: proxy
    # <int> org id. will default to orgId 1 if not specified
    orgId: 1
    # <string> custom UID which can be used to reference this datasource in other parts of the configuration, if not specified will be generated automatically
    uid: my_unique_uid
    # <string> url
    url: http://localhost:3306
    # <string> Deprecated, use secureJsonData.password
    password:
    # <string> database user, if used
    user:
    # <string> database name, if used
    database:
    # <bool> enable/disable basic auth
    basicAuth:
    # <string> basic auth username
    basicAuthUser:
    # <string> Deprecated, use secureJsonData.basicAuthPassword
    basicAuthPassword:
    # <bool> enable/disable with credentials headers
    withCredentials:
    # <bool> mark as default datasource. Max one per org
    isDefault:
    # <map> fields that will be converted to json and stored in jsonData
    jsonData:
      tlsAuth: true
      tlsAuthWithCACert: true
    # <string> json object of data that will be encrypted.
    secureJsonData:
      tlsCACert: '...'
      tlsClientCert: '...'
      tlsClientKey: '...'
      # <string> database password, if used
      password:
      # <string> basic auth password
      basicAuthPassword:
    version: 1
    # <bool> allow users to edit datasources from the UI.
    editable: false

Benutzerdefinierte Einstellungen pro Datenquelle

Spezifische Beispiele für die Bereitstellung finden Sie in der Dokumentation der jeweiligen Datenquelle.

JSON Data

Da nicht alle Datenquellen die gleichen Konfigurationseinstellungen haben, haben wir nur die gängigsten als Felder. Der Rest sollte als json-Blob im Feld “jsonData” gespeichert werden. Hier sind die gängigsten Einstellungen, die die Kerndatenquellen verwenden.

Name Type Datasource Description
tlsAuth boolean All Enable TLS authentication using client cert configured in secure json data
tlsAuthWithCACert boolean All Enable TLS authentication using CA cert
tlsSkipVerify boolean All Controls whether a client verifies the server’s certificate chain and host name.
timeInterval string All Lowest interval/step value that should be used for this data source
sslmode string PostgreSQL SSLmode. ‘disable’, ‘require’, ‘verify-ca’ or ‘verify-full’
sslRootCertFile string PostgreSQL SSL server root certificate file, must be readable by the SmartCollect SC² user
sslCertFile string PostgreSQL SSL client certificate file, must be readable by the SmartCollect SC² user
sslKeyFile string PostgreSQL SSL client key file, must be readable by only the SmartCollect SC² user
encrypt string MSSQL Connection SSL encryption handling. ‘disable’, ‘false’ or ‘true’
postgresVersion number PostgreSQL Postgres version as a number (903/904/905/906/1000) meaning v9.3, v9.4, …, v10
timescaledb boolean PostgreSQL Enable usage of TimescaleDB extension
maxOpenConns number MySQL, PostgreSQL and MSSQL Maximum number of open connections to the database (SmartCollect SC² v5.4+)
maxIdleConns number MySQL, PostgreSQL and MSSQL Maximum number of connections in the idle connection pool (SmartCollect SC² v5.4+)
connMaxLifetime number MySQL, PostgreSQL and MSSQL Maximum amount of time in seconds a connection may be reused (SmartCollect SC² v5.4+)

Secure Json Data

{"authType":"keys","defaultRegion":"us-west-2","timeField":"@timestamp"}

Sichere json-Daten sind eine Karte mit Einstellungen, die mit geheimem Schlüssel aus der SmartCollect SC²-Konfiguration verschlüsselt werden. Dies dient nur dazu, Inhalte vor den Benutzern der Anwendung zu verbergen. Dies sollte für die Speicherung von TLS Cert und Passwort verwendet werden, die SmartCollect SC² an die Anfrage auf der Serverseite anhängen wird. Alle diese Einstellungen sind optional.

Name Type Datasource Description
tlsCACert string All CA cert for out going requests
tlsClientCert string All TLS Client cert for outgoing requests
tlsClientKey string All TLS Client key for outgoing requests
password string All password
basicAuthPassword string All password for basic authentication

Benutzerdefinierte HTTP-Header für Datenquellen

Datenquellen, die von der SmartCollect SC²-Bereitstellung verwaltet werden, können so konfiguriert werden, dass sie HTTP-Header zu allen Anfragen hinzufügen die zu dieser Datenquelle gehen. Der Header-Name wird im Feld “jsonData” konfiguriert und der Header-Wert sollte in secureJsonData konfiguriert werden.

apiVersion: 1

datasources:
  - name: MySQL
    jsonData:
      httpHeaderName1: 'HeaderName'
      httpHeaderName2: 'Authorization'
    secureJsonData:
      httpHeaderValue1: 'HeaderValue'
      httpHeaderValue2: 'Bearer XXXXXXXXX'

Dashboards

Sie können Dashboards in SmartCollect SC² verwalten, indem Sie eine oder mehrere YAML-Konfigurationsdateien im Verzeichnis provisioning/dashboards hinzufügen. Jede Konfigurationsdatei kann eine Liste von Dashboard-Providern enthalten, die Dashboards in SmartCollect SC² aus dem lokalen Dateisystem laden.

Die Dashboard-Anbieter-Konfigurationsdatei sieht in etwa so aus:

apiVersion: 1

providers:
  # <string> an unique provider name. Required
  - name: 'a unique provider name'
    # <int> Org id. Default to 1
    orgId: 1
    # <string> name of the dashboard folder.
    folder: ''
    # <string> folder UID. will be automatically generated if not specified
    folderUid: ''
    # <string> provider type. Default to 'file'
    type: file
    # <bool> disable dashboard deletion
    disableDeletion: false
    # <int> how often SmartCollect SC² will scan for changed dashboards
    updateIntervalSeconds: 10
    # <bool> allow updating provisioned dashboards from the UI
    allowUiUpdates: false
    options:
      # <string, required> path to dashboard files on disk. Required when using the 'file' type
      path: /var/lib/smartcollect/dashboards
      # <bool> use folder names from filesystem to create folders in SmartCollect SC²
      foldersFromFilesStructure: true

Wenn SmartCollect SC² startet, wird es alle im konfigurierten Pfad verfügbaren Dashboards aktualisieren/einfügen. Später wird dieser Pfad dann alle updateIntervalSeconds abgefragt und nach aktualisierten json-Dateien gesucht und diese in die Datenbank aktualisiert/eingefügt.

Hinweis: Dashboards werden im Ordner “General” bereitgestellt, wenn die Option “Folder” fehlt oder leer ist.

Änderungen an einem bereitgestellten Dashboard vornehmen

Es ist möglich, Änderungen an einem bereitgestellten Dashboard in der SmartCollect SC²-Benutzeroberfläche vorzunehmen. Es ist jedoch nicht möglich, die Änderungen automatisch zurück in die Bereitstellungsquelle zu speichern. Wenn “allowUiUpdates” auf “true” eingestellt ist und Sie Änderungen an einer bereitgestellten Eigenschaftenleiste vornehmen, können Sie die Eigenschaftenleiste “speichern”, dann werden die Änderungen in der SmartCollect SC²-Datenbank beibehalten.

Hinweis: Wenn eine bereitgestellte Eigenschaftenleiste von der Benutzeroberfläche gespeichert und dann später von der Quelle aktualisiert wird, wird die in der Datenbank gespeicherte Eigenschaftenleiste immer überschrieben. Die Eigenschaft “Version” in der JSON-Datei hat keinen Einfluss darauf, auch wenn sie niedriger ist als das vorhandene Dashboard.

Wenn eine bereitgestellte Eigenschaftenleiste von der Benutzeroberfläche gespeichert wird und die Quelle entfernt wird, wird die in der Datenbank gespeicherte Eigenschaftenleiste gelöscht, es sei denn, die Konfigurationsoption disableDeletion ist auf true gesetzt.

Wenn allowUiUpdates auf false konfiguriert ist, können Sie keine Änderungen an einem bereitgestellten Dashboard vornehmen. Wenn Sie auf “Speichern” klicken, zeigt SmartCollect SC² ein Dialogfeld “Bereitgestellte Eigenschaftenleiste kann nicht gespeichert werden” an. Der untenstehende Screenshot veranschaulicht dieses Verhalten.

SmartCollect SC² bietet Optionen zum Exportieren der JSON-Definition eines Dashboards. Entweder “JSON in die Zwischenablage kopieren” oder “JSON in eine Datei speichern” kann Ihnen helfen, Ihre Dashboard-Änderungen zurück zur Bereitstellungsquelle zu synchronisieren.

Hinweis: Bei der JSON-Definition im Eingabefeld, wenn Sie Copy JSON to Clipboard oder Save JSON to file verwenden, wird das Feld id automatisch entfernt, um den Bereitstellungsworkflow zu unterstützen.

Wiederverwendbare Dashboard-URLs

Wenn das Dashboard in der json-Datei eine uid enthält, erzwingt SmartCollect SC² das Einfügen/Aktualisieren auf diese uid. Dies ermöglicht Ihnen die Migration von Dashboards zwischen SmartCollect SC²-Instanzen und die Bereitstellung von SmartCollect SC² aus der Konfiguration heraus, ohne die angegebenen URLs zu brechen, da die neue Dashboard-URL die uid als Bezeichner verwendet. Wenn SmartCollect SC² startet, wird es alle Dashboards, die in den konfigurierten Ordnern verfügbar sind, aktualisieren/einfügen. Wenn Sie die Datei ändern, wird das Dashboard ebenfalls aktualisiert. Standardmäßig wird SmartCollect SC² Dashboards in der Datenbank löschen, wenn die Datei entfernt wird. Sie können dieses Verhalten mit der Einstellung disableDeletion deaktivieren.

Hinweis: Bei der Bereitstellung können Sie vorhandene Dashboards überschreiben was zu Problemen führt, wenn Sie Einstellungen wiederverwenden, die eigentlich eindeutig sein sollten. Achten Sie darauf, dass Sie denselben “Titel” innerhalb eines Ordners nicht mehrfach verwenden. oder “uid” innerhalb derselben Installation wiederverwenden, da dies zu seltsamen Verhaltensweisen führt.

Bereitstellung der Ordnerstruktur vom Dateisystem zu SmartCollect SC²

I Wenn Sie Ihre Dashboards bereits unter Verwendung von Ordnern in einem Git Repo oder auf einem Dateisystem speichern und auch die gleichen Ordnernamen im SmartCollect SC²-Menü haben möchten, können Sie die Option “FoldersFromFilesStructure” verwenden.

Zum Beispiel, um diese Dashboard-Struktur vom Dateisystem zu SmartCollect SC² zu replizieren,

/etc/dashboards
├── /server
│   ├── /common_dashboard.json
│   └── /network_dashboard.json
└── /application
    ├── /requests_dashboard.json
    └── /resources_dashboard.json

müssen Sie nur diese kurze Bereitstellungskonfigurationsdatei angeben.

apiVersion: 1

providers:
- name: dashboards
  type: file
  updateIntervalSeconds: 30
  options:
    path: /etc/dashboards
    foldersFromFilesStructure: true

Server" und “Anwendung” werden zu neuen Ordnern im SmartCollect SC² Menü.

Hinweis: Die Optionen “Ordner” und “FolderUid” sollten leer sein oder fehlen, damit “FoldersFromFilesStructure” funktioniert.

Hinweis: Um Dashboards für den Ordner “General” bereitzustellen, speichern Sie sie im Stammverzeichnis Ihres “Pfads”.

Kanäle für die Alarmbenachrichtigung

Alert-Benachrichtigungskanäle können durch Hinzufügen einer oder mehrerer YAML-Konfigurationsdateien im Verzeichnis provisioning/notifiers provisioniert werden.

Jede Konfigurationsdatei kann die folgenden Top-Level-Felder enthalten:

  • notifiers, eine Liste von Alarmbenachrichtigungen, die während des Starts hinzugefügt oder aktualisiert werden sollen. Wenn der Benachrichtigungskanal bereits existiert, wird SmartCollect SC² ihn aktualisieren, damit er mit der Konfigurationsdatei übereinstimmt.
  • delete_notifiers, eine Liste von Alarm-Benachrichtigungen, die vor dem Einfügen/Aktualisieren derjenigen in der notifiers-Liste gelöscht werden sollen.

Provisioning sucht Alarmbenachrichtigungen nach uid und aktualisiert jede vorhandene Benachrichtigung mit der angegebenen uid.

Standardmäßig wird beim Exportieren eines Dashboards als JSON ein fortlaufender Bezeichner verwendet, um auf Alarmbenachrichtigungen zu verweisen. Das Feld uid kann optional angegeben werden, um einen String-Bezeichner für den Alarmnamen anzugeben.

{
  ...
      "alert": {
        ...,
        "conditions": [...],
        "frequency": "24h",
        "noDataState": "ok",
        "notifications": [
           {"uid": "notifier1"},
           {"uid": "notifier2"},
        ]
      }
  ...
}

Beispiel für die Konfigurationsdatei der Alarmbenachrichtigungskanäle

notifiers:
  - name: notification-channel-1
    type: slack
    uid: notifier1
    # either
    org_id: 2
    # or
    org_name: Main Org.
    is_default: true
    send_reminder: true
    frequency: 1h
    disable_resolve_message: false
    # See `Supported Settings` section for settings supported for each
    # alert notification type.
    settings:
      recipient: 'XXX'
      uploadImage: true
      token: 'xoxb' # legacy setting since SmartCollect SC² v7.2 (stored non-encrypted)
      url: https://slack.com # legacy setting since SmartCollect SC² v7.2 (stored non-encrypted)
    # Secure settings that will be encrypted in the database (supported since SmartCollect SC² v7.2). See `Supported Settings` section for secure settings supported for each notifier.
    secure_settings:
      token: 'xoxb'
      url: https://slack.com

delete_notifiers:
  - name: notification-channel-1
    uid: notifier1
    # either
    org_id: 2
    # or
    org_name: Main Org.
  - name: notification-channel-2
    # default org_id: 1

Unterstützte Einstellungen

In den folgenden Abschnitten werden die unterstützten Einstellungen und sicheren Einstellungen für jeden Alarmbenachrichtigungstyp beschrieben. Sichere Einstellungen werden verschlüsselt in der Datenbank gespeichert und Sie fügen sie zu secure_settings in der YAML-Datei anstelle von settings hinzu.

Hinweis: Sichere Einstellungen werden seit SmartCollect SC² v7.2 unterstützt.

Alert notification pushover

Name Secure setting
apiToken yes
userKey yes
device
retry
expire

Alert notification slack

Name Secure setting
url yes
recipient
username
icon_emoji
icon_url
uploadImage
mentionUsers
mentionGroups
mentionChannel
token yes

Alert notification victorops

Name
url
autoResolve

Alert notification kafka

Name
kafkaRestProxy
kafkaTopic

Alert notification LINE

Name Secure setting
token yes

Alert notification pagerduty

Name Secure setting
integrationKey yes
autoResolve

Alert notification sensu

Name Secure setting
url
source
handler
username
password yes

Alert notification teams

Name
url

Alert notification email

Name
singleEmail
addresses

Alert notification hipchat

Name
url
apikey
roomid

Alert notification opsgenie

Name Secure setting
apiKey yes
apiUrl
autoClose
overridePriority

Alert notification telegram

Name Secure setting
bottoken yes
chatid
uploadImage

Alert notification threema

Name Secure setting
gateway_id
recipient_id
api_secret yes

Alert notification webhook

Name Secure setting
url
username
password yes

Alert notification googlechat

Name
url