Core component section¶
The core components configuration section (core:
) of the configuration file contains all the different parameters that you can change to modify the behaviour of each core components.
Default values for the core section
...
core:
alerter:
alert_ttl: 90
constant_alert_fields:
- alert_id
- file
- ts
default_group_field: file.sha256
delay: 300
filtering_group_fields:
- file.name
- status
- priority
non_filtering_group_fields:
- file.md5
- file.sha1
- file.sha256
process_alert_message: assemblyline_core.alerter.processing.process_alert_message
dispatcher:
max_inflight: 1000
timeout: 900
expiry:
batch_delete: false
delay: 0
delete_storage: true
sleep_time: 15
workers: 20
ingester:
cache_dtl: 2
default_max_extracted: 100
default_max_supplementary: 100
default_resubmit_services: []
default_services: []
default_user: internal
description_prefix: Bulk
expire_after: 1296000
get_whitelist_verdict: assemblyline.common.signaturing.drop
incomplete_expire_after_seconds: 3600
incomplete_stale_after_seconds: 1800
is_low_priority: assemblyline.common.null.always_false
max_inflight: 500
sampling_at:
critical: 500000
high: 1000000
low: 10000000
medium: 2000000
stale_after_seconds: 86400
whitelist: assemblyline.common.null.whitelist
metrics:
apm_server:
server_url: null
token: null
elasticsearch:
cold: 30
delete: 90
host_certificates: null
hosts: null
unit: d
warm: 2
export_interval: 5
redis: &id001
host: 127.0.0.1
port: 6379
redis:
nonpersistent: *id001
persistent:
host: 127.0.0.1
port: 6380
scaler:
additional_labels: null
cpu_overallocation: 1
memory_overallocation: 1
overallocation_node_limit: null
service_defaults:
backlog: 100
environment:
- name: SERVICE_API_HOST
value: http://service-server:5003
- name: AL_SERVICE_TASK_LIMIT
value: inf
growth: 60
min_instances: 0
shrink: 30
...
Tip
Refer to the changing the configuration file documentation for more detail on where and how to change the configuration of the system.
Alerter¶
The configuration block at core.alerter
contains all the configuration parameters that the Assemblyline alerter component can take.
Here is an example configuration block with inline comments about the purpose of every single parameters:
Alerter configuration example
core:
alerter:
# Time to live in days for alerts in the system
alert_ttl: 90
# List of fields that should keep the same value in between normal and extended scan
# NOTE: You should not have to change those ever, this might get removed in the future
constant_alert_fields:
- alert_id
- file
- ts
# Default field to group alerts with in the UI
default_group_field: file.sha256
# Delay applied to the alert UI to leave time to the extended scan to complete
delay: 300
# List of fields allowed to be used for grouping that are present in every single alerts
filtering_group_fields:
- file.name
- status
- priority
# List of fields allowed to be used for grouping that are present only in a subset of alerts
non_filtering_group_fields:
- file.md5
- file.sha1
- file.sha256
# Python class used to process alert messages
# NOTE: This should not be changed unless you've built your own container with
# extra packages with alert processing capability
process_alert_message: assemblyline_core.alerter.processing.process_alert_message
Dispatcher¶
The configuration block at core.dispatcher
contains all the configuration parameters that the Assemblyline dispatcher component can take.
Here is an example configuration block with inline comments about the purpose of every single parameters:
Dispatcher configuration example
core:
dispatcher:
# Maximum amount of concurrent submission processing in the system
max_inflight: 1000
# Use in earlier version of dispatcher (To be removed)
timeout: 900
Expiry¶
The configuration block at core.expiry
contains all the configuration parameters that the Assemblyline expiry component can take.
Here is an example configuration block with inline comments about the purpose of every single parameters:
Expiry configuration example
core:
expiry:
# Perform delete operation in batch when changing day instead of throughout the day
# NOTE: Not deleting during the day will make the system more responsive during the day
# but will significantly reduce performance when changing to a new day until
# all delete operations are done.
batch_delete: false
# Delay in hours applied to the deletion schedule
delay: 0
# Should data expiry operation get rid of files as well?
delete_storage: true
# Time to sleep (sec) in between runs when there is not data to delete
sleep_time: 15
# Number of workers used to delete data
workers: 20
Ingester¶
The configuration block at core.ingester
contains all the configuration parameters that the Assemblyline ingester component can take.
Here is an example configuration block with inline comments about the purpose of every single parameters:
Ingester configuration example
core:
ingester:
# Number of days ingested files are valid in the ingester cache
cache_dtl: 2
# Maximum number of extracted files for ingested submissions
default_max_extracted: 100
# Maximum number of supplementary files for ingested submissions
default_max_supplementary: 100
# UNUSED
default_resubmit_services: []
default_services: []
default_user: internal
description_prefix: Bulk
# Seconds before a previously ingested file will be considered new again,
# the file will then be processed as if never seen before.
expire_after: 1296000
# Function import path for method to determine whitelisting.
# Files selected by this function will be dropped.
# See the default function for signature.
get_whitelist_verdict: assemblyline.common.signaturing.drop
# Special version of 'expire_after' applied when the previous run of a file had errors.
incomplete_expire_after_seconds: 3600
# Special version of 'stale_after_seconds' applied when the previous run of a file had errors.
incomplete_stale_after_seconds: 1800
# Function import path for method to determine low-priority filter.
# Files selected by this function will be forced to low-priority.
# See the default function for signature.
is_low_priority: assemblyline.common.null.always_false
# How many submissions should ingester try to submit concurrently.
max_inflight: 500
# How long should X queue be before the sampling (randomly dropping files) starts.
# At the given value sampling will start, and grow gradually more agressive until 3 times
# the value given. At 3 times the value given the system will proccess as many files
# as possible, and all others will be discarded.
sampling_at:
critical: 500000
high: 1000000
low: 10000000
medium: 2000000
# Seconds before a previously ingested file will be considered stale,
# the file will be reprocessed but the priority will be modified depending
# on the score from the previous run.
stale_after_seconds: 86400
# File whitelist import path. Imported object will be passed to the 'get_whitelist_verdict'
# function. The default verdict function will use this as a file whitelist.
# See default value for sample.
whitelist: assemblyline.common.null.whitelist
Metrics¶
The configuration block at core.metrics
contains all the configuration parameters that the Assemblyline metrics gathering components can take.
Here is an example configuration block with inline comments about the purpose of every single parameters:
Metrics configuration example
core:
metrics:
# APM specific settings
apm_server:
# URL to the APM server
server_url: null
# Token use to connect to the APM server
token: null
# Elasticsearch specific configuration
elasticsearch:
# Number of `unit` document spend time in ILM cold storage
cold: 30
# Number of `unit` after which documents are deleted using ILM
delete: 90
# Cert used to connect to Elastic
host_certificates: null
# List of Elatic hosts
hosts: null
# Time unit for ILM cold, warm and delete
unit: d
# Number of `unit` document spend time in ILM warm storage
warm: 2
# Interval at which the metrics components export their data
export_interval: 5
# Redis specific configuration
redis:
# Host of the redis server
host: 127.0.0.1
# Port of the redis server
port: 6379
Redis¶
The configuration block at core.redis
contains all the configuration parameters used by Assemblyline components to connect to redis.
Here is an example configuration block with inline comments about the purpose of every single parameters:
Redis configuration example
core:
redis:
# Configuration of the non-persistent redis (use mainly for messaging)
nonpersistent:
# Host of the redis server
host: 127.0.0.1
# Port of the redis server
port: 6379
# Configuration of the persistent redis (use mainly for task queuing)
persistent:
# Host of the redis server
host: 127.0.0.1
# Port of the redis server
port: 6380
Scaler¶
The configuration block at core.scaler
contains all the configuration parameters that the Assemblyline scaler component can take.
Here is an example configuration block with inline comments about the purpose of every single parameters:
Scaler configuration example
core:
scaler:
# Percentage of CPU overallocation, represented as 0-1 float
cpu_overallocation: 0.5
# Percentage of RAM overallocation, represented as 0-1 float
memory_overallocation: 1
# If the system has this many nodes or more overallocation is ignored
overallocation_node_limit: 3
# Additional labels to be applied to services('=' delimited)
additional_labels:
- env=production
service_defaults:
# How many files in a service queue are considered a backlog.
# This weights how important scaling up a service is relative
# to its queue. You probably don't want to change this.
backlog: 100
# List of environment variables set for all services.
# Usually used for deployment related environment variables.
# Service specific environent variables can be set in the
# service manifest or in the UI for a particular system.
environment:
- name: SERVICE_API_HOST
value: http://service-server:5003
- name: AL_SERVICE_TASK_LIMIT
value: inf
# Roughly how many seconds to wait before a service
# scales up to meet increased demand.
growth: 60
# The minimum number of instances of every service that
# should be kept running at all times.
min_instances: 0
# Roughly how many seconds to wait before a service scales down when
# instances are consistently idle.
shrink: 30