loginsight
Reactive icon

LogInsight

Stable version 1.0.0 (Compatible with OutSystems 11)
Uploaded
 on 6 Oct (22 hours ago)
 by 
0.0
 (0 ratings)
loginsight

LogInsight

Documentation
1.0.0

LogInsight


A free monitoring dashboard for OutSystems 11. LogInsight turns the logs Service Center already keeps into app health, errors, usage, integrations, timers, deployments and availability. It reads only the platform's own log and system entities, and nothing leaves your environment.

LogInsight is one application with two modules:

  • LogInsight_Core (core module, no UI): rollup entities, the rollup and purge timers, roles, settings, and the public server actions the UI uses.
  • LogInsight (Reactive Web app): the Dashboard, Errors, Error detail, Usage and Settings screens.

Requirements

  • OutSystems 11, Platform Server 11.40 or later, on OutSystems Cloud or self-managed.
  • SQL Server platform database. Oracle is not supported in v1.
  • Logs stored in the platform database, which is the default. A separate log database is not supported in v1.
  • Dependencies: OutSystems UI, OutSystems Charts, and two System Components extensions, Text and PlatformLogs. All of these are present in a standard O11 environment.

Install

  1. Install LogInsight from Forge. Both modules are installed together.
  2. In Service Center, open Factory, then Modules, then LogInsight_Core, then Timers. Check that LI_RollupLogs is scheduled every 15 minutes.
  3. Set LI_PurgeRollups to run daily at 02:15. You can do this in Service Studio (Processes, Timers) or in Service Center.
  4. In the Users app, grant LogInsight_Viewer to people who read dashboards, and LogInsight_Admin to platform admins.
  5. Open https://your-server/LogInsight.

On first publish, LI_Bootstrap creates the default settings. The first rollup run backfills the last 24 hours. After that, data is at most about 17 minutes behind: the 15-minute schedule plus a 2-minute lag. Admins can press Run rollup now on the Settings screen at any time.

Screens

Dashboard (Viewer and Admin)

  • App health: only Critical and Degraded apps are shown, with a "+N healthy apps" link to show the rest.
  • Headline numbers compared with the same period last week: active users, requests, error rate, screen p95, integration failures and failed timer runs.
  • Requests and errors over time, and daily active users.
  • Top errors with New and Regression tags, and the slowest integrations.
  • Deployment impact for each publish, and monthly availability against your SLO target.
  • Timers, slow SQL and the slowest extensions.
  • Most used screens and unused apps.
  • Live tail of the latest log events (Admin only).

Errors (Viewer and Admin)

  • Every error group, with search, app, time range and platform filters, and New and Regression tags.

Error detail (Viewer and Admin)

  • The normalised message, the app, first and last seen, the total count, and occurrences per day.

Usage (Viewer and Admin)

  • Daily active users, the 50 most used screens, and unused apps.

Settings (Admin only)

  • Rollup status for each log type, every setting with its default and allowed range, and a Run rollup now button.

Filters and layout

  • Filters are kept in the URL, so any view can be bookmarked or shared.
  • The "Show OutSystems apps" switch is off by default. It hides platform modules: modules flagged Is_System, plus the names in the LI_PlatformModule static entity (Service Center, LifeTime, Users, OutSystems UI, OutSystems Charts and similar).
  • The menu has an Auto / Light / Dark theme switch, remembered per browser.
  • Panels in a row share one height. "Show all" expands a panel to its full content, and "Enlarge" opens it full screen.

Roles

  • LogInsight_Viewer can open Dashboard, Errors, Error detail and Usage, and sees aggregates only.
  • LogInsight_Admin can do everything a Viewer can, plus Live tail, Settings and Run rollup now.

Every screen and every public server action checks its role on the server, not only in the UI. In a multi-tenant factory, a Viewer sees only their own tenant's data, and an Admin sees all tenants.

Settings

Edit these on the Settings screen. Each value is checked against its type and allowed range when you save.

  • RollupLagMinutes (default 2): minutes to wait before rolling up a minute, so late log rows are included.
  • RollupBatchMaxRows (default 50000): the most raw log rows read per log type in one run.
  • RetentionDays (default 90): rollup rows older than this are deleted by LI_PurgeRollups.
  • SloTargetPercent (default 99.5): the availability target used by the Availability panel.
  • AlertErrorRatePercent (default 3): error-rate threshold for app health.
  • AlertP95Seconds (default 5): p95 response-time threshold for app health.
  • AlertIntegrationFailPercent (default 10): integration failure-rate threshold for app health.
  • AlertCooldownMinutes (default 60): reserved for alert emails, which are not active in v1.
  • AlertRecipients (default empty): reserved for alert emails, which are not active in v1.
  • LiveTailRowLimit (default 200): rows shown in Live tail.
  • UnusedAppDays (default 30): days without requests before an app counts as unused.

Data sources

LogInsight reads these, and nothing else:

  • Log_Error: errors, error groups and error rate.
  • Log_Screen and Log_Mobile_Request: requests, response times, screen usage and distinct users.
  • Log_Integration: integration calls, failures and durations.
  • Log_ServiceAPI: service action calls.
  • Log_Extension: extension calls and durations.
  • Log_General, SLOWSQL entries only: the slow SQL count.
  • Log_Cyclic_Job: timer runs, failures and durations.
  • Espace and Espace_Version (System): module names, the platform-module flag, and publishes for deployment impact.
  • User (System): the tenant of the signed-in viewer.

The log entities come from the PlatformLogs extension (System Components). Each has a _Previous twin holding the previous week, which LogInsight reads during backfill.

Screens read only the rollup entities (LI_MetricMinute, LI_UserDay, LI_ErrorGroup and LI_ErrorDay), never the raw logs. The one exception is Live tail.

How the numbers are calculated

  • Rollup: every 15 minutes, each log type is rolled up into per-minute summaries in whole-minute batches. Re-running never double-counts. If one log type fails, its status is recorded and the other types continue.
  • p95 is an estimate: durations are counted in buckets (up to 100 ms, 500 ms, 1 s, 3 s, 10 s, and over 10 s). The screen shows the upper edge of the bucket that holds the 95th percentile, for example "≤ 3.0 s".
  • Error groups: numbers, GUIDs, quoted strings and URLs in the message are replaced with placeholders, and the result is hashed together with the module name. A Regression is an error seen again after 7 days of silence.
  • Deployment impact compares the hour before each publish with the hour after it.