---
title: Base collector
slug: reference/base-collector
docTags: 
createdAt: 2025-09-10T13:46:20.472Z
---

The base collector is Factry's collector framework. It contains all common functionality for collectors:

- The commands for installation and upgrades
- The configuration retrieval logic from Factry Historian
- Store-and-forward mechanisms
- Filtering and compression techniques

:::hint{type="info"}
As such, this page serves as a reference for settings that are shared across all collector types. It is not available for download.
:::

The default values will be sufficient in most cases.

### Logging

### LogLevel

**Description**: Specifies the log level, only messages with the configured log level will be visible in the system logs and sent to the historian.
**Default**: info

**Log levels**

- trace
- debug
- info

Higher log levels will always be sent to the historian.

### Logging (windows only)

### LogSize

**Description**: The maximum size that a single log file can grow to before it is rotated.
**Default**: 100

### LogFileMax

**Description**: The number of logfiles that will be kept.
**Default**: 10

### LogFileDays

**Description**: The maximum age an archived logfile may have before it is deleted.
**Default**: 10

### Windows

### PriorityClass

**Description**: The priority class for the process. Valid values are NORMAL\_PRIORITY\_CLASS, ABOVE\_NORMAL\_PRIORITY\_CLASS, HIGH\_PRIORITY\_CLASS, REALTIME\_PRIORITY\_CLASS.
**Default**: ABOVE\_NORMAL\_PRIORITY\_CLASS

