Telemetry
As a company and an open-source community, our goal is to enhance the overall user experience for everyone. Your feedback is invaluable in helping us achieve this objective. To facilitate this, we have implemented open-source telemetry, ensuring transparency and user privacy. Moving forward, we will collect completely anonymous telemetry data from Quine.
Your participation in our open source telemetry contributes to the continuous improvement of Quine. Thank you for helping us make Quine better every day.
Participating in our telemetry is anonymous, optional, and can be easily opted out.
Why is telemetry important
Our current process of collecting feedback is manual through community interactions, user interviews and community feedback. While this type of feedback is important, it cannot give us a big picture of how the community is interacting with Quine as a whole.
What are we collecting
Telemetry Object Schema:
{
"service": "string",
"version": "string",
"host_hash": "base64",
"event": "string",
"time": "ISO-8601",
"session_id": "UUID",
"uptime": "integer",
"persistor": "string",
"sources": [ "string" ],
"sinks": [ "string" ],
"recipe": "boolean",
"recipe_canonical_name": "string"
}
Example:
{
"service": "Quine",
"version": "{{quineVer}}",
"host_hash": "A5BYxvLAy0ksUzsKTRTvd8wPeKvMztUofYShogEc+4E=",
"event": "instance.start",
"time": "2024-01-18T15:14:11−07:00",
"session_id": "72f51619-828a-4d45-9866-f484f45da4f5",
"uptime": 10809,
"persistor": "rocksdb",
"sources": ["file", "kafka"],
"sinks": ["stdout", "http", "file"],
"recipe": false
}
Metric | Description |
---|---|
service |
This will always be “Quine”. |
version |
The release version of the quine.jar . |
host_hash |
An anonymous one way hash identifying your instance of Quine. |
event |
A type of event that we track. One of [ "instance.started", "instance.heartbeat" ] . |
time |
The local time of the event. |
session_id |
Unique identifier for the current invocation of Quine. |
uptime |
Number of seconds the current Quine instance has been active. |
persistor |
Which persistor is configured for use. Does not include any authentication information, only the type. |
sources |
Which sources are currently being used for ingests. Does not include any authentication information, only the type. |
sinks |
Which sinks are currently being used for standing query outputs. Does not include any authentication information, only the type. |
recipe |
Boolean value of whether a recipe is currently being used or not. |
recipe_canonical_name |
String value of the current named recipe being used, if there is one. |
Which events do we track
Quine’s open source telemetry currently only reports instance.started
and instance.heartbeat
events. More events might be included in the future. The release notes and this document will always descibe any telemetry events added in the future.
How do I inspect what Quine reports
You can inspect the telemetry object by setting the loglevel to INFO
loglevel you launch Quine.
java -Dthatdot.loglevel="INFO" -jar {{quine}}
2024-01-24 15:27:30,526 INFO [NotFromActor] [graph-service-pekko.actor.default-dispatcher-4] com.thatdot.quine.persistor.ExceptionWrappingPersistenceAgent - No version was set in the persistence backend for: core quine data, initializing to: Version(13.1.0)
2024-01-24 15:27:30,612 INFO [NotFromActor] [graph-service-pekko.actor.default-dispatcher-4] com.thatdot.quine.graph.GraphService - Adding a new local shard at idx: 0
2024-01-24 15:27:30,614 INFO [NotFromActor] [graph-service-pekko.actor.default-dispatcher-4] com.thatdot.quine.graph.GraphService - Adding a new local shard at idx: 1
2024-01-24 15:27:30,614 INFO [NotFromActor] [graph-service-pekko.actor.default-dispatcher-4] com.thatdot.quine.graph.GraphService - Adding a new local shard at idx: 2
2024-01-24 15:27:30,614 INFO [NotFromActor] [graph-service-pekko.actor.default-dispatcher-4] com.thatdot.quine.graph.GraphService - Adding a new local shard at idx: 3
2024-01-24 15:27:30,623 INFO [NotFromActor] [graph-service-pekko.actor.default-dispatcher-4] com.thatdot.quine.persistor.ExceptionWrappingPersistenceAgent - No version was set in the persistence backend for: Quine app state, initializing to: Version(1.2.0)
Graph is ready
2024-01-24 15:27:30,786 INFO [NotFromActor] [main] com.thatdot.quine.app.ImproveQuine$Enabled - Sending anonymous usage data: {
"event": "instance.started",
"service": "Quine",
"version": "{{quineVer}}",
"host_hash": "9PaNiOS3c9VZEStlT9zSn7iNgp4uBmjW0AmQgjsCCRw=",
"time": "2024-01-24T15:27:30.786545-06:00"
"session_id": "72f51619-828a-4d45-9866-f484f45da4f5",
"uptime": 0,
"persistor": "rocksdb",
"sources": ["file"],
"sinks": ["stdout", "http"],
"recipe": false
}
Quine web server available at http://127.0.0.1:8080
2024-01-24 15:42:32,786 INFO [NotFromActor] [graph-service-pekko.actor.default-dispatcher-4] com.thatdot.quine.app.ImproveQuine$TelemetryRequest - Sending anonymous usage data: {
"event": "instance.heartbeat",
"service": "Quine",
"version": "{{quineVer}}",
"host_hash": "9PaNiOS3c9VZEStlT9zSn7iNgp4uBmjW0AmQgjsCCRw=",
"time": "2024-01-24T15:42:32.786545-06:00",
"session_id": "72f51619-828a-4d45-9866-f484f45da4f5",
"uptime": 902,
"persistor": "rocksdb",
"sources": ["file", "kafka"],
"sinks": ["stdout", "http"],
"recipe": false
}
How to opt out
We added a config option help-make-quine-better
which defaults to true
when you first launch Quine. You can opt-out by adding a help-make-quine-better
config option to the quine.conf
file and setting it to false
.
Opting out of telemetry via system properties
java \
-Dquine.help-make-quine-better=false \
-jar {{ quine }}
Opting out of telemetry via configuration file
quine {
help-make-quine-better = false
}
java \
-Dconfig.file=quine.conf \
-jar {{ quine }}
Questions
Have questions about our telemetry? Please reach out to the team on Discord. We are happy to hear any feedback that you have!