$PUNDAT_ENTITY) with subsscription access to each stream it wants to archive. Create the entity and place it in a known location that you don't mind being mounted into a docker container (such as
$PUNDAT_ENTITY) to have it discover archive requests
$PUNDAT_ENTITYalso needs permission to operate on a namespace (
$GILES_BW_NAMESPACE). The DoT to grant is
BTRDB_SERVER: this is the local address and port of your BTrDB endpoint
MONGO_SERVER: this is the local address and port of a MongoDB server (does not need persistent storage)
GILES_BW_ENTITY: this is the container-local path to the entity Pundat should use
GILES_BW_NAMESPACE: this is the namespace Pundat operates on
GILES_BW_ADDRESS: this is the address of the BOSSWAVE agent Pundat should use. If Pundat is running in a Docker container (either through Kubernetes or otherwise), then we recommend configuring the BOSSWAVE agent to listen on the default Docker interface. In the BOSSWAVE config file
/etc/bw2/bw2.ini, make sure you have the following lines:
GILES_BW_LSTEN: this is a space-separated list of all of the namespaces Pundat wants to subscribe to
COLLECTION_PREFIX: this is the prefix Pundat adds to its collection names for MongoDB, which helps avoid collisions.
gtfierro/pundat:latest(most recent version is
gtfierro/pundat:0.3.4). You can build this container yourself by running
make containerin a cloned copy of the Pundat repository.
key = valuepairs)
!meta/archiverequestkey (using the subscription
<namespace/*/!meta/archiverequest). These messages, which take the form of ARs or Archive Requests (described below) are by convention persisted on URIs. ARs are added/removed/inspected using the
OBexpression used to extract the time to be associated with the value. If provided, the archiver uses the
TimeParsefield to determine how to parse the extracted value. If this field is not provided, then the archiver just associates the server's current timestamp with the received record
URIMatchis a regular expression executed against each unique URI that pundat sees when subscribing to
ArchiveURI. Capture groups are supported.
URIReplaceis a rewrite of the URI that gets used as the stream's name when it is inserted into BTrDB. By default, Pundat will use the full URI of the subscription, which can get unwieldy.
archive.ymlfile already written and it should be a simple matter to edit these for your own deployments.
archive.yml. This file contains archive requests and other relevant configuration.
archive.ymlfile that contains all of the relevant components. This archive file is for a hypothetical service that publishes data for several sensors on URIs like
scratch.ns/service/s.sensor/<sensorname>/i.board/signal/reading; we want to extract the "Supply Air Flow" and "Supply Air Temperature Setpoint" fields from the published messages for all sensors.
sensor_archive.yml, we can attach the Archive Requests using
addreqwhen specifying the archive YAML file, or just use the
nukereqcommand on a URI to remove all ARs on that URI.
pundat scan: this locates the base URI of an archiver on a given namespace. This is helpful for liveness checks
pundat grantverify and grant permission for using the archiver to a BOSSWAVE entity
pundat rangechecks which ranges of data a BOSSWAVE entity can see