[More info](https://docs.microsoft.com/en-us/windows/win32/procthread/scheduling-priorities) about the PRIORITY\_CLASS.

### Buffer

The buffer keeps a set amount of points in memory and when this fills up starts writing to a file.
It will periodically process the buffer, from file and then memory, by sending the points to the historian.

### BufferProcessInterval

**Description**: The interval in milliseconds that the buffer processes the buffer.
**Default**: 250

### BufferMaxBatchSize

**Description**: The maximum size of a batch in the buffer.
**Default**: 5000

### BufferMaxBatches

**Description**: The maximum amount of batches the buffer will keep in memory.
**Default**: 20

### BufferDiskBatches

**Description**: The maximum amount of batches that will be written to a buffer file.
**Default**: 100

### BufferMinFreeDiskSpace

**Description**: The buffer wont write to more files if the minimum free disk space is reached.
**Default**: 2GB

:::hint{type="info"}
The limit cannot be switched off. The value is a byte size such as `2GB` or `500MB`; a negative value is rejected and the default of 2GB is used instead.
:::

### BufferMaxDiskSpace

**Description**: The maximum disk space that the buffer files may take up. Default no limit.
**Default**: 0MB

:::hint{type="info"}
0, the default, means no limit. A negative value cannot be entered.
:::

### Communication

### CompressionLevel

**Description**: The compression level GRPC uses, for default compression. 0 disables compression, 1 is fastest and the default, 9 is most compressed.
**Minimum**: 0
**Maximum**: 9
**Default**: 1

### GRPCMaxMessageSize

**Description**: The maximum message size for GRPC messages.
**Default**: 64MB

### GRPCCallTimeout

**Description**: The deadline for a single gRPC operation towards the Historian: one unary call, or one send, receive or close on a stream. Accepts a duration string. Raise it if registering a full `BufferMaxBatchSize` batch of measurements times out.
**Default**: 2m

### Ticker

The ticker is used by collectors that poll measurements, like the OPC-UA collector.
This ticker determines how fast the measurements can polled and how accurate it needs to be.

Polled measurements can’t be polled at a lower interval than the ticker.

### TickerInterval

**Description**: The interval for the base ticker in milliseconds.
**Default**: 1000

### TickerResolution

**Description**: The resolution for the base ticker in milliseconds. Maximum 1/10th of the the interval.
**Default**: 25

### TickerMaxDrift

**Description**: The maximum drift a tick may have in milliseconds. Must be lower than the interval.
**Default**: 125

### Other

### AlternativeTimezone

**Description**: The timezone to reinterpret all timestamps in, including those on statistics and logs. The name is taken to be a location name corresponding to a file in the IANA Time Zone database.
**Default**: /

### SourceTimezone

**Description**: Strips the timezone off incoming point timestamps and reinterprets them in the configured timezone. Unlike `AlternativeTimezone` this applies to data points only, not to statistics and logs.
**Default**: empty

### HAPollingInterval

**Description**: The interval in milliseconds at which the backup collector polls the main collector’s health.
**Default**: 1000

### AllowedFutureDuration

**Description**: Defines the maximum duration into the future from the current time (collector’s perspective) that a source timestamp is considered valid.
**Default**: /

### AllowedPast

**Description**: Defines the earliest allowable point in time for source timestamps. This can be specified either as a fixed timestamp (e.g., 2023-07-01T00:00:00Z) or as a duration in the past relative to the current time (e.g., 1w for 1 week ago).
**Default**: /

### BadTimestampAction

**Description**: Specifies the action to take when a timestamp is found to be outside the allowed ranges. Discard: the point is discarded. SendWithCurrent: the point is sent with the current timestamp and BadTimestampOutOfRange instead.
**Default**: Discard

### StatusGood

**Description**: A comma separated list of status strings that will be interpreted as a Good status. Escaping is possible with a backslash.

### TerminationGracePeriod

**Description**: duration that determines how long a collector will attempt to shut down cleanly before being forcefully shut down. This is meant as a last-resort measure to ensure collectors never hang indefinitely during shutdown.
**Default**: 5m

### Compression: swinging door and noise filtering

**Swinging Door compression** reduces the number of points sent by only emitting points when the signal deviates from a trend line by a certain tolerance.

**Noise&#x20;**(deadband) **filtering**  drops small changes in numeric signals to reduce noise and data volume.&#x20;

These settings apply at the collector level unless overridden at the measurement level by setting either the SwingingDoorOverride or the NoiseFilterOverride value to true.

### SwingingDoorEnabled

**Description**: Enable Swinging Door compression at collector level.
**Default**: false

### SwingingDoorTolerance

**Description**: Absolute tolerance. Emits a point when deviation from the current interpolated line is greater than or equal to this value.&#x20;
0 means not set.&#x20;
Ignored when SwingingDoorTolerancePercent is non-zero and minValue and maxValue are set in engineering specs.
**Default**: 0.0

### SwingingDoorTolerancePercent

**Description**: Percent tolerance of engineering specs span (maxValue - minValue).  Takes precedence over \`SwingingDoorTolerance\`.&#x20;
'0%' means not set.
**Example:** '5%'
**Default value**: 0%

### SwingingDoorMaxTimeBetweenEmits

**Description**: Maximum time-gap between emitted points. This ensures occasionally samples are sent even when the signal is stable.&#x20;
'0s' disables the limit.
**Examples:&#x20;**'1h30m', '10s', '0s'
**Default value**: 0s

### NoiseFilterEnabled

**Description**: Enable the noise (deadband) filter at collector level.
**Default value**: false

### NoiseFilterTolerance

**Description**: Minimum absolute difference between consecutive points; smaller changes are dropped.&#x20;
For numeric signals this is the absolute difference. For booleans, strings and other datatypes any value above 0 drops a point whose value equals the last accepted value.&#x20;
0 means not set.&#x20;
Ignored when NoiseFilterTolerancePercent is non-zero and minValue and maxValue are set in engineering specs.
**Default value**: 0.0

### NoiseFilterTolerancePercent

**Description**: Minimum difference as a percent of engineering specs span (maxValue - minValue). Takes precedence over NoiseFilterTolerance. Numeric signals only. '0%' means not set.
**Example:** '2.5%'.
**Default value**: 0%

### NoiseFilterMaxTimeBetweenEmits

**Description**: Maximum time-gap between emitted points. This ensures occasionally samples are sent even when the signal is stable.
**Examples:&#x20;**'1h30m', '10s', '0s'
**Default value**: 0s

### NoiseFilterMinTimeBetweenPoints

**Description**: Minimum time-gap between emitted points.&#x20;
'0s' disables the limit. When both this and NoiseFilterMaxTimeBetweenEmits are set, this value has to be strictly smaller, otherwise the collector fails to apply its settings.
**Examples:&#x20;**'1m30s', '10s', '0.5s', '0s'
**Default value**: 0s

## Environment variables

This section describes all environment variables that can be configured.

### SERVER\_NAME\_OVERRIDE

**Default value**: historian.factry.local
**Description**: Only need to change this if using a different certificate.

### ALLOW\_INSECURE

**Default value**: false
**Description**: Allows a plaintext gRPC connection to the Historian server, without TLS. Ignored when a self-signed certificate is used.
