mirror of
https://github.com/ptarmiganlabs/butler-sos.git
synced 2025-12-19 17:58:18 -05:00
@@ -28,7 +28,6 @@ img
|
|||||||
log
|
log
|
||||||
scriptlog
|
scriptlog
|
||||||
node_modules
|
node_modules
|
||||||
package-lock.json
|
|
||||||
renovate.json
|
renovate.json
|
||||||
release
|
release
|
||||||
release-macos
|
release-macos
|
||||||
@@ -42,3 +41,10 @@ src/.snyk
|
|||||||
src/config
|
src/config
|
||||||
src/docker-compose
|
src/docker-compose
|
||||||
src/log
|
src/log
|
||||||
|
|
||||||
|
coverage
|
||||||
|
build
|
||||||
|
jest.config.mjs
|
||||||
|
eslint.config.js
|
||||||
|
CHANGELOG.md
|
||||||
|
changelog_old.md
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -16,6 +16,7 @@ ssl/*
|
|||||||
*.tmp
|
*.tmp
|
||||||
snyk.sarif
|
snyk.sarif
|
||||||
build
|
build
|
||||||
|
test_data
|
||||||
|
|
||||||
# Logs
|
# Logs
|
||||||
log/
|
log/
|
||||||
@@ -59,5 +60,3 @@ build.cjs
|
|||||||
butler-sos
|
butler-sos
|
||||||
src/config/production_vac.yaml
|
src/config/production_vac.yaml
|
||||||
tmp/
|
tmp/
|
||||||
docs/docker-compose/.env
|
|
||||||
docs/docker-compose/config/production_influxdb_v3.yaml
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ LABEL description="Real-time operational metrics for Qlik Sense Enterprise on Wi
|
|||||||
WORKDIR /nodeapp
|
WORKDIR /nodeapp
|
||||||
|
|
||||||
# Install app dependencies separately (creating a separate layer for node_modules, effectively caching them between image rebuilds)
|
# Install app dependencies separately (creating a separate layer for node_modules, effectively caching them between image rebuilds)
|
||||||
COPY package.json .
|
COPY package.json package-lock.json ./
|
||||||
RUN npm i
|
RUN npm ci --omit=dev
|
||||||
|
|
||||||
# Copy app's source files
|
# Copy app's source files
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|||||||
@@ -5,10 +5,8 @@ BUTLER_SOS_CONFIG_FILE=/production_influxdb_v3.yaml # File placed in ./config di
|
|||||||
|
|
||||||
# InfluxDB Configuration
|
# InfluxDB Configuration
|
||||||
INFLUXDB_HTTP_PORT=8181 # for influxdb3 enterprise database, change this to port 8182
|
INFLUXDB_HTTP_PORT=8181 # for influxdb3 enterprise database, change this to port 8182
|
||||||
INFLUXDB_HOST=influxdb3-core # for influxdb3 enterprise database, change this to "influxdb3-enterprise"
|
INFLUXDB_TOKEN=apiv3_99RtQcbFuBYP_wO1fK5aHvIBQqOqOVRAV4cAqAJxm_gpQRUFIpQkONXWfG0cBt_1wOI21Dc2l5K2izMa3gW7mA
|
||||||
INFLUXDB_TOKEN=
|
INFLUXDB_DATABASE=butler-sos # Your Database name
|
||||||
INFLUXDB_DATABASE=local_system # Your Database name
|
|
||||||
INFLUXDB_ORG=local_org
|
|
||||||
INFLUXDB_NODE_ID=node0
|
INFLUXDB_NODE_ID=node0
|
||||||
|
|
||||||
# Grafana Configuration
|
# Grafana Configuration
|
||||||
4
docs/docker-compose/config/admin_token.txt
Normal file
4
docs/docker-compose/config/admin_token.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"token": "apiv3_99RtQcbFuBYP_wO1fK5aHvIBQqOqOVRAV4cAqAJxm_gpQRUFIpQkONXWfG0cBt_1wOI21Dc2l5K2izMa3gW7mA",
|
||||||
|
"name": "_admin"
|
||||||
|
}
|
||||||
302
docs/docker-compose/config/production_influxdb_v1.yaml
Normal file
302
docs/docker-compose/config/production_influxdb_v1.yaml
Normal file
@@ -0,0 +1,302 @@
|
|||||||
|
---
|
||||||
|
Butler-SOS:
|
||||||
|
logLevel: info
|
||||||
|
fileLogging: true
|
||||||
|
logDirectory: log
|
||||||
|
systemInfo:
|
||||||
|
enable: true
|
||||||
|
anonTelemetry: true
|
||||||
|
configVisualisation:
|
||||||
|
enable: true
|
||||||
|
host: 0.0.0.0
|
||||||
|
port: 3100
|
||||||
|
obfuscate: true
|
||||||
|
heartbeat:
|
||||||
|
enable: false
|
||||||
|
remoteURL: http://localhost
|
||||||
|
frequency: every 1 hour
|
||||||
|
dockerHealthCheck:
|
||||||
|
enable: true
|
||||||
|
port: 12398
|
||||||
|
uptimeMonitor:
|
||||||
|
enable: true
|
||||||
|
frequency: every 15 seconds
|
||||||
|
logLevel: verbose
|
||||||
|
storeInInfluxdb:
|
||||||
|
butlerSOSMemoryUsage: true
|
||||||
|
instanceTag: docker-v1
|
||||||
|
storeNewRelic:
|
||||||
|
enable: false
|
||||||
|
destinationAccount: []
|
||||||
|
metric:
|
||||||
|
dynamic:
|
||||||
|
butlerMemoryUsage:
|
||||||
|
enable: false
|
||||||
|
butlerUptime:
|
||||||
|
enable: false
|
||||||
|
attribute:
|
||||||
|
static: []
|
||||||
|
dynamic:
|
||||||
|
butlerVersion:
|
||||||
|
enable: false
|
||||||
|
qlikSenseEvents:
|
||||||
|
influxdb:
|
||||||
|
enable: true
|
||||||
|
writeFrequency: 5000
|
||||||
|
eventCount:
|
||||||
|
enable: true
|
||||||
|
influxdb:
|
||||||
|
measurementName: event_count
|
||||||
|
tags:
|
||||||
|
- name: qs_env
|
||||||
|
value: docker-v1
|
||||||
|
rejectedEventCount:
|
||||||
|
enable: false
|
||||||
|
influxdb:
|
||||||
|
measurementName: rejected_event_count
|
||||||
|
influxdbConfig:
|
||||||
|
enable: true
|
||||||
|
host: influxdb-v1
|
||||||
|
port: 8086
|
||||||
|
version: 1
|
||||||
|
maxBatchSize: 100
|
||||||
|
v3Config:
|
||||||
|
database: mydatabase
|
||||||
|
description: Butler SOS metrics
|
||||||
|
token: mytoken
|
||||||
|
retentionDuration: 10d
|
||||||
|
writeTimeout: 10000
|
||||||
|
queryTimeout: 60000
|
||||||
|
v2Config:
|
||||||
|
org: myorg
|
||||||
|
bucket: mybucket
|
||||||
|
description: Butler SOS metrics
|
||||||
|
token: mytoken
|
||||||
|
retentionDuration: 10d
|
||||||
|
v1Config:
|
||||||
|
auth:
|
||||||
|
enable: false
|
||||||
|
username: ''
|
||||||
|
password: ''
|
||||||
|
dbName: senseops
|
||||||
|
retentionPolicy:
|
||||||
|
name: 10d
|
||||||
|
duration: 10d
|
||||||
|
includeFields:
|
||||||
|
activeDocs: false
|
||||||
|
loadedDocs: false
|
||||||
|
inMemoryDocs: false
|
||||||
|
serversToMonitor:
|
||||||
|
pollingInterval: 30000
|
||||||
|
rejectUnauthorized: false
|
||||||
|
serverTagsDefinition: []
|
||||||
|
servers: []
|
||||||
|
thirdPartyToolsCredentials:
|
||||||
|
newRelic: []
|
||||||
|
userEvents:
|
||||||
|
enable: false
|
||||||
|
excludeUser: []
|
||||||
|
udpServerConfig:
|
||||||
|
serverHost: 0.0.0.0
|
||||||
|
portUserActivityEvents: 9997
|
||||||
|
messageQueue:
|
||||||
|
maxConcurrent: 10
|
||||||
|
maxSize: 200
|
||||||
|
backpressureThreshold: 80
|
||||||
|
rateLimit:
|
||||||
|
enable: false
|
||||||
|
maxMessagesPerMinute: 600
|
||||||
|
maxMessageSize: 65507
|
||||||
|
queueMetrics:
|
||||||
|
influxdb:
|
||||||
|
enable: false
|
||||||
|
writeFrequency: 20000
|
||||||
|
measurementName: user_events_queue
|
||||||
|
tags: []
|
||||||
|
tags: []
|
||||||
|
sendToMQTT:
|
||||||
|
enable: false
|
||||||
|
postTo:
|
||||||
|
everythingTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent
|
||||||
|
sessionStartTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent/session/start
|
||||||
|
sessionStopTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent/session/stop
|
||||||
|
connectionOpenTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent/connection/open
|
||||||
|
connectionCloseTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent/connection/close
|
||||||
|
sendToInfluxdb:
|
||||||
|
enable: false
|
||||||
|
sendToNewRelic:
|
||||||
|
enable: false
|
||||||
|
destinationAccount: []
|
||||||
|
scramble: true
|
||||||
|
logEvents:
|
||||||
|
udpServerConfig:
|
||||||
|
serverHost: 0.0.0.0
|
||||||
|
portLogEvents: 9996
|
||||||
|
messageQueue:
|
||||||
|
maxConcurrent: 10
|
||||||
|
maxSize: 200
|
||||||
|
backpressureThreshold: 80
|
||||||
|
rateLimit:
|
||||||
|
enable: false
|
||||||
|
maxMessagesPerMinute: 600
|
||||||
|
maxMessageSize: 65507
|
||||||
|
queueMetrics:
|
||||||
|
influxdb:
|
||||||
|
enable: false
|
||||||
|
writeFrequency: 20000
|
||||||
|
measurementName: log_events_queue
|
||||||
|
tags: []
|
||||||
|
tags: []
|
||||||
|
source:
|
||||||
|
engine:
|
||||||
|
enable: false
|
||||||
|
proxy:
|
||||||
|
enable: false
|
||||||
|
repository:
|
||||||
|
enable: false
|
||||||
|
scheduler:
|
||||||
|
enable: false
|
||||||
|
qixPerf:
|
||||||
|
enable: false
|
||||||
|
categorise:
|
||||||
|
enable: false
|
||||||
|
rules: []
|
||||||
|
ruleDefault:
|
||||||
|
enable: false
|
||||||
|
category: []
|
||||||
|
enginePerformanceMonitor:
|
||||||
|
enable: false
|
||||||
|
appNameLookup:
|
||||||
|
enable: false
|
||||||
|
trackRejectedEvents:
|
||||||
|
enable: false
|
||||||
|
tags: []
|
||||||
|
monitorFilter:
|
||||||
|
allApps:
|
||||||
|
enable: false
|
||||||
|
appExclude: []
|
||||||
|
objectType:
|
||||||
|
allObjectTypes: true
|
||||||
|
allObjectTypesExclude: []
|
||||||
|
someObjectTypesInclude: []
|
||||||
|
method:
|
||||||
|
allMethods: true
|
||||||
|
allMethodsExclude: []
|
||||||
|
someMethodsInclude: []
|
||||||
|
appSpecific:
|
||||||
|
enable: false
|
||||||
|
app: []
|
||||||
|
sendToMQTT:
|
||||||
|
enable: false
|
||||||
|
baseTopic: qliksense/logevent
|
||||||
|
postTo:
|
||||||
|
baseTopic: true
|
||||||
|
subsystemTopics: true
|
||||||
|
sendToInfluxdb:
|
||||||
|
enable: false
|
||||||
|
sendToNewRelic:
|
||||||
|
enable: false
|
||||||
|
destinationAccount: []
|
||||||
|
source:
|
||||||
|
engine:
|
||||||
|
enable: false
|
||||||
|
logLevel:
|
||||||
|
error: true
|
||||||
|
warn: true
|
||||||
|
proxy:
|
||||||
|
enable: false
|
||||||
|
logLevel:
|
||||||
|
error: true
|
||||||
|
warn: true
|
||||||
|
repository:
|
||||||
|
enable: false
|
||||||
|
logLevel:
|
||||||
|
error: true
|
||||||
|
warn: true
|
||||||
|
scheduler:
|
||||||
|
enable: false
|
||||||
|
logLevel:
|
||||||
|
error: true
|
||||||
|
warn: true
|
||||||
|
cert:
|
||||||
|
clientCert: /nodeapp/config/certificate/client.pem
|
||||||
|
clientCertKey: /nodeapp/config/certificate/client_key.pem
|
||||||
|
clientCertCA: /nodeapp/config/certificate/root.pem
|
||||||
|
clientCertPassphrase: ''
|
||||||
|
mqttConfig:
|
||||||
|
enable: false
|
||||||
|
brokerHost: localhost
|
||||||
|
brokerPort: 1883
|
||||||
|
baseTopic: butler-sos/
|
||||||
|
newRelic:
|
||||||
|
enable: false
|
||||||
|
event:
|
||||||
|
url: https://insights-collector.eu01.nr-data.net
|
||||||
|
header: []
|
||||||
|
attribute:
|
||||||
|
static: []
|
||||||
|
dynamic:
|
||||||
|
butlerSosVersion:
|
||||||
|
enable: false
|
||||||
|
metric:
|
||||||
|
destinationAccount: []
|
||||||
|
url: https://insights-collector.eu01.nr-data.net/metric/v1
|
||||||
|
header: []
|
||||||
|
dynamic:
|
||||||
|
engine:
|
||||||
|
memory:
|
||||||
|
enable: false
|
||||||
|
cpu:
|
||||||
|
enable: false
|
||||||
|
calls:
|
||||||
|
enable: false
|
||||||
|
selections:
|
||||||
|
enable: false
|
||||||
|
sessions:
|
||||||
|
enable: false
|
||||||
|
users:
|
||||||
|
enable: false
|
||||||
|
saturated:
|
||||||
|
enable: false
|
||||||
|
apps:
|
||||||
|
docCount:
|
||||||
|
enable: false
|
||||||
|
activeDocs:
|
||||||
|
enable: false
|
||||||
|
loadedDocs:
|
||||||
|
enable: false
|
||||||
|
inMemoryDocs:
|
||||||
|
enable: false
|
||||||
|
cache:
|
||||||
|
cache:
|
||||||
|
enable: false
|
||||||
|
proxy:
|
||||||
|
sessions:
|
||||||
|
enable: false
|
||||||
|
attribute:
|
||||||
|
static: []
|
||||||
|
dynamic:
|
||||||
|
butlerSosVersion:
|
||||||
|
enable: false
|
||||||
|
prometheus:
|
||||||
|
enable: false
|
||||||
|
host: 0.0.0.0
|
||||||
|
port: 9842
|
||||||
|
appNames:
|
||||||
|
enableAppNameExtract: false
|
||||||
|
extractInterval: 60000
|
||||||
|
hostIP: localhost
|
||||||
|
userSessions:
|
||||||
|
enableSessionExtract: false
|
||||||
|
pollingInterval: 30000
|
||||||
|
excludeUser: []
|
||||||
302
docs/docker-compose/config/production_influxdb_v2.yaml
Normal file
302
docs/docker-compose/config/production_influxdb_v2.yaml
Normal file
@@ -0,0 +1,302 @@
|
|||||||
|
---
|
||||||
|
Butler-SOS:
|
||||||
|
logLevel: info
|
||||||
|
fileLogging: true
|
||||||
|
logDirectory: log
|
||||||
|
systemInfo:
|
||||||
|
enable: true
|
||||||
|
anonTelemetry: true
|
||||||
|
configVisualisation:
|
||||||
|
enable: true
|
||||||
|
host: 0.0.0.0
|
||||||
|
port: 3100
|
||||||
|
obfuscate: true
|
||||||
|
heartbeat:
|
||||||
|
enable: false
|
||||||
|
remoteURL: http://localhost
|
||||||
|
frequency: every 1 hour
|
||||||
|
dockerHealthCheck:
|
||||||
|
enable: true
|
||||||
|
port: 12398
|
||||||
|
uptimeMonitor:
|
||||||
|
enable: true
|
||||||
|
frequency: every 15 seconds
|
||||||
|
logLevel: verbose
|
||||||
|
storeInInfluxdb:
|
||||||
|
butlerSOSMemoryUsage: true
|
||||||
|
instanceTag: docker-v2
|
||||||
|
storeNewRelic:
|
||||||
|
enable: false
|
||||||
|
destinationAccount: []
|
||||||
|
metric:
|
||||||
|
dynamic:
|
||||||
|
butlerMemoryUsage:
|
||||||
|
enable: false
|
||||||
|
butlerUptime:
|
||||||
|
enable: false
|
||||||
|
attribute:
|
||||||
|
static: []
|
||||||
|
dynamic:
|
||||||
|
butlerVersion:
|
||||||
|
enable: false
|
||||||
|
qlikSenseEvents:
|
||||||
|
influxdb:
|
||||||
|
enable: true
|
||||||
|
writeFrequency: 5000
|
||||||
|
eventCount:
|
||||||
|
enable: true
|
||||||
|
influxdb:
|
||||||
|
measurementName: event_count
|
||||||
|
tags:
|
||||||
|
- name: qs_env
|
||||||
|
value: docker-v2
|
||||||
|
rejectedEventCount:
|
||||||
|
enable: false
|
||||||
|
influxdb:
|
||||||
|
measurementName: rejected_event_count
|
||||||
|
influxdbConfig:
|
||||||
|
enable: true
|
||||||
|
host: influxdb-v2
|
||||||
|
port: 8086
|
||||||
|
version: 2
|
||||||
|
maxBatchSize: 100
|
||||||
|
v3Config:
|
||||||
|
database: mydatabase
|
||||||
|
description: Butler SOS metrics
|
||||||
|
token: mytoken
|
||||||
|
retentionDuration: 10d
|
||||||
|
writeTimeout: 10000
|
||||||
|
queryTimeout: 60000
|
||||||
|
v2Config:
|
||||||
|
org: butler-sos
|
||||||
|
bucket: butler-sos
|
||||||
|
description: Butler SOS metrics
|
||||||
|
token: butlersos-token
|
||||||
|
retentionDuration: 10d
|
||||||
|
v1Config:
|
||||||
|
auth:
|
||||||
|
enable: false
|
||||||
|
username: ''
|
||||||
|
password: ''
|
||||||
|
dbName: senseops
|
||||||
|
retentionPolicy:
|
||||||
|
name: 10d
|
||||||
|
duration: 10d
|
||||||
|
includeFields:
|
||||||
|
activeDocs: false
|
||||||
|
loadedDocs: false
|
||||||
|
inMemoryDocs: false
|
||||||
|
serversToMonitor:
|
||||||
|
pollingInterval: 30000
|
||||||
|
rejectUnauthorized: false
|
||||||
|
serverTagsDefinition: []
|
||||||
|
servers: []
|
||||||
|
thirdPartyToolsCredentials:
|
||||||
|
newRelic: []
|
||||||
|
userEvents:
|
||||||
|
enable: false
|
||||||
|
excludeUser: []
|
||||||
|
udpServerConfig:
|
||||||
|
serverHost: 0.0.0.0
|
||||||
|
portUserActivityEvents: 9997
|
||||||
|
messageQueue:
|
||||||
|
maxConcurrent: 10
|
||||||
|
maxSize: 200
|
||||||
|
backpressureThreshold: 80
|
||||||
|
rateLimit:
|
||||||
|
enable: false
|
||||||
|
maxMessagesPerMinute: 600
|
||||||
|
maxMessageSize: 65507
|
||||||
|
queueMetrics:
|
||||||
|
influxdb:
|
||||||
|
enable: false
|
||||||
|
writeFrequency: 20000
|
||||||
|
measurementName: user_events_queue
|
||||||
|
tags: []
|
||||||
|
tags: []
|
||||||
|
sendToMQTT:
|
||||||
|
enable: false
|
||||||
|
postTo:
|
||||||
|
everythingTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent
|
||||||
|
sessionStartTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent/session/start
|
||||||
|
sessionStopTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent/session/stop
|
||||||
|
connectionOpenTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent/connection/open
|
||||||
|
connectionCloseTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent/connection/close
|
||||||
|
sendToInfluxdb:
|
||||||
|
enable: false
|
||||||
|
sendToNewRelic:
|
||||||
|
enable: false
|
||||||
|
destinationAccount: []
|
||||||
|
scramble: true
|
||||||
|
logEvents:
|
||||||
|
udpServerConfig:
|
||||||
|
serverHost: 0.0.0.0
|
||||||
|
portLogEvents: 9996
|
||||||
|
messageQueue:
|
||||||
|
maxConcurrent: 10
|
||||||
|
maxSize: 200
|
||||||
|
backpressureThreshold: 80
|
||||||
|
rateLimit:
|
||||||
|
enable: false
|
||||||
|
maxMessagesPerMinute: 600
|
||||||
|
maxMessageSize: 65507
|
||||||
|
queueMetrics:
|
||||||
|
influxdb:
|
||||||
|
enable: false
|
||||||
|
writeFrequency: 20000
|
||||||
|
measurementName: log_events_queue
|
||||||
|
tags: []
|
||||||
|
tags: []
|
||||||
|
source:
|
||||||
|
engine:
|
||||||
|
enable: false
|
||||||
|
proxy:
|
||||||
|
enable: false
|
||||||
|
repository:
|
||||||
|
enable: false
|
||||||
|
scheduler:
|
||||||
|
enable: false
|
||||||
|
qixPerf:
|
||||||
|
enable: false
|
||||||
|
categorise:
|
||||||
|
enable: false
|
||||||
|
rules: []
|
||||||
|
ruleDefault:
|
||||||
|
enable: false
|
||||||
|
category: []
|
||||||
|
enginePerformanceMonitor:
|
||||||
|
enable: false
|
||||||
|
appNameLookup:
|
||||||
|
enable: false
|
||||||
|
trackRejectedEvents:
|
||||||
|
enable: false
|
||||||
|
tags: []
|
||||||
|
monitorFilter:
|
||||||
|
allApps:
|
||||||
|
enable: false
|
||||||
|
appExclude: []
|
||||||
|
objectType:
|
||||||
|
allObjectTypes: true
|
||||||
|
allObjectTypesExclude: []
|
||||||
|
someObjectTypesInclude: []
|
||||||
|
method:
|
||||||
|
allMethods: true
|
||||||
|
allMethodsExclude: []
|
||||||
|
someMethodsInclude: []
|
||||||
|
appSpecific:
|
||||||
|
enable: false
|
||||||
|
app: []
|
||||||
|
sendToMQTT:
|
||||||
|
enable: false
|
||||||
|
baseTopic: qliksense/logevent
|
||||||
|
postTo:
|
||||||
|
baseTopic: true
|
||||||
|
subsystemTopics: true
|
||||||
|
sendToInfluxdb:
|
||||||
|
enable: false
|
||||||
|
sendToNewRelic:
|
||||||
|
enable: false
|
||||||
|
destinationAccount: []
|
||||||
|
source:
|
||||||
|
engine:
|
||||||
|
enable: false
|
||||||
|
logLevel:
|
||||||
|
error: true
|
||||||
|
warn: true
|
||||||
|
proxy:
|
||||||
|
enable: false
|
||||||
|
logLevel:
|
||||||
|
error: true
|
||||||
|
warn: true
|
||||||
|
repository:
|
||||||
|
enable: false
|
||||||
|
logLevel:
|
||||||
|
error: true
|
||||||
|
warn: true
|
||||||
|
scheduler:
|
||||||
|
enable: false
|
||||||
|
logLevel:
|
||||||
|
error: true
|
||||||
|
warn: true
|
||||||
|
cert:
|
||||||
|
clientCert: /nodeapp/config/certificate/client.pem
|
||||||
|
clientCertKey: /nodeapp/config/certificate/client_key.pem
|
||||||
|
clientCertCA: /nodeapp/config/certificate/root.pem
|
||||||
|
clientCertPassphrase: ''
|
||||||
|
mqttConfig:
|
||||||
|
enable: false
|
||||||
|
brokerHost: localhost
|
||||||
|
brokerPort: 1883
|
||||||
|
baseTopic: butler-sos/
|
||||||
|
newRelic:
|
||||||
|
enable: false
|
||||||
|
event:
|
||||||
|
url: https://insights-collector.eu01.nr-data.net
|
||||||
|
header: []
|
||||||
|
attribute:
|
||||||
|
static: []
|
||||||
|
dynamic:
|
||||||
|
butlerSosVersion:
|
||||||
|
enable: false
|
||||||
|
metric:
|
||||||
|
destinationAccount: []
|
||||||
|
url: https://insights-collector.eu01.nr-data.net/metric/v1
|
||||||
|
header: []
|
||||||
|
dynamic:
|
||||||
|
engine:
|
||||||
|
memory:
|
||||||
|
enable: false
|
||||||
|
cpu:
|
||||||
|
enable: false
|
||||||
|
calls:
|
||||||
|
enable: false
|
||||||
|
selections:
|
||||||
|
enable: false
|
||||||
|
sessions:
|
||||||
|
enable: false
|
||||||
|
users:
|
||||||
|
enable: false
|
||||||
|
saturated:
|
||||||
|
enable: false
|
||||||
|
apps:
|
||||||
|
docCount:
|
||||||
|
enable: false
|
||||||
|
activeDocs:
|
||||||
|
enable: false
|
||||||
|
loadedDocs:
|
||||||
|
enable: false
|
||||||
|
inMemoryDocs:
|
||||||
|
enable: false
|
||||||
|
cache:
|
||||||
|
cache:
|
||||||
|
enable: false
|
||||||
|
proxy:
|
||||||
|
sessions:
|
||||||
|
enable: false
|
||||||
|
attribute:
|
||||||
|
static: []
|
||||||
|
dynamic:
|
||||||
|
butlerSosVersion:
|
||||||
|
enable: false
|
||||||
|
prometheus:
|
||||||
|
enable: false
|
||||||
|
host: 0.0.0.0
|
||||||
|
port: 9842
|
||||||
|
appNames:
|
||||||
|
enableAppNameExtract: false
|
||||||
|
extractInterval: 60000
|
||||||
|
hostIP: localhost
|
||||||
|
userSessions:
|
||||||
|
enableSessionExtract: false
|
||||||
|
pollingInterval: 30000
|
||||||
|
excludeUser: []
|
||||||
302
docs/docker-compose/config/production_influxdb_v3.yaml
Normal file
302
docs/docker-compose/config/production_influxdb_v3.yaml
Normal file
@@ -0,0 +1,302 @@
|
|||||||
|
---
|
||||||
|
Butler-SOS:
|
||||||
|
logLevel: info
|
||||||
|
fileLogging: true
|
||||||
|
logDirectory: log
|
||||||
|
systemInfo:
|
||||||
|
enable: true
|
||||||
|
anonTelemetry: true
|
||||||
|
configVisualisation:
|
||||||
|
enable: true
|
||||||
|
host: 0.0.0.0
|
||||||
|
port: 3100
|
||||||
|
obfuscate: true
|
||||||
|
heartbeat:
|
||||||
|
enable: false
|
||||||
|
remoteURL: http://localhost
|
||||||
|
frequency: every 1 hour
|
||||||
|
dockerHealthCheck:
|
||||||
|
enable: true
|
||||||
|
port: 12398
|
||||||
|
uptimeMonitor:
|
||||||
|
enable: true
|
||||||
|
frequency: every 15 seconds
|
||||||
|
logLevel: verbose
|
||||||
|
storeInInfluxdb:
|
||||||
|
butlerSOSMemoryUsage: true
|
||||||
|
instanceTag: docker-v3
|
||||||
|
storeNewRelic:
|
||||||
|
enable: false
|
||||||
|
destinationAccount: []
|
||||||
|
metric:
|
||||||
|
dynamic:
|
||||||
|
butlerMemoryUsage:
|
||||||
|
enable: false
|
||||||
|
butlerUptime:
|
||||||
|
enable: false
|
||||||
|
attribute:
|
||||||
|
static: []
|
||||||
|
dynamic:
|
||||||
|
butlerVersion:
|
||||||
|
enable: false
|
||||||
|
qlikSenseEvents:
|
||||||
|
influxdb:
|
||||||
|
enable: true
|
||||||
|
writeFrequency: 5000
|
||||||
|
eventCount:
|
||||||
|
enable: true
|
||||||
|
influxdb:
|
||||||
|
measurementName: event_count
|
||||||
|
tags:
|
||||||
|
- name: qs_env
|
||||||
|
value: docker-v3
|
||||||
|
rejectedEventCount:
|
||||||
|
enable: false
|
||||||
|
influxdb:
|
||||||
|
measurementName: rejected_event_count
|
||||||
|
influxdbConfig:
|
||||||
|
enable: true
|
||||||
|
host: influxdb-v3-core
|
||||||
|
port: 8181
|
||||||
|
version: 3
|
||||||
|
maxBatchSize: 100
|
||||||
|
v3Config:
|
||||||
|
database: butler-sos
|
||||||
|
description: Butler SOS metrics
|
||||||
|
token: apiv3_99RtQcbFuBYP_wO1fK5aHvIBQqOqOVRAV4cAqAJxm_gpQRUFIpQkONXWfG0cBt_1wOI21Dc2l5K2izMa3gW7mA
|
||||||
|
retentionDuration: 10d
|
||||||
|
writeTimeout: 10000
|
||||||
|
queryTimeout: 60000
|
||||||
|
v2Config:
|
||||||
|
org: myorg
|
||||||
|
bucket: mybucket
|
||||||
|
description: Butler SOS metrics
|
||||||
|
token: mytoken
|
||||||
|
retentionDuration: 10d
|
||||||
|
v1Config:
|
||||||
|
auth:
|
||||||
|
enable: false
|
||||||
|
username: ''
|
||||||
|
password: ''
|
||||||
|
dbName: senseops
|
||||||
|
retentionPolicy:
|
||||||
|
name: 10d
|
||||||
|
duration: 10d
|
||||||
|
includeFields:
|
||||||
|
activeDocs: false
|
||||||
|
loadedDocs: false
|
||||||
|
inMemoryDocs: false
|
||||||
|
serversToMonitor:
|
||||||
|
pollingInterval: 30000
|
||||||
|
rejectUnauthorized: false
|
||||||
|
serverTagsDefinition: []
|
||||||
|
servers: []
|
||||||
|
thirdPartyToolsCredentials:
|
||||||
|
newRelic: []
|
||||||
|
userEvents:
|
||||||
|
enable: false
|
||||||
|
excludeUser: []
|
||||||
|
udpServerConfig:
|
||||||
|
serverHost: 0.0.0.0
|
||||||
|
portUserActivityEvents: 9997
|
||||||
|
messageQueue:
|
||||||
|
maxConcurrent: 10
|
||||||
|
maxSize: 200
|
||||||
|
backpressureThreshold: 80
|
||||||
|
rateLimit:
|
||||||
|
enable: false
|
||||||
|
maxMessagesPerMinute: 600
|
||||||
|
maxMessageSize: 65507
|
||||||
|
queueMetrics:
|
||||||
|
influxdb:
|
||||||
|
enable: false
|
||||||
|
writeFrequency: 20000
|
||||||
|
measurementName: user_events_queue
|
||||||
|
tags: []
|
||||||
|
tags: []
|
||||||
|
sendToMQTT:
|
||||||
|
enable: false
|
||||||
|
postTo:
|
||||||
|
everythingTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent
|
||||||
|
sessionStartTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent/session/start
|
||||||
|
sessionStopTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent/session/stop
|
||||||
|
connectionOpenTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent/connection/open
|
||||||
|
connectionCloseTopic:
|
||||||
|
enable: false
|
||||||
|
topic: qliksense/userevent/connection/close
|
||||||
|
sendToInfluxdb:
|
||||||
|
enable: false
|
||||||
|
sendToNewRelic:
|
||||||
|
enable: false
|
||||||
|
destinationAccount: []
|
||||||
|
scramble: true
|
||||||
|
logEvents:
|
||||||
|
udpServerConfig:
|
||||||
|
serverHost: 0.0.0.0
|
||||||
|
portLogEvents: 9996
|
||||||
|
messageQueue:
|
||||||
|
maxConcurrent: 10
|
||||||
|
maxSize: 200
|
||||||
|
backpressureThreshold: 80
|
||||||
|
rateLimit:
|
||||||
|
enable: false
|
||||||
|
maxMessagesPerMinute: 600
|
||||||
|
maxMessageSize: 65507
|
||||||
|
queueMetrics:
|
||||||
|
influxdb:
|
||||||
|
enable: false
|
||||||
|
writeFrequency: 20000
|
||||||
|
measurementName: log_events_queue
|
||||||
|
tags: []
|
||||||
|
tags: []
|
||||||
|
source:
|
||||||
|
engine:
|
||||||
|
enable: false
|
||||||
|
proxy:
|
||||||
|
enable: false
|
||||||
|
repository:
|
||||||
|
enable: false
|
||||||
|
scheduler:
|
||||||
|
enable: false
|
||||||
|
qixPerf:
|
||||||
|
enable: false
|
||||||
|
categorise:
|
||||||
|
enable: false
|
||||||
|
rules: []
|
||||||
|
ruleDefault:
|
||||||
|
enable: false
|
||||||
|
category: []
|
||||||
|
enginePerformanceMonitor:
|
||||||
|
enable: false
|
||||||
|
appNameLookup:
|
||||||
|
enable: false
|
||||||
|
trackRejectedEvents:
|
||||||
|
enable: false
|
||||||
|
tags: []
|
||||||
|
monitorFilter:
|
||||||
|
allApps:
|
||||||
|
enable: false
|
||||||
|
appExclude: []
|
||||||
|
objectType:
|
||||||
|
allObjectTypes: true
|
||||||
|
allObjectTypesExclude: []
|
||||||
|
someObjectTypesInclude: []
|
||||||
|
method:
|
||||||
|
allMethods: true
|
||||||
|
allMethodsExclude: []
|
||||||
|
someMethodsInclude: []
|
||||||
|
appSpecific:
|
||||||
|
enable: false
|
||||||
|
app: []
|
||||||
|
sendToMQTT:
|
||||||
|
enable: false
|
||||||
|
baseTopic: qliksense/logevent
|
||||||
|
postTo:
|
||||||
|
baseTopic: true
|
||||||
|
subsystemTopics: true
|
||||||
|
sendToInfluxdb:
|
||||||
|
enable: false
|
||||||
|
sendToNewRelic:
|
||||||
|
enable: false
|
||||||
|
destinationAccount: []
|
||||||
|
source:
|
||||||
|
engine:
|
||||||
|
enable: false
|
||||||
|
logLevel:
|
||||||
|
error: true
|
||||||
|
warn: true
|
||||||
|
proxy:
|
||||||
|
enable: false
|
||||||
|
logLevel:
|
||||||
|
error: true
|
||||||
|
warn: true
|
||||||
|
repository:
|
||||||
|
enable: false
|
||||||
|
logLevel:
|
||||||
|
error: true
|
||||||
|
warn: true
|
||||||
|
scheduler:
|
||||||
|
enable: false
|
||||||
|
logLevel:
|
||||||
|
error: true
|
||||||
|
warn: true
|
||||||
|
cert:
|
||||||
|
clientCert: /nodeapp/config/certificate/client.pem
|
||||||
|
clientCertKey: /nodeapp/config/certificate/client_key.pem
|
||||||
|
clientCertCA: /nodeapp/config/certificate/root.pem
|
||||||
|
clientCertPassphrase: ''
|
||||||
|
mqttConfig:
|
||||||
|
enable: false
|
||||||
|
brokerHost: localhost
|
||||||
|
brokerPort: 1883
|
||||||
|
baseTopic: butler-sos/
|
||||||
|
newRelic:
|
||||||
|
enable: false
|
||||||
|
event:
|
||||||
|
url: https://insights-collector.eu01.nr-data.net
|
||||||
|
header: []
|
||||||
|
attribute:
|
||||||
|
static: []
|
||||||
|
dynamic:
|
||||||
|
butlerSosVersion:
|
||||||
|
enable: false
|
||||||
|
metric:
|
||||||
|
destinationAccount: []
|
||||||
|
url: https://insights-collector.eu01.nr-data.net/metric/v1
|
||||||
|
header: []
|
||||||
|
dynamic:
|
||||||
|
engine:
|
||||||
|
memory:
|
||||||
|
enable: false
|
||||||
|
cpu:
|
||||||
|
enable: false
|
||||||
|
calls:
|
||||||
|
enable: false
|
||||||
|
selections:
|
||||||
|
enable: false
|
||||||
|
sessions:
|
||||||
|
enable: false
|
||||||
|
users:
|
||||||
|
enable: false
|
||||||
|
saturated:
|
||||||
|
enable: false
|
||||||
|
apps:
|
||||||
|
docCount:
|
||||||
|
enable: false
|
||||||
|
activeDocs:
|
||||||
|
enable: false
|
||||||
|
loadedDocs:
|
||||||
|
enable: false
|
||||||
|
inMemoryDocs:
|
||||||
|
enable: false
|
||||||
|
cache:
|
||||||
|
cache:
|
||||||
|
enable: false
|
||||||
|
proxy:
|
||||||
|
sessions:
|
||||||
|
enable: false
|
||||||
|
attribute:
|
||||||
|
static: []
|
||||||
|
dynamic:
|
||||||
|
butlerSosVersion:
|
||||||
|
enable: false
|
||||||
|
prometheus:
|
||||||
|
enable: false
|
||||||
|
host: 0.0.0.0
|
||||||
|
port: 9842
|
||||||
|
appNames:
|
||||||
|
enableAppNameExtract: false
|
||||||
|
extractInterval: 60000
|
||||||
|
hostIP: localhost
|
||||||
|
userSessions:
|
||||||
|
enableSessionExtract: false
|
||||||
|
pollingInterval: 30000
|
||||||
|
excludeUser: []
|
||||||
@@ -1,24 +1,27 @@
|
|||||||
# docker-compose_fullstack_influxdb_v1.yml
|
name: butler-sos-v1
|
||||||
services:
|
services:
|
||||||
butler-sos:
|
butler-sos:
|
||||||
image: ptarmiganlabs/butler-sos:latest
|
image: butler-sos:local
|
||||||
container_name: butler-sos
|
container_name: butler-sos
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "9997:9997" # UDP user events
|
- '9997:9997' # UDP user events
|
||||||
- "9996:9996" # UDP log events
|
- '9996:9996' # UDP log events
|
||||||
- "9842:9842" # Prometheus metrics
|
- '9842:9842' # Prometheus metrics
|
||||||
- "3100:3100" # Config file visualization
|
- '3100:3100' # Config file visualization
|
||||||
volumes:
|
volumes:
|
||||||
# Make config file and log files accessible outside of container
|
# Make config file and log files accessible outside of container
|
||||||
- "./config:/nodeapp/config"
|
- './config:/nodeapp/config'
|
||||||
- "./log:/nodeapp/log"
|
- './test_data/v1/log:/nodeapp/log'
|
||||||
command: ["node", "src/butler-sos.js", "-c", "/nodeapp/config/production_influxdb_v1.yaml"]
|
command: ['node', 'src/butler-sos.js', '-c', '/nodeapp/config/production_influxdb_v1.yaml']
|
||||||
logging:
|
logging:
|
||||||
driver: "json-file"
|
driver: 'json-file'
|
||||||
options:
|
options:
|
||||||
max-file: "5"
|
max-file: '5'
|
||||||
max-size: "5m"
|
max-size: '5m'
|
||||||
|
depends_on:
|
||||||
|
influxdb:
|
||||||
|
condition: service_healthy
|
||||||
networks:
|
networks:
|
||||||
- senseops
|
- senseops
|
||||||
|
|
||||||
@@ -27,15 +30,20 @@ services:
|
|||||||
container_name: influxdb-v1
|
container_name: influxdb-v1
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- ./influxdb/data:/var/lib/influxdb # Mount for influxdb data directory
|
- ./test_data/v1/influxdb/data:/var/lib/influxdb # Mount for influxdb data directory
|
||||||
- ./influxdb/config/:/etc/influxdb/ # Mount for influxdb configuration
|
- ./test_data/v1/influxdb/config/:/etc/influxdb/ # Mount for influxdb configuration
|
||||||
ports:
|
ports:
|
||||||
# The API for InfluxDB is served on port 8086
|
# The API for InfluxDB is served on port 8086
|
||||||
- "8086:8086"
|
- '8086:8086'
|
||||||
- "8082:8082"
|
- '8082:8082'
|
||||||
environment:
|
environment:
|
||||||
# Disable usage reporting
|
# Disable usage reporting
|
||||||
- "INFLUXDB_REPORTING_DISABLED=true"
|
- 'INFLUXDB_REPORTING_DISABLED=true'
|
||||||
|
healthcheck:
|
||||||
|
test: ['CMD', 'curl', '-f', 'http://localhost:8086/ping']
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 5
|
||||||
networks:
|
networks:
|
||||||
- senseops
|
- senseops
|
||||||
|
|
||||||
@@ -44,9 +52,18 @@ services:
|
|||||||
container_name: grafana
|
container_name: grafana
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "3000:3000"
|
- '3000:3000'
|
||||||
volumes:
|
volumes:
|
||||||
- ./grafana/data:/var/lib/grafana
|
- ./test_data/v1/grafana/data:/var/lib/grafana
|
||||||
|
- ./grafana/provisioning/datasources/datasource_v1.yaml:/etc/grafana/provisioning/datasources/datasource.yaml
|
||||||
|
- ./grafana/provisioning/dashboards/dashboard.yaml:/etc/grafana/provisioning/dashboards/dashboard.yaml
|
||||||
|
- ./grafana/dashboards:/var/lib/grafana/dashboards
|
||||||
|
environment:
|
||||||
|
- GF_AUTH_ANONYMOUS_ENABLED=true
|
||||||
|
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
|
||||||
|
depends_on:
|
||||||
|
influxdb:
|
||||||
|
condition: service_healthy
|
||||||
networks:
|
networks:
|
||||||
- senseops
|
- senseops
|
||||||
|
|
||||||
|
|||||||
@@ -1,24 +1,27 @@
|
|||||||
# docker-compose_fullstack_influxdb_v2.yml
|
name: butler-sos-v2
|
||||||
services:
|
services:
|
||||||
butler-sos:
|
butler-sos:
|
||||||
image: ptarmiganlabs/butler-sos:latest
|
image: butler-sos:local
|
||||||
container_name: butler-sos
|
container_name: butler-sos
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "9997:9997" # UDP user events
|
- '9997:9997' # UDP user events
|
||||||
- "9996:9996" # UDP log events
|
- '9996:9996' # UDP log events
|
||||||
- "9842:9842" # Prometheus metrics
|
- '9842:9842' # Prometheus metrics
|
||||||
- "3100:3100" # Config file visualization
|
- '3100:3100' # Config file visualization
|
||||||
volumes:
|
volumes:
|
||||||
# Make config file and log files accessible outside of container
|
# Make config file and log files accessible outside of container
|
||||||
- "./config:/nodeapp/config"
|
- './config:/nodeapp/config'
|
||||||
- "./log:/nodeapp/log"
|
- './test_data/v2/log:/nodeapp/log'
|
||||||
command: ["node", "src/butler-sos.js", "-c", "/nodeapp/config/production_influxdb_v2.yaml"]
|
command: ['node', 'src/butler-sos.js', '-c', '/nodeapp/config/production_influxdb_v2.yaml']
|
||||||
logging:
|
logging:
|
||||||
driver: "json-file"
|
driver: 'json-file'
|
||||||
options:
|
options:
|
||||||
max-file: "5"
|
max-file: '5'
|
||||||
max-size: "5m"
|
max-size: '5m'
|
||||||
|
depends_on:
|
||||||
|
influxdb:
|
||||||
|
condition: service_healthy
|
||||||
networks:
|
networks:
|
||||||
- senseops
|
- senseops
|
||||||
|
|
||||||
@@ -27,20 +30,25 @@ services:
|
|||||||
container_name: influxdb-v2
|
container_name: influxdb-v2
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- ./influxdb/data:/var/lib/influxdb2 # Mount for influxdb data directory
|
- ./test_data/v2/influxdb/data:/var/lib/influxdb2 # Mount for influxdb data directory
|
||||||
- ./influxdb/config/:/etc/influxdb2/ # Mount for influxdb configuration
|
- ./test_data/v2/influxdb/config/:/etc/influxdb2/ # Mount for influxdb configuration
|
||||||
ports:
|
ports:
|
||||||
# The API for InfluxDB is served on port 8086
|
# The API for InfluxDB is served on port 8086
|
||||||
- "8086:8086"
|
- '8086:8086'
|
||||||
environment:
|
environment:
|
||||||
# Initial setup parameters
|
# Initial setup parameters
|
||||||
- "DOCKER_INFLUXDB_INIT_MODE=setup"
|
- 'DOCKER_INFLUXDB_INIT_MODE=setup'
|
||||||
- "DOCKER_INFLUXDB_INIT_USERNAME=admin"
|
- 'DOCKER_INFLUXDB_INIT_USERNAME=admin'
|
||||||
- "DOCKER_INFLUXDB_INIT_PASSWORD=butlersos123"
|
- 'DOCKER_INFLUXDB_INIT_PASSWORD=butlersos123'
|
||||||
- "DOCKER_INFLUXDB_INIT_ORG=butler-sos"
|
- 'DOCKER_INFLUXDB_INIT_ORG=butler-sos'
|
||||||
- "DOCKER_INFLUXDB_INIT_BUCKET=butler-sos"
|
- 'DOCKER_INFLUXDB_INIT_BUCKET=butler-sos'
|
||||||
- "DOCKER_INFLUXDB_INIT_RETENTION=10d"
|
- 'DOCKER_INFLUXDB_INIT_RETENTION=10d'
|
||||||
- "DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=butlersos-token"
|
- 'DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=butlersos-token'
|
||||||
|
healthcheck:
|
||||||
|
test: ['CMD', 'influx', 'ping']
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 5
|
||||||
networks:
|
networks:
|
||||||
- senseops
|
- senseops
|
||||||
|
|
||||||
@@ -49,9 +57,18 @@ services:
|
|||||||
container_name: grafana
|
container_name: grafana
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "3000:3000"
|
- '3000:3000'
|
||||||
volumes:
|
volumes:
|
||||||
- ./grafana/data:/var/lib/grafana
|
- ./test_data/v2/grafana/data:/var/lib/grafana
|
||||||
|
- ./grafana/provisioning/datasources/datasource_v2.yaml:/etc/grafana/provisioning/datasources/datasource.yaml
|
||||||
|
- ./grafana/provisioning/dashboards/dashboard.yaml:/etc/grafana/provisioning/dashboards/dashboard.yaml
|
||||||
|
- ./grafana/dashboards:/var/lib/grafana/dashboards
|
||||||
|
environment:
|
||||||
|
- GF_AUTH_ANONYMOUS_ENABLED=true
|
||||||
|
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
|
||||||
|
depends_on:
|
||||||
|
influxdb:
|
||||||
|
condition: service_healthy
|
||||||
networks:
|
networks:
|
||||||
- senseops
|
- senseops
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,31 @@
|
|||||||
# docker-compose_fullstack_influxdb_v3.yml
|
name: butler-sos-v3
|
||||||
# InfluxDB v3.x (Core) - using the InfluxDB 3.x Community Edition
|
# InfluxDB v3.x (Core) - using the InfluxDB 3.x Community Edition
|
||||||
# Inspiration from https://github.com/InfluxCommunity/TIG-Stack-using-InfluxDB-3/blob/main/docker-compose.yml
|
# Inspiration from https://github.com/InfluxCommunity/TIG-Stack-using-InfluxDB-3/blob/main/docker-compose.yml
|
||||||
services:
|
services:
|
||||||
butler-sos:
|
butler-sos:
|
||||||
image: ptarmiganlabs/butler-sos:latest
|
image: butler-sos:local
|
||||||
container_name: butler-sos
|
container_name: butler-sos
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "9997:9997" # UDP user events
|
- '9997:9997' # UDP user events
|
||||||
- "9996:9996" # UDP log events
|
- '9996:9996' # UDP log events
|
||||||
- "9842:9842" # Prometheus metrics
|
- '9842:9842' # Prometheus metrics
|
||||||
- "3100:3100" # Config file visualization
|
- '3100:3100' # Config file visualization
|
||||||
volumes:
|
volumes:
|
||||||
# Make config file and log files accessible outside of container
|
# Make config file and log files accessible outside of container
|
||||||
- "./config:/nodeapp/config"
|
- './config:/nodeapp/config'
|
||||||
- "./log:/nodeapp/log"
|
- './test_data/v3/log:/nodeapp/log'
|
||||||
command: ["node", "src/butler-sos.js", "-c", "/nodeapp/config/${BUTLER_SOS_CONFIG_FILE}"]
|
command: ['node', 'src/butler-sos.js', '-c', '/nodeapp/config/${BUTLER_SOS_CONFIG_FILE}']
|
||||||
logging:
|
logging:
|
||||||
driver: "json-file"
|
driver: 'json-file'
|
||||||
options:
|
options:
|
||||||
max-file: "5"
|
max-file: '5'
|
||||||
max-size: "5m"
|
max-size: '5m'
|
||||||
depends_on:
|
depends_on:
|
||||||
# Or switch to influxdb3-enterprise as needed
|
influxdb-v3-core:
|
||||||
- influxdb-v3-core
|
condition: service_healthy
|
||||||
|
setup-influxdb:
|
||||||
|
condition: service_completed_successfully
|
||||||
networks:
|
networks:
|
||||||
- senseops
|
- senseops
|
||||||
|
|
||||||
@@ -41,9 +43,11 @@ services:
|
|||||||
- --node-id=${INFLUXDB_NODE_ID}
|
- --node-id=${INFLUXDB_NODE_ID}
|
||||||
- --object-store=file
|
- --object-store=file
|
||||||
- --data-dir=/var/lib/influxdb3
|
- --data-dir=/var/lib/influxdb3
|
||||||
|
- --admin-token-file=/admin_token.txt
|
||||||
volumes:
|
volumes:
|
||||||
- ./influxdb/data:/var/lib/influxdb3 # Mount for influxdb data directory
|
- ./test_data/v3/influxdb/data:/var/lib/influxdb3 # Mount for influxdb data directory
|
||||||
- ./influxdb/config/:/etc/influxdb3/ # Mount for influxdb configuration
|
- ./test_data/v3/influxdb/config/:/etc/influxdb3/ # Mount for influxdb configuration
|
||||||
|
- ./config/admin_token.txt:/admin_token.txt
|
||||||
# environment:
|
# environment:
|
||||||
# InfluxDB v3 setup - uses similar setup to v2 but different internal architecture
|
# InfluxDB v3 setup - uses similar setup to v2 but different internal architecture
|
||||||
# - "DOCKER_INFLUXDB_INIT_MODE=setup"
|
# - "DOCKER_INFLUXDB_INIT_MODE=setup"
|
||||||
@@ -55,27 +59,55 @@ services:
|
|||||||
# - "DOCKER_INFLUXDB_INIT_RETENTION=10d"
|
# - "DOCKER_INFLUXDB_INIT_RETENTION=10d"
|
||||||
# - "DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=butlersos-token"
|
# - "DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=butlersos-token"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "curl -f -H 'Authorization: Bearer ${INFLUXDB_TOKEN}' http://localhost:8181/health || exit 1"]
|
test:
|
||||||
|
[
|
||||||
|
'CMD-SHELL',
|
||||||
|
"curl -f -H 'Authorization: Bearer ${INFLUXDB_TOKEN}' http://localhost:8181/health || exit 1",
|
||||||
|
]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
networks:
|
networks:
|
||||||
- senseops
|
- senseops
|
||||||
|
|
||||||
|
setup-influxdb:
|
||||||
|
image: influxdb:3-core
|
||||||
|
container_name: setup-influxdb
|
||||||
|
restart: no
|
||||||
|
entrypoint: ['/bin/sh', '-c']
|
||||||
|
command:
|
||||||
|
- |
|
||||||
|
echo "Creating database $${INFLUXDB_DATABASE}..."
|
||||||
|
influxdb3 create database $${INFLUXDB_DATABASE} --host http://influxdb-v3-core:8181 --token $${INFLUXDB_TOKEN} || true
|
||||||
|
echo "Database creation attempt finished."
|
||||||
|
environment:
|
||||||
|
- INFLUXDB_TOKEN=${INFLUXDB_TOKEN}
|
||||||
|
- INFLUXDB_DATABASE=${INFLUXDB_DATABASE}
|
||||||
|
depends_on:
|
||||||
|
influxdb-v3-core:
|
||||||
|
condition: service_healthy
|
||||||
|
networks:
|
||||||
|
- senseops
|
||||||
|
|
||||||
grafana:
|
grafana:
|
||||||
image: grafana/grafana:latest
|
image: grafana/grafana:latest
|
||||||
container_name: grafana
|
container_name: grafana
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "${GRAFANA_PORT}:3000"
|
- '${GRAFANA_PORT}:3000'
|
||||||
environment:
|
environment:
|
||||||
- GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER}
|
- GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER}
|
||||||
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD}
|
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD}
|
||||||
|
- GF_AUTH_ANONYMOUS_ENABLED=true
|
||||||
|
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
|
||||||
volumes:
|
volumes:
|
||||||
- ./grafana/data:/var/lib/grafana
|
- ./test_data/v3/grafana/data:/var/lib/grafana
|
||||||
|
- ./grafana/provisioning/datasources/datasource_v3.yaml:/etc/grafana/provisioning/datasources/datasource.yaml
|
||||||
|
- ./grafana/provisioning/dashboards/dashboard.yaml:/etc/grafana/provisioning/dashboards/dashboard.yaml
|
||||||
|
- ./grafana/dashboards:/var/lib/grafana/dashboards
|
||||||
depends_on:
|
depends_on:
|
||||||
# Or switch to influxdb3-enterprise as needed
|
influxdb-v3-core:
|
||||||
- influxdb-v3-core
|
condition: service_healthy
|
||||||
networks:
|
networks:
|
||||||
- senseops
|
- senseops
|
||||||
|
|
||||||
|
|||||||
272
docs/docker-compose/grafana/dashboards/butler_sos_test.json
Normal file
272
docs/docker-compose/grafana/dashboards/butler_sos_test.json
Normal file
@@ -0,0 +1,272 @@
|
|||||||
|
{
|
||||||
|
"annotations": {
|
||||||
|
"list": [
|
||||||
|
{
|
||||||
|
"builtIn": 1,
|
||||||
|
"datasource": {
|
||||||
|
"type": "grafana",
|
||||||
|
"uid": "-- Grafana --"
|
||||||
|
},
|
||||||
|
"enable": true,
|
||||||
|
"hide": true,
|
||||||
|
"iconColor": "rgba(0, 211, 255, 1)",
|
||||||
|
"name": "Annotations & Alerts",
|
||||||
|
"type": "dashboard"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"description": "Verifies that the Butler SOS stack (Butler SOS, InfluxDB and Grafana) is working correctly.",
|
||||||
|
"editable": true,
|
||||||
|
"fiscalYearStartMonth": 0,
|
||||||
|
"graphTooltip": 0,
|
||||||
|
"id": 0,
|
||||||
|
"links": [],
|
||||||
|
"panels": [
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "influxdb",
|
||||||
|
"uid": "bf7gj7evi44xsd"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisBorderShow": false,
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"barAlignment": 0,
|
||||||
|
"barWidthFactor": 0.6,
|
||||||
|
"drawStyle": "line",
|
||||||
|
"fillOpacity": 0,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"insertNulls": false,
|
||||||
|
"lineInterpolation": "linear",
|
||||||
|
"lineWidth": 1,
|
||||||
|
"pointSize": 5,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"showPoints": "auto",
|
||||||
|
"showValues": false,
|
||||||
|
"spanNulls": false,
|
||||||
|
"stacking": {
|
||||||
|
"group": "A",
|
||||||
|
"mode": "none"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 9,
|
||||||
|
"w": 24,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"id": 1,
|
||||||
|
"options": {
|
||||||
|
"legend": {
|
||||||
|
"calcs": [],
|
||||||
|
"displayMode": "list",
|
||||||
|
"placement": "bottom",
|
||||||
|
"showLegend": true
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"hideZeros": false,
|
||||||
|
"mode": "single",
|
||||||
|
"sort": "none"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pluginVersion": "12.2.0",
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"alias": "Heap total",
|
||||||
|
"datasource": {
|
||||||
|
"type": "influxdb",
|
||||||
|
"uid": "bf7gj7evi44xsd"
|
||||||
|
},
|
||||||
|
"groupBy": [
|
||||||
|
{
|
||||||
|
"params": ["$__interval"],
|
||||||
|
"type": "time"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"params": ["none"],
|
||||||
|
"type": "fill"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"measurement": "butlersos_memory_usage",
|
||||||
|
"orderByTime": "ASC",
|
||||||
|
"policy": "default",
|
||||||
|
"refId": "Heap total",
|
||||||
|
"resultFormat": "time_series",
|
||||||
|
"select": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"params": ["heap_total"],
|
||||||
|
"type": "field"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"params": [],
|
||||||
|
"type": "mean"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alias": "Heap used",
|
||||||
|
"datasource": {
|
||||||
|
"type": "influxdb",
|
||||||
|
"uid": "bf7gj7evi44xsd"
|
||||||
|
},
|
||||||
|
"groupBy": [
|
||||||
|
{
|
||||||
|
"params": ["$__interval"],
|
||||||
|
"type": "time"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"params": ["none"],
|
||||||
|
"type": "fill"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hide": false,
|
||||||
|
"measurement": "butlersos_memory_usage",
|
||||||
|
"orderByTime": "ASC",
|
||||||
|
"policy": "default",
|
||||||
|
"refId": "Heap used",
|
||||||
|
"resultFormat": "time_series",
|
||||||
|
"select": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"params": ["heap_used"],
|
||||||
|
"type": "field"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"params": [],
|
||||||
|
"type": "mean"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alias": "Process memory",
|
||||||
|
"datasource": {
|
||||||
|
"type": "influxdb",
|
||||||
|
"uid": "bf7gj7evi44xsd"
|
||||||
|
},
|
||||||
|
"groupBy": [
|
||||||
|
{
|
||||||
|
"params": ["$__interval"],
|
||||||
|
"type": "time"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"params": ["none"],
|
||||||
|
"type": "fill"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hide": false,
|
||||||
|
"measurement": "butlersos_memory_usage",
|
||||||
|
"orderByTime": "ASC",
|
||||||
|
"policy": "default",
|
||||||
|
"refId": "Process memory",
|
||||||
|
"resultFormat": "time_series",
|
||||||
|
"select": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"params": ["process_memory"],
|
||||||
|
"type": "field"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"params": [],
|
||||||
|
"type": "mean"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alias": "External",
|
||||||
|
"datasource": {
|
||||||
|
"type": "influxdb",
|
||||||
|
"uid": "bf7gj7evi44xsd"
|
||||||
|
},
|
||||||
|
"groupBy": [
|
||||||
|
{
|
||||||
|
"params": ["$__interval"],
|
||||||
|
"type": "time"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"params": ["none"],
|
||||||
|
"type": "fill"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hide": false,
|
||||||
|
"measurement": "butlersos_memory_usage",
|
||||||
|
"orderByTime": "ASC",
|
||||||
|
"policy": "default",
|
||||||
|
"refId": "External",
|
||||||
|
"resultFormat": "time_series",
|
||||||
|
"select": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"params": ["external"],
|
||||||
|
"type": "field"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"params": [],
|
||||||
|
"type": "mean"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"tags": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "New panel",
|
||||||
|
"type": "timeseries"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"preload": false,
|
||||||
|
"schemaVersion": 42,
|
||||||
|
"tags": [],
|
||||||
|
"templating": {
|
||||||
|
"list": []
|
||||||
|
},
|
||||||
|
"time": {
|
||||||
|
"from": "now-30m",
|
||||||
|
"to": "now"
|
||||||
|
},
|
||||||
|
"refresh": "10s",
|
||||||
|
"timepicker": {},
|
||||||
|
"timezone": "browser",
|
||||||
|
"title": "Butler SOS Docker container test dashboard",
|
||||||
|
"uid": "adjpfhm",
|
||||||
|
"version": 2
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: 1
|
||||||
|
|
||||||
|
providers:
|
||||||
|
- name: 'Default'
|
||||||
|
orgId: 1
|
||||||
|
folder: ''
|
||||||
|
type: file
|
||||||
|
disableDeletion: false
|
||||||
|
editable: true
|
||||||
|
options:
|
||||||
|
path: /var/lib/grafana/dashboards
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: 1
|
||||||
|
|
||||||
|
datasources:
|
||||||
|
- name: senseops
|
||||||
|
type: influxdb
|
||||||
|
access: proxy
|
||||||
|
url: http://influxdb-v1:8086
|
||||||
|
database: senseops
|
||||||
|
user: goran
|
||||||
|
secureJsonData:
|
||||||
|
password: mysecret
|
||||||
|
jsonData:
|
||||||
|
httpMode: GET
|
||||||
|
uid: bf7gj7evi44xsd
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: 1
|
||||||
|
|
||||||
|
datasources:
|
||||||
|
- name: Butler SOS
|
||||||
|
type: influxdb
|
||||||
|
access: proxy
|
||||||
|
url: http://influxdb:8086
|
||||||
|
database: butler-sos
|
||||||
|
jsonData:
|
||||||
|
httpMode: GET
|
||||||
|
httpHeaderName1: Authorization
|
||||||
|
secureJsonData:
|
||||||
|
httpHeaderValue1: Token butlersos-token
|
||||||
|
uid: bf7gj7evi44xsd
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: 1
|
||||||
|
|
||||||
|
datasources:
|
||||||
|
- name: Butler SOS
|
||||||
|
type: influxdb
|
||||||
|
access: proxy
|
||||||
|
url: http://influxdb-v3-core:8181
|
||||||
|
database: butler-sos
|
||||||
|
jsonData:
|
||||||
|
httpMode: GET
|
||||||
|
httpHeaderName1: Authorization
|
||||||
|
secureJsonData:
|
||||||
|
httpHeaderValue1: Token apiv3_99RtQcbFuBYP_wO1fK5aHvIBQqOqOVRAV4cAqAJxm_gpQRUFIpQkONXWfG0cBt_1wOI21Dc2l5K2izMa3gW7mA
|
||||||
|
uid: bf7gj7evi44xsd
|
||||||
@@ -965,7 +965,7 @@ Configuration File:
|
|||||||
this.logger.info(`INFLUXDB3 INIT: Port: ${port}`);
|
this.logger.info(`INFLUXDB3 INIT: Port: ${port}`);
|
||||||
this.logger.info(`INFLUXDB3 INIT: Database: ${database}`);
|
this.logger.info(`INFLUXDB3 INIT: Database: ${database}`);
|
||||||
this.logger.info(`INFLUXDB3 INIT: Token: ${tokenPreview}`);
|
this.logger.info(`INFLUXDB3 INIT: Token: ${tokenPreview}`);
|
||||||
this.logger.info(`INFLUXDB3 INIT: Socket timeout: ${timeout}ms`);
|
this.logger.info(`INFLUXDB3 INIT: Socket timeout: ${writeTimeout}ms`);
|
||||||
this.logger.info(`INFLUXDB3 INIT: Query timeout: ${queryTimeout}ms`);
|
this.logger.info(`INFLUXDB3 INIT: Query timeout: ${queryTimeout}ms`);
|
||||||
} catch (testErr) {
|
} catch (testErr) {
|
||||||
this.logger.warn(
|
this.logger.warn(
|
||||||
@@ -978,7 +978,7 @@ Configuration File:
|
|||||||
this.logger.info(`INFLUXDB3 INIT: Port: ${port}`);
|
this.logger.info(`INFLUXDB3 INIT: Port: ${port}`);
|
||||||
this.logger.info(`INFLUXDB3 INIT: Database: ${database}`);
|
this.logger.info(`INFLUXDB3 INIT: Database: ${database}`);
|
||||||
this.logger.info(`INFLUXDB3 INIT: Token: ${tokenPreview}`);
|
this.logger.info(`INFLUXDB3 INIT: Token: ${tokenPreview}`);
|
||||||
this.logger.info(`INFLUXDB3 INIT: Socket timeout: ${timeout}ms`);
|
this.logger.info(`INFLUXDB3 INIT: Socket timeout: ${writeTimeout}ms`);
|
||||||
this.logger.info(`INFLUXDB3 INIT: Query timeout: ${queryTimeout}ms`);
|
this.logger.info(`INFLUXDB3 INIT: Query timeout: ${queryTimeout}ms`);
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
Reference in New Issue
Block a user