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 telemetry for Quine, ensuring transparency and user privacy. The data we collect is completely anonymous.
Your participation in our open source telemetry contributes to the continuous improvement of Quine. Thank you for helping us make Quine better every day.
Participation in our telemetry is anonymous and optional (you may easily opt out).
Why is telemetry important?¶
Without telemetry, collecting feedback is entirely manual. We value gathering feedback through community interactions, user interviews and community feedback, but they alone cannot give us a complete picture of how the community is interacting with Quine.
What are we collecting?¶
Telemetry Event 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",
"recipe_info": {
"recipe_name_hash": "string",
"recipe_contents_hash": "string",
},
"api-key" "string",
}
Example:
{
"service": "Quine",
"version": "v1.8.2",
"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,
"recipe_canonical_name": null,
"recipe_info": null,
"api-key": null,
}
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. |
recipe_info |
An object comprising a hash of the recipe name and joined hashes of its contents, like ingestion and query definitions. |
api-key |
The API Key used in a trial, if a trial version is in use. |
Which events do we track?¶
Telemetry for Quine currently reports instance.started
and instance.heartbeat
events, which share a schema (above). More events might be included in the future. We endeavor to keep release notes and this document up-to-date regarding telemetry event types and details.
How do I inspect what Quine reports?¶
You can inspect the telemetry object by setting the loglevel to INFO
when you launch Quine.
Accessing Telemetry Logs¶
Quine is used for this example.
java -Dthatdot.loglevel="INFO" -jar quine-1.8.2.jar
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": "v1.8.2",
"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,
"recipe_canonical_name": null,
"recipe_info": null,
"api-key": null
}
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": "v1.8.2",
"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,
"recipe_canonical_name": null,
"recipe_info": null,
"api-key": null
}
How to opt out¶
We added a configuration option, quine.help-make-quine-better
, which defaults to true
when you first launch Quine. You can opt out by adding a quine.help-make-quine-better
configuration option to your CONF file and setting it to false
.
Quine is used for these examples. For other products, the configuration option is the same, but the JAR used would be different.
Opting out of telemetry via system properties¶
java \
-Dquine.help-make-quine-better=false \
-jar quine-1.8.2.jar
Opting out of telemetry via configuration file¶
quine {
help-make-quine-better = false
}
java \
-Dconfig.file=quine.conf \
-jar quine-1.8.2.jar
Questions¶
Have questions about our telemetry? Please reach out to the team on Discord. We are happy to hear any feedback that you have!