Skip to content

Rocket.Chat Logs Viewer App

Rocket.Chat app for log triage: guarded Loki queries, RBAC checks, and a separate web UI for deeper inspection.

Rocket.Chat Logs Viewer App recorded evidence
Recorded project evidence. The case study below describes the implementation and its limits.

Rocket.Chat · TypeScript · Node.js · React · Vite · Tailwind · Loki · RBAC

Overview

Rocket.Chat app for log triage during incidents.

  • Loki/Grafana stay the observability backend
  • /logs slash command with room and thread context
  • Query logic runs through a server-side guarded proxy

Features

  • /logs slash command with room and thread context
  • Private app API endpoints for query, audit, actions, saved views, and targets
  • RBAC checks and request audit trail
  • React web UI for filtering and row-level actions
  • Validation, rate limits, selector enforcement, and redaction

Workflow

  • Triage starts in chat
  • Longer reads move to the web UI when needed
  • Shared snapshots stay scoped to the room or thread

Source

Outcomes

Guarded Loki queries inside Rocket.Chat, plus a web UI for longer log reads.

Challenges and solutions

Challenges

  • Restoring fast log access after Rocket.Chat removed in-app log visibility
  • Blocking direct client-side Loki queries and permission bypasses
  • Handling large result sets without cloning a full observability UI
  • Keeping in-chat sharing scoped and traceable

Solutions

  • Slash command carries room and thread context into triage actions
  • Server-side Loki proxy with RBAC checks, validation, bounds, and audit logging
  • React web UI with virtualization for longer reads
  • Snapshot-backed share flows scoped to the room or thread

Technology stack

Backend

TypeScript · Node.js · Rocket.Chat Apps-Engine

Frontend

React · Vite · Tailwind

Observability

Loki

Security

RBAC · Rate limiting · Audit trail · Redaction

Packaging

Bun · Private app packaging · Optional same-origin deployment