$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 /etc/pundat
).$PUNDAT_ENTITY
) to have it discover archive requests$PUNDAT_ENTITY
also needs permission to operate on a namespace ($GILES_BW_NAMESPACE
). The DoT to grant isBTRDB_SERVER
: this is the local address and port of your BTrDB endpointMONGO_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 useGILES_BW_NAMESPACE
: this is the namespace Pundat operates onGILES_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 toCOLLECTION_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 container
in a cloned copy of the Pundat repository.<time, value>
pairs)key = value
pairs)!meta/archiverequest
key (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 pundat
command-line tool.string
+
and *
)string
string
string
OB
expression used to extract the numerical value from the published message. This will be interpreted as a 64-bit float.string
string
OB
expression used to extract the time to be associated with the value. If provided, the archiver uses the TimeParse
field 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 recordURIMatch
is a regular expression executed against each unique URI that pundat sees when subscribing to ArchiveURI
. Capture groups are supported. URIReplace
is 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.yml
file already written and it should be a simple matter to edit these for your own deployments.pundat
:archive.yml
. This file contains archive requests and other relevant configuration.archive.yml
file 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 usingrmreq
instead of addreq
when specifying the archive YAML file, or just use the nukereq
command 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 checkspundat check
and pundat grant
verify and grant permission for using the archiver to a BOSSWAVE entitypundat range
checks which ranges of data a BOSSWAVE entity can see