Crate telemetry_service
source · [−]Expand description
Kubos Service for interacting with the telemetry database.
Configuration
The service can be configured in the /etc/kubos-config.toml
with the following fields:
[telemetry-service]
database = "/var/lib/telemetry.db"
[telemetry-service.addr]
ip = "127.0.0.1"
port = 8020
Where database
specifies the path to the telemetry database file, ip
specifies the
service’s IP address, and port
specifies the port on which the service will be
listening for UDP packets.
Starting the Service
The service should be started automatically by its init script, but may also be started manually:
$ telemetry-service
Listening on: 127.0.0.1:8020
Panics
Attempts to grab database path from Configuration and will panic!
if not found.
Attempts to connect to database at provided path and will panic!
if connection fails.
Attempts to create telemetry table and will panic!
if table creation fails.
GraphQL Schema
type Entry {
timestamp: Integer!
subsystem: String!
parameter: String!
value: Float!
}
query ping: "pong"
query telemetry(timestampGe: Integer, timestampLe: Integer, subsystem: String, parameter: String, parameters: [String]): Entry
query routedTelemetry(timestampGe: Integer, timestampLe: Integer, subsystem: String, parameter: String, parameters: [String], output: String!, compress: Boolean = true): String!
mutation insert(timestamp: Integer, subsystem: String!, parameter: String!, value: String!):{ success: Boolean!, errors: String! }
Example Queries
Select all attributes of all telemetry entries
{
telemetry {
timestamp,
subsystem,
parameter,
value
}
}
Select all attributes of all telemetry entries for the eps subsystem
{
telemetry(subsystem: "eps") {
timestamp,
subsystem,
parameter,
value
}
}
Select all attributes of all telemetry entries for the voltage parameter of the eps subsystem
{
telemetry(subsystem: "eps", parameter: "voltage") {
timestamp,
subsystem,
parameter,
value
}
}
Select all attributes of all telemetry entries for the voltage and current parameters of the eps subsystem
{
telemetry(subsystem: "eps", parameters: ["voltage", "current"]) {
timestamp,
subsystem,
parameter,
value
}
}
Select all attributes of all telemetry entries occurring between the timestamps 100 and 200
{
telemetry(timestampGe: 101, timestampLe: 199) {
timestamp,
subsystem,
parameter,
value
}
}
Select all attributes of all telemetry entries occurring at the timestamp 101
{
telemetry(timestampGe: 101, timestampLe: 101) {
timestamp,
subsystem,
parameter,
value
}
}
Select ten entries occurring on or after the timestamp 1008
{
telemetry(limit: 10, timestampGe: 1008) {
timestamp,
subsystem,
parameter,
value
}
}
Repeat the previous query, but route the output to compressed file /home/system/recent_telem.tar.gz
{
telemetry(limit: 10, timestampGe: 1008, output: "/home/system/recent_telem")
}
Repeat the previous query, but route the output to uncompressed file /home/system/recent_telem
{
telemetry(limit: 10, timestampGe: 1008, output: "/home/system/recent_telem", compress: false)
}
Example Mutations
Insert a new entry, allowing the service to generate the timestamp
mutation {
insert(subsystem: "eps", parameter: "voltage", value: "4.0") {
success,
errors
}
}
Insert a new entry with a custom timestamp
mutation {
insert(timestamp: 533, subsystem: "eps", parameter: "voltage", value: "5.1") {
success,
errors
}
}
Delete all entries from the EPS subsystem occuring before timestamp 1003
mutation {
delete(subsystem: "eps", timestampLe: 1004) {
success,
errors,
entriesDeleted
}
}
Modules
Functions
main 🔒