mirror of
https://github.com/hyperdxio/hyperdx
synced 2026-04-21 13:37:15 +00:00
Allows setting a custom setting prefix on a connection. When set in HyperDX and the ClickHouse settings, the HyperDX app will set a custom setting for each query. These are recorded in the query log and can be used to identify which user issues the query. ## Testing The commit also updates the local dev ClickHouse instance to support a custom setting prefix of `hyeprdx`. After running `make dev-up`, you should be able to edit the connection and set the the prefix to `hyperdx`. <img width="955" height="197" alt="Screenshot 2026-01-21 at 1 23 14 PM" src="https://github.com/user-attachments/assets/607fc945-d93f-4976-9862-3118b420c077" /> After saving, just allow the app to live tail a source like logs. If you connect to the ClickHouse database, you should then be able to run ``` SELECT query, Settings FROM system.query_log WHERE has(mapKeys(Settings), 'hyperdx_user') FORMAT Vertical ``` and then see a bunch of queries with the user set to your logged in user. ``` Row 46: ─────── query: SELECT Timestamp, ServiceName, SeverityText, Body, TimestampTime FROM default.otel_logs WHERE (TimestampTime >= fromUnixTimestamp64Milli(_CAST(1769022372269, 'Int64'))) AND (TimestampTime <= fromUnixTimestamp64Milli(_CAST(1769023272269, 'Int64'))) ORDER BY (TimestampTime, Timestamp) DESC LIMIT _CAST(0, 'Int32'), _CAST(200, 'Int32') FORMAT JSONCompactEachRowWithNamesAndTypes Settings: {'use_uncompressed_cache':'0','load_balancing':'in_order','log_queries':'1','max_memory_usage':'10000000000','cancel_http_readonly_queries_on_client_close':'1','parallel_replicas_for_cluster_engines':'0','date_time_output_format':'iso','hyperdx_user':'\'dan@hyperdx.io\''} ```
40 lines
778 B
TypeScript
40 lines
778 B
TypeScript
import mongoose, { Schema } from 'mongoose';
|
|
import { v4 as uuidv4 } from 'uuid';
|
|
|
|
type ObjectId = mongoose.Types.ObjectId;
|
|
|
|
export interface IConnection {
|
|
_id: ObjectId;
|
|
id: string;
|
|
host: string;
|
|
name: string;
|
|
password: string;
|
|
username: string;
|
|
team: ObjectId;
|
|
hyperdxSettingPrefix?: string;
|
|
}
|
|
|
|
export default mongoose.model<IConnection>(
|
|
'Connection',
|
|
new Schema<IConnection>(
|
|
{
|
|
team: {
|
|
type: mongoose.Schema.Types.ObjectId,
|
|
required: true,
|
|
ref: 'Team',
|
|
},
|
|
name: String,
|
|
host: String,
|
|
username: String,
|
|
password: {
|
|
type: String,
|
|
select: false,
|
|
},
|
|
hyperdxSettingPrefix: String,
|
|
},
|
|
{
|
|
timestamps: true,
|
|
toJSON: { virtuals: true },
|
|
},
|
|
),
|
|
);
|