update include timings

This commit is contained in:
nate 2026-04-10 09:33:14 +04:00
parent 27d478c41a
commit bc3f4dd032
5 changed files with 37 additions and 3 deletions

View File

@ -132,7 +132,7 @@ export const ingest = new Elysia()
`; `;
const [ping] = await sql` const [ping] = await sql`
INSERT INTO pings (monitor_id, checked_at, scheduled_at, jitter_ms, status_code, latency_ms, up, important, error, meta, region, run_id, cert_expiry_days, cert_issuer, response_size) INSERT INTO pings (monitor_id, checked_at, scheduled_at, jitter_ms, status_code, latency_ms, up, important, error, meta, region, run_id, cert_expiry_days, cert_issuer, response_size, dns_ms, tcp_ms, tls_ms)
VALUES ( VALUES (
${body.monitor_id}, ${body.monitor_id},
${checkedAt ?? sql`now()`}, ${checkedAt ?? sql`now()`},
@ -148,7 +148,10 @@ export const ingest = new Elysia()
${body.run_id ?? null}, ${body.run_id ?? null},
${body.cert_expiry_days ?? null}, ${body.cert_expiry_days ?? null},
${body.cert_issuer ?? null}, ${body.cert_issuer ?? null},
${body.response_size ?? null} ${body.response_size ?? null},
${body.dns_ms ?? null},
${body.tcp_ms ?? null},
${body.tls_ms ?? null}
) )
RETURNING * RETURNING *
`; `;
@ -200,6 +203,9 @@ export const ingest = new Elysia()
cert_expiry_days: t.Optional(t.Nullable(t.Number())), cert_expiry_days: t.Optional(t.Nullable(t.Number())),
cert_issuer: t.Optional(t.Nullable(t.String())), cert_issuer: t.Optional(t.Nullable(t.String())),
response_size: t.Optional(t.Nullable(t.Number())), response_size: t.Optional(t.Nullable(t.Number())),
dns_ms: t.Optional(t.Nullable(t.Number())),
tcp_ms: t.Optional(t.Nullable(t.Number())),
tls_ms: t.Optional(t.Nullable(t.Number())),
meta: t.Optional(t.Any()), meta: t.Optional(t.Any()),
region: t.Optional(t.Nullable(t.String())), region: t.Optional(t.Nullable(t.String())),
run_id: t.Optional(t.Nullable(t.String())), run_id: t.Optional(t.Nullable(t.String())),

View File

@ -121,6 +121,9 @@ pub async fn fetch_and_run(
cert_expiry_days: None, cert_expiry_days: None,
cert_issuer: None, cert_issuer: None,
response_size: None, response_size: None,
dns_ms: None,
tcp_ms: None,
tls_ms: None,
meta: None, meta: None,
region: Some(region_owned.to_string()), region: Some(region_owned.to_string()),
run_id: Some(run_id_owned.clone()), run_id: Some(run_id_owned.clone()),
@ -198,6 +201,9 @@ async fn run_check(monitor: &Monitor, scheduled_at: Option<String>, region: &str
cert_expiry_days: None, cert_expiry_days: None,
cert_issuer: None, cert_issuer: None,
response_size: None, response_size: None,
dns_ms: None,
tcp_ms: None,
tls_ms: None,
meta: None, meta: None,
region: Some(region.to_string()), region: Some(region.to_string()),
run_id: Some(run_id.to_string()), run_id: Some(run_id.to_string()),
@ -216,6 +222,9 @@ async fn run_check(monitor: &Monitor, scheduled_at: Option<String>, region: &str
cert_expiry_days: None, cert_expiry_days: None,
cert_issuer: None, cert_issuer: None,
response_size: None, response_size: None,
dns_ms: None,
tcp_ms: None,
tls_ms: None,
meta: None, meta: None,
region: Some(region.to_string()), region: Some(region.to_string()),
run_id: Some(run_id.to_string()), run_id: Some(run_id.to_string()),
@ -267,6 +276,9 @@ async fn run_check(monitor: &Monitor, scheduled_at: Option<String>, region: &str
cert_expiry_days: cr.cert_expiry_days, cert_expiry_days: cr.cert_expiry_days,
cert_issuer: cr.cert_issuer, cert_issuer: cr.cert_issuer,
response_size: Some(cr.body.len()), response_size: Some(cr.body.len()),
dns_ms: Some(cr.dns_ms),
tcp_ms: Some(cr.tcp_ms),
tls_ms: Some(cr.tls_ms),
meta: Some(meta), meta: Some(meta),
region: Some(region.to_string()), region: Some(region.to_string()),
run_id: Some(run_id.to_string()), run_id: Some(run_id.to_string()),

View File

@ -51,6 +51,9 @@ pub struct PingResult {
pub cert_expiry_days: Option<i64>, pub cert_expiry_days: Option<i64>,
pub cert_issuer: Option<String>, pub cert_issuer: Option<String>,
pub response_size: Option<usize>, pub response_size: Option<usize>,
pub dns_ms: Option<u64>,
pub tcp_ms: Option<u64>,
pub tls_ms: Option<u64>,
pub meta: Option<Value>, pub meta: Option<Value>,
pub region: Option<String>, pub region: Option<String>,
pub run_id: Option<String>, pub run_id: Option<String>,

View File

@ -62,7 +62,10 @@ export async function migrate(sql: any) {
run_id TEXT, run_id TEXT,
cert_expiry_days INTEGER, cert_expiry_days INTEGER,
cert_issuer TEXT, cert_issuer TEXT,
response_size INTEGER response_size INTEGER,
dns_ms INTEGER,
tcp_ms INTEGER,
tls_ms INTEGER
) )
`; `;
await sql`CREATE INDEX IF NOT EXISTS idx_pings_monitor ON pings(monitor_id, checked_at DESC)`; await sql`CREATE INDEX IF NOT EXISTS idx_pings_monitor ON pings(monitor_id, checked_at DESC)`;

View File

@ -373,6 +373,16 @@
if (ping.cert_expiry_days != null) html += `<div class="text-gray-500">Cert expiry</div><div class="text-gray-300">${ping.cert_expiry_days} days</div>`; if (ping.cert_expiry_days != null) html += `<div class="text-gray-500">Cert expiry</div><div class="text-gray-300">${ping.cert_expiry_days} days</div>`;
if (ping.cert_issuer) html += `<div class="text-gray-500">Cert issuer</div><div class="text-gray-300">${escapeHtml(ping.cert_issuer)}</div>`; if (ping.cert_issuer) html += `<div class="text-gray-500">Cert issuer</div><div class="text-gray-300">${escapeHtml(ping.cert_issuer)}</div>`;
if (ping.response_size != null) html += `<div class="text-gray-500">Response size</div><div class="text-gray-300">${ping.response_size >= 1024 ? (ping.response_size / 1024).toFixed(1) + ' KB' : ping.response_size + ' B'}</div>`; if (ping.response_size != null) html += `<div class="text-gray-500">Response size</div><div class="text-gray-300">${ping.response_size >= 1024 ? (ping.response_size / 1024).toFixed(1) + ' KB' : ping.response_size + ' B'}</div>`;
if (ping.dns_ms != null || ping.tcp_ms != null || ping.tls_ms != null) {
html += `<div class="text-gray-500">Timing</div><div class="text-gray-300">`;
const parts = [];
if (ping.dns_ms != null) parts.push('DNS ' + ping.dns_ms + 'ms');
if (ping.tcp_ms != null) parts.push('TCP ' + ping.tcp_ms + 'ms');
if (ping.tls_ms != null) parts.push('TLS ' + ping.tls_ms + 'ms');
parts.push('HTTP ' + (ping.latency_ms || 0) + 'ms');
html += parts.join(' / ');
html += `</div>`;
}
if (ping.important) html += `<div class="text-gray-500">Important</div><div class="text-yellow-400">Yes</div>`; if (ping.important) html += `<div class="text-gray-500">Important</div><div class="text-yellow-400">Yes</div>`;
html += '</div>'; html += '</div>';