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.
Auf der Seite configuration finden Sie weitere Informationen darüber, was Sie in smartcollect.ini konfigurieren können
- Standardkonfiguration aus
$WORKING_DIR/conf/defaults.ini - Benutzerdefinierte Konfiguration aus
$WORKING_DIR/conf/custom.ini - Der Pfad der benutzerdefinierten Konfigurationsdatei kann mit dem Parameter
--configaußer Kraft gesetzt werden
Hinweis: Wenn Sie SmartCollect SC² mit den Paketen
deboderrpminstalliert 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.
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.
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.
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.
# 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
Spezifische Beispiele für die Bereitstellung finden Sie in der Dokumentation der jeweiligen Datenquelle.
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+) |
{"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 |
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'
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.
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
disableDeletionist 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.
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.
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”.
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 dernotifiers-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"},
]
}
...
}
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
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.
| Name | Secure setting |
|---|---|
| apiToken | yes |
| userKey | yes |
| device | |
| retry | |
| expire |
| Name | Secure setting |
|---|---|
| url | yes |
| recipient | |
| username | |
| icon_emoji | |
| icon_url | |
| uploadImage | |
| mentionUsers | |
| mentionGroups | |
| mentionChannel | |
| token | yes |
| Name |
|---|
| url |
| autoResolve |
| Name |
|---|
| kafkaRestProxy |
| kafkaTopic |
| Name | Secure setting |
|---|---|
| token | yes |
| Name | Secure setting |
|---|---|
| integrationKey | yes |
| autoResolve |
| Name | Secure setting |
|---|---|
| url | |
| source | |
| handler | |
| username | |
| password | yes |
| Name |
|---|
| url |
| Name |
|---|
| singleEmail |
| addresses |
| Name |
|---|
| url |
| apikey |
| roomid |
| Name | Secure setting |
|---|---|
| apiKey | yes |
| apiUrl | |
| autoClose | |
| overridePriority |
| Name | Secure setting |
|---|---|
| bottoken | yes |
| chatid | |
| uploadImage |
| Name | Secure setting |
|---|---|
| gateway_id | |
| recipient_id | |
| api_secret | yes |
| Name | Secure setting |
|---|---|
| url | |
| username | |
| password | yes |
| Name |
|---|
| url |