Report deployment and storage environment data in the usage report - #5828
Open
johnsimons wants to merge 1 commit into
Open
Report deployment and storage environment data in the usage report#5828johnsimons wants to merge 1 commit into
johnsimons wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The usage report already carries throughput, versions and whether audit and monitoring are in
use. It says nothing about how the instance is actually deployed or what it stores data in, so
questions like "how many customers run in containers", "who has moved off embedded RavenDB" or
"is anyone using S3 body storage with an IAM role" cannot be answered from the reports we receive.
This adds environment data covering the host, the persistence, the body storage and the
instance's configuration posture.
Keys
Host.Model(Container / WindowsService / Console),Host.Orchestrator,Host.OSPlatform,Host.OSVersion,Host.Architecture,Host.RuntimeVersion,Host.ProcessorCount,Host.AvailableMemoryGBPersistence.Type,Persistence.RavenServer(Embedded / External),Persistence.Hosting,Persistence.ServerVersion,Persistence.FullTextSearchPersistence.BodyStorage.Type,Persistence.BodyStorage.Auth,Limits.MaxBodySizeToStoreSecurity.Authentication,Security.RoleBasedAuthorization,Security.Https,Features.MessageEditing,Features.ExternalIntegrationsPublishing,Features.ForwardErrorMessages,Features.EmailNotifications,Retention.ErrorHours,Retention.AuditHours,Retention.EventsHoursKeys are dotted strings, following the
Features.IntegratedServicePulsekey that was alreadythere.
EnvironmentDataTypeis left alone rather than grown, so adding a datum no longer meanschanging a contract.
No customer data
Every value is a fixed enum member, a boolean, a count or a version number. Nothing derived from
a host name, URL, connection string, bucket or container name, managed identity client id, file
path, machine name or endpoint name is emitted.
RuntimeInformation.OSDescriptionisdeliberately not used because on Linux it carries a distro build string that identifies a
specific image. An acceptance test asserts the report carries no value matching the machine name,
and a unit test asserts no S3 bucket name or access key reaches the report.
Cloud database detection
Persistence.Hostingis resolved by asking the engine where it can, and by classifying theconfigured host name where it cannot.
SQL Server answers definitively through
SERVERPROPERTY('EngineEdition'), where 5, 8 and 11 meanAzure SQL Database, Managed Instance and Synapse. PostgreSQL has no equivalent, so the probe
checks for the administrative roles that each managed offering creates and a self-hosted server
does not:
azure_pg_admin,rds_superuserandcloudsqlsuperuser. Both probes run with a fivesecond command timeout and fall back to host suffix matching on any failure, so a report is never
held up by a database that will not answer.
Persistence.ServerVersionis the engine major version only. SQL Server's minor is always zero,and Azure SQL Database reports major 12 regardless of the engine actually running, so
major.minorwould add a digit that carries no information. Patch level, if it is ever wanted,belongs in a separate key sourced from
ProductUpdateLevel.