--- Butler-SOS: # All configuration items are mandatory, unless otherwise noted. # Logging configuration logLevel: debug # Log level. Possible log levels are silly, debug, verbose, info, warn, error fileLogging: true # true/false to enable/disable logging to disk file logDirectory: log # Subdirectory where log files are stored anonTelemetry: false # Can Butler SOS send anonymous data about what computer it is running on? # More info on whata data is collected: https://butler-sos.ptarmiganlabs.com/docs/about/telemetry/ # Please consider leaving this at true - it really helps future development of Butler SOS! # Heartbeats can be used to send "I'm alive" messages to some other tool, e.g. an infrastructure monitoring tool # The concept is simple: The remoteURL will be called at the specified frequency. The receiving tool will then know # that Butler SOS is alive. heartbeat: enable: false remoteURL: http://my.monitoring.server/some/path/ frequency: every 1 hour # https://bunkat.github.io/later/parsers.html#text # Docker health checks are used when running Butler SOS as a Docker container. # The Docker engine will call the container's health check REST endpoint with a set interval to determine # whether the container is alive/well or not. # If you are not running Butler SOS in Docker you can safely disable this feature. dockerHealthCheck: enable: false # Control whether a REST endpoint will be set up to serve Docker health check messages port: 12398 # Port the Docker health check service runs on (if enabled) # Uptime monitor uptimeMonitor: enable: true # Should uptime messages be written to the console and log files? frequency: every 15 minutes # https://bunkat.github.io/later/parsers.html#text logLevel: verbose # Starting at what log level should uptime messages be shown? storeInInfluxdb: butlerSOSMemoryUsage: true # Should data on Butler SOS' own memory use be stored in Infludb? instanceTag: DEV # Tag that can be used to differentiate data from multiple Butler SOS instances storeNewRelic: enable: false destinationAccount: - First NR account - Second NR account metric: dynamic: butlerMemoryUsage: enable: true # Should Butler SOS' memory/RAM usage be sent to New Relic? butlerUptime: enable: true # Should Butler SOS' uptime (how long since it was started) be sent to New Relic? attribute: static: # Static attributes/dimensions to attach to the data sent to New Relic. - name: metricType value: butler-sos-uptime - name: qs_service value: butler-sos - name: qs_environment value: prod dynamic: butlerVersion: enable: true # Should the Butler SOS version be included in the data sent to New Relic? # Credentials for third party systems that Butler SOS integrate with. # These can also be specified via command line parameters when starting Butler SOS. # Command line options takes precedence over settings in this config file. thirdPartyToolsCredentials: newRelic: # Array of New Relic accounts/insert keys. - accountName: First NR account insertApiKey: accountId: - accountName: Second NR account insertApiKey: accountId: # Track individual users opening/closing apps and starting/stopping sessions. # Requires log appender XML file(s) to be added to Sense server(s). userEvents: enable: true excludeUser: # Optional blacklist of users that should be disregarded when it comes to user events - directory: LAB userId: testuser1 - directory: LAB userId: testuser2 udpServerConfig: serverHost: dummy.merck.com # # Host/IP where user event server will listen for events from Sense portUserActivityEvents: 9997 # Port on which user event server will listen for events from Sense tags: # Tags are added to the data before it's stored in InfluxDB - tag: env value: DEV - tag: foo value: bar sendToMQTT: enable: false # Set to true if user events should be forwarded as MQTT messages postTo: # Control when and to which MQTT topics messages are sent everythingTopic: # Topic to which all user events are sent enable: true topic: qliksense/userevent sessionStartTopic: # Topic to which "session start" events are sent enable: true topic: qliksense/userevent/session/start sessionStopTopic: # Topic to which "session stop" events are sent enable: true topic: qliksense/userevent/session/stop connectionOpenTopic: # Topic to which "connection open" events are sent enable: true topic: qliksense/userevent/connection/open connectionCloseTopic: # Topic to which "connection close" events are sent enable: true topic: qliksense/userevent/connection/close sendToInfluxdb: enable: true # Set to true if user events should be stored in InfluxDB sendToNewRelic: enable: false # Should log events be sent to New Relic? destinationAccount: - First NR account - Second NR account scramble: true # Should user info (user directory and user ID) be scrambled before sent to NR? # Log events are used to capture Sense warnings, errors and fatals in real time logEvents: udpServerConfig: serverHost: # Host/IP where log event server will listen for events from Sense portLogEvents: 9996 # Port on which log event server will listen for events from Sense tags: - tag: env value: DEV - tag: foo value: bar source: engine: enable: false # Should log events from the engine service be handled? proxy: enable: false # Should log events from the proxy service be handled? repository: enable: false # Should log events from the repository service be handled? scheduler: enable: false # Should log events from the scheduler service be handled? sendToMQTT: enable: false # Should log events be sent as MQTT messages? baseTopic: qliksense/logevent # What topic should log events be forwarded to? postTo: baseTopic: true subsystemTopics: true # Should log events be sent to subtopics corresponding to the QSEoW subsystems where the events originated? sendToInfluxdb: enable: false # Should log events be stored in InfluxDB? sendToNewRelic: enable: false # Should log events be sent to New Relic? destinationAccount: - First NR account - Second NR account source: engine: enable: true # Should log events from the engine service be handled? logLevel: error: true # Should error level log events be handled by Butler SOS? warn: true # Should warning level log events be handled by Butler SOS? proxy: enable: true # Should log events from the proxy service be handled? logLevel: error: true # Should error level log events be handled by Butler SOS? warn: true # Should warning level log events be handled by Butler SOS? repository: enable: true # Should log events from the repository service be handled? logLevel: error: true # Should error level log events be handled by Butler SOS? warn: true # Should warning level log events be handled by Butler SOS? scheduler: enable: true # Should log events from the scheduler service be handled? logLevel: error: true # Should error level log events be handled by Butler SOS? warn: true # Should warning level log events be handled by Butler SOS? # Qlik Sense logging db config parameters logdb: enable: true # Items below are mandatory if logdb.enable=true pollingInterval: 60000 # How often (milliseconds) should Postgres log db be queried for warnings and errors? queryPeriod: 5 minutes # How far back should Butler SOS query for log entries? Default is 5 min host:sense.mycompany.com # E.g. 10.5.23.7 or sense.mycompany.com port: 4432 # 4432 if using default Sense setup qlogsReaderUser: qlogs_reader qlogsReaderPwd: postgres extractErrors: true # Should error level entries be extracted from log db into Influxdb? extractWarnings: true # Should warn level entries be extracted from log db into Influxdb? extractInfo: true # Should info level entries be extracted from log db into Influxdb? # Warning! Seting this to true will result in LOTS of log messages # being retrrieved by Butler SOS! # Certificates to use when connecting to Sense. Get these from the Certificate Export in QMC. cert: clientCert: D:\Install\OtherTools\butler-sos-win\certificates\client.pem clientCertKey: D:\Install\OtherTools\butler-sos-win\certificates\client_key.pem clientCertCA: D:\Install\OtherTools\butler-sos-win\certificates\root.pem clientCertPassphrase: # # If running Butler SOS in a Docker container, the cert paths MUST be the following # clientCert: /nodeapp/config/certificate/client.pem # clientCertKey: /nodeapp/config/certificate/client_key.pem # clientCertCA: /nodeapp/config/certificate/root.pem # clientCertPassphrase: # MQTT config parameters mqttConfig: enable: false # Items below are mandatory if mqttConfig.enable=true brokerHost: brokerPort: 1883 baseTopic: butler-sos/ # Default topic used if not not oherwise specified elsewhere. Should end with / # New Relic config # If enabled, select Butler SOS metrics will be sent to New Relic. newRelic: enable: false event: # There are different URLs depending on whther you have an EU or US region New Relic account. # The available URLs are listed here: https://docs.newrelic.com/docs/accounts/accounts-billing/account-setup/choose-your-data-center/ # # Note that the URL path should *not* be included in the url setting below! # As of this writing the valid options are # https://insights-collector.eu01.nr-data.net # https://insights-collector.newrelic.com url: https://insights-collector.eu01.nr-data.net header: # Custom http headers - name: X-My-Header value: Header value attribute: static: # Static attributes/dimensions to attach to the events sent to New Relic. - name: service value: butler-sos - name: environment value: prod dynamic: butlerSosVersion: enable: true # Should the Butler SOS version be included in the events sent to New Relic? metric: destinationAccount: - First NR account - Second NR account # There are different URLs depending on whther you have an EU or US region New Relic account. # The available URLs are listed here: https://docs.newrelic.com/docs/accounts/accounts-billing/account-setup/choose-your-data-center/ # As of this writing the options for the New Relic metrics API are # https://insights-collector.eu01.nr-data.net/metric/v1 # https://metric-api.newrelic.com/metric/v1 url: https://insights-collector.eu01.nr-data.net/metric/v1 # Where should uptime data be sent? header: # Custom http headers - name: X-My-Header value: Header value dynamic: engine: memory: # Engine RAM (free/committed/allocated). enable: true cpu: # Engine CPU. enable: true calls: # Total number of requests made to the engine. enable: true selections: # Total number of selections made to the engine. enable: true sessions: # Engine session metrics (active and total number of engine sessions). enable: true users: # Engine user metrics (active and total number of users in engine. enable: true saturated: # Engine saturation status (tracks whether engine has high or low load). enable: true apps: docCount: enable: true cache: cache: # Cache metrics. enable: true proxy: sessions: # Session metrics as reported by the Sense proxy service enable: true attribute: static: # Static attributes/dimensions to attach to the data sent to New Relic. - name: service value: butler-sos - name: environment value: prod dynamic: butlerSosVersion: enable: true # Should the Butler SOS version be included in the data sent to New Relic? # Prometheus config # If enabled, select Butler SOS metrics will be exposed on a Prometheus compatible URL from where they can be scraped. prometheus: enable: false # Default false host: # On what IP/FQDN should the Prometheus metrics be exposed? Default 0.0.0.0, i.e. all available IPs port: 9842 # Port for Prometheus endpoint. Default 9842 # Influx db config parameters influxdbConfig: enable: true # Items below are mandatory if influxdbConfig.enable=true hostIP: dummy.influxdb.com hostPort: 8086 # Optional. Default value=8086 auth: enable: true # Does influxdb instance require authentication (true/false)? username: abc # Username for Influxdb authentication. Mandatory if auth.enable=true password: '%Abc' # Password for Influxdb authentication. Mandatory if auth.enable=true dbName: dB_Space # Default retention policy that should be created in InfluxDB when Butler SOS creates a new database there. # Any data older than retention policy threshold will be purged from InfluxDB. retentionPolicy: name: 10d duration: 10d # Possible duration units here: https://docs.influxdata.com/influxdb/v1.8/query_language/spec/#durations # Control whether certain metrics are stored in InfluxDB or not # Use with caution! Enabling activeDocs, loadedDocs or inMemoryDocs may result in lots of data sent to InfluxDB. includeFields: activeDocs: false # Should data on what docs are active be stored in Influxdb (true/false)? loadedDocs: false # Should data on what docs are loaded be stored in Influxdb (true/false)? inMemoryDocs: false # Should data on what docs are in memory be stored in Influxdb (true/false)? # Extract app names appNames: enableAppNameExtract: true # Extract app names in addition to app IDs (tue/false)? extractInterval: 60000 # How often (milliseconds) should app names be extracted? hostIP: dummy.qlik.com # What Sense server should be queried for app names? # Sessions per virtual proxy userSessions: enableSessionExtract: true # Query unique user IDs of what users have sessions open (true/false)? # Items below are mandatory if enableSessionExtract=true pollingInterval: 30000 # How often (milliseconds) should session data be polled? excludeUser: # Optional blacklist of users that should be disregarded when it comes to session monitoring. # Blacklist is only applied to data in InfluxDB. All session data will be sent to MQTT. - directory: LAB userId: testuser1 - directory: LAB userId: testuser2 serversToMonitor: pollingInterval: 30000 # How often (milliseconds) should the healthcheck API be polled? # If false, Butler SOS will accept TLS certificates on the server without verifying them with the CA. # If true, data will only be retrieved from the Sense server if that server's TLS cert verifies # successfuully against the list of CAs available on the computer where Butler SOS is running. rejectUnauthorized: true # List of extra tags for each server. Useful for creating more advanced Grafana dashboards. # Each server below MUST include these tags in its serverTags property. # The tags below are just examples - define your own as needed # These tags will also be used to label data exposed on the Prometheus endpoint (if it is enabled) # NOTE: Prometheus only allows label names consisting of ASCII letters, numbers, as well as underscores. They must match the regex [a-zA-Z_][a-zA-Z0-9_]*. # I.e. if the Prometheus endpoint is enabled, the tag names below must follow the label naming standard of Prometheus. serverTagsDefinition: - server_group - serverLocation - server_type - serverBrand # Sense Servers that should be queried for healthcheck data servers: - host: 10.34.3.45:4747 #dummy.qlik.com:4747 # Example: 10.34.3.45:4747 serverName: dummy.qlik.com serverDescription: dummy logDbHost: rds.amazonaws.com userSessions: enable: true # Items below are mandatory if userSessions.enable=true host: 10.34.3.45:4243 #dummy.qlik.com:4243 # Example: 10.34.3.45:4243 virtualProxies: - virtualProxy: / # Default virtual proxy # - virtualProxy: /hdr # "hdr" virtual proxy # - virtualProxy: /sales # "sales" virtual proxy serverTags: server_group: SBX serverLocation: US server_type: virtual serverBrand: AWS # - host: :4747 # Example: 10.34.3.46:4747 # serverName: # serverDescription: # logDbHost: # userSessions: # enable: true # # Items below are mandatory if userSessions.enable=true # host: :4243 # Example: 10.34.3.46:4243 # virtualProxies: # - virtualProxy: /finance # "finance" virtual proxy # serverTags: # server_group: PROD # serverLocation: Europe # server_type: physical # serverBrand: HP