Monitoring
View dashboard metrics, health checks, alerts, activity feeds, and operation logs.
oCore provides built-in monitoring for servers, instances, and environments. From the dashboard you can view real-time metrics, configure alerts, track activity across your organization, and review detailed operation logs for every background job.
Monitoring Dashboard
View metrics, health checks, and alerts for your infrastructure.
Dashboard Metrics Overview
The monitoring dashboard provides a high-level view of your infrastructure health:
Server Metrics
| Metric | Description |
|---|---|
| CPU Usage | Current and historical CPU utilization across all cores |
| Memory | Used vs total RAM with percentage |
| Disk | Used vs total storage for the root filesystem |
| Network I/O | Inbound and outbound traffic rates |
| Last Seen | When the server last reported health data |
Instance Metrics
| Metric | Description |
|---|---|
| Status | Current running state (running, stopped, error) |
| HTTP Response | Instance web endpoint health check result |
| Restart Count | Number of restarts since creation |
| Resource Usage | Container CPU and memory consumption |
Organization-Level Metrics
| Metric | Description |
|---|---|
| Total Servers | Count of connected servers by status |
| Total Instances | Count of instances by status |
| Active Deployments | Deployments currently in progress |
| Backup Health | Recent backup success/failure ratio |
| Usage Quotas | Resource usage against organization limits |
Server Health Checks
oCore performs periodic health checks on every connected server to verify:
- SSH Connectivity -- Can oCore reach the server via SSH
- Docker Status -- Is the Docker daemon running and responsive
- Resource Availability -- CPU, memory, and disk are within safe thresholds
- Agent Status -- The oCore monitoring agent is running and reporting
Servers that fail health checks transition to unreachable status and trigger an alert.
Uptime Monitoring
oCore tracks uptime for each server and instance. View uptime history and statistics:
curl https://ocore.example.com/api/instances/{instanceId}/monitoring/uptime \
-H "Authorization: Bearer $TOKEN"Instance Resource Monitoring
Real-Time Metrics
Each running instance reports resource consumption in real time:
- CPU -- Container CPU usage as a percentage of allocated cores
- Memory -- Container memory usage vs limit
- Disk -- Container volume usage
- Network -- Container network I/O
Metric Streams (SSE)
For real-time dashboards, oCore provides Server-Sent Events (SSE) streams:
curl -N https://ocore.example.com/api/instances/{instanceId}/monitoring/metrics/stream \
-H "Authorization: Bearer $TOKEN"This returns a continuous stream of metric events that you can consume in any SSE-compatible client.
Alert Configuration
Configure alerts to get notified when infrastructure issues occur.
Alert Types
| Alert | Trigger | Severity |
|---|---|---|
| Server unreachable | Health check fails for a server | Critical |
| Instance down | Instance stops unexpectedly | Critical |
| High CPU | CPU usage exceeds threshold | Warning |
| High memory | Memory usage exceeds threshold | Warning |
| Low disk space | Disk usage exceeds threshold | Warning |
| Backup failed | Scheduled backup did not complete | Error |
| Deployment failed | A deployment pipeline step failed | Error |
Managing Alerts
View and acknowledge alerts:
# List alert events
curl https://ocore.example.com/api/monitoring/alerts/events \
-H "Authorization: Bearer $TOKEN"
# Resolve an alert event
curl -X PATCH https://ocore.example.com/api/monitoring/alerts/events/{eventId}/resolve \
-H "Authorization: Bearer $TOKEN"Notification Preferences
Configure your notification preferences to receive alerts via email or push notifications. See your account settings for notification channel configuration.
Activity Feed
The activity feed shows a chronological log of all significant events in your organization:
- Instance created, started, stopped, deleted
- Deployments triggered, completed, failed
- Backups created, restored
- Members invited, roles changed
- Server added, removed
Activity Feed
View all recent activity across your organization.
Filtering the Activity Feed
curl "https://ocore.example.com/api/activity?limit=50&offset=0" \
-H "Authorization: Bearer $TOKEN"The activity feed supports filtering by:
- Event type
- Date range
- User
- Resource (server, instance, project)
Operation Logs
Every background operation in oCore (deployments, backups, restores, provisioning) generates detailed step-by-step logs.
Viewing Operation Logs
# Get operation steps
curl https://ocore.example.com/api/operations/{type}/{id}/steps \
-H "Authorization: Bearer $TOKEN"
# Stream operation logs in real time (SSE)
curl -N https://ocore.example.com/api/operations/{type}/{id}/logs \
-H "Authorization: Bearer $TOKEN"Operation types include: deployment, backup, restore, provisioning, snapshot.
Each operation step records:
- Step name and status
- Output text (build logs, error messages)
- Start time, completion time, and duration
- Version number for optimistic concurrency
Required Permissions
- Viewing metrics and alerts requires
view:environmentspermission - Acknowledging alerts requires
manage:environmentspermission - Activity feed is visible to all authenticated organization members
Troubleshooting
PostHog Analytics Integration
oCore integrates with PostHog to provide product analytics for your Odoo instances. When configured, each instance sends events to PostHog and oCore queries them back to build analytics dashboards covering revenue, users, sessions, performance, errors, audit trails, and productivity.
Configuration Required
PostHog analytics requires a PostHog project with a Personal API key. Set the POSTHOG_API_KEY, POSTHOG_API_HOST, and POSTHOG_PROJECT_ID environment variables on your oCore backend. Each instance can target a different PostHog project via the instance analytics settings.
Revenue Dashboard
The revenue dashboard tracks sales performance from Odoo sales:order_confirmed and accounting:invoice_posted events:
| Metric | Description |
|---|---|
| Current Revenue | Total order revenue in the selected period |
| Previous Revenue | Revenue from the prior equivalent period for comparison |
| Change % | Period-over-period revenue change percentage |
| Order Count | Number of confirmed sales orders |
| Invoiced Revenue | Revenue from posted invoices |
| Avg Order Value | Current revenue divided by order count |
| Revenue Trend | Daily revenue chart over the selected period |
Additional revenue views:
- Revenue by Currency -- Breakdown of revenue and order counts per currency
- Top Customers -- Ranked list of customers by total revenue, with order counts and average order values
- Revenue Time Series -- Daily revenue trend data for charting
Active Users
Track daily, weekly, and monthly active users (DAU/WAU/MAU) based on distinct person activity:
| Metric | Description |
|---|---|
| DAU | Distinct users active in the last 24 hours |
| WAU | Distinct users active in the last 7 days |
| MAU | Distinct users active in the last 30 days |
| DAU Trend | Daily active user count over the selected period |
Additional user views:
- Top Users -- Most active users ranked by event count, showing email, name, and last seen
- Online Users -- Real-time view of users with activity in the last 5 minutes (not cached)
Session Replay
oCore provides links to PostHog session recordings for debugging and analysis. Session replay URLs are available on:
- Recent Sessions -- Each session entry includes a direct link to the PostHog replay
- Audit Trail Entries -- Audit events with a session ID link to the corresponding replay
- Error Details -- Error occurrences can be linked to the session in which they happened
Recent sessions show:
- Session duration, pageview count, and interaction count
- User email and name resolved from PostHog person properties
- Start time and last activity timestamp
Web Vitals
Core Web Vitals are collected from PostHog $web_vitals events and reported at the p75 (75th percentile) level:
| Vital | Good | Needs Improvement | Poor |
|---|---|---|---|
| LCP (Largest Contentful Paint) | < 2500ms | 2500-4000ms | > 4000ms |
| INP (Interaction to Next Paint) | < 200ms | 200-500ms | > 500ms |
| CLS (Cumulative Layout Shift) | < 0.1 | 0.1-0.25 | > 0.25 |
Each vital includes a rating (good, needs-improvement, poor) and LCP includes a daily trend chart.
The Slow RPCs view identifies the slowest Odoo RPC endpoints based on odoo:slow_rpc events, showing average duration, max duration, and call count per endpoint.
Error Tracking (PostHog)
In addition to oCore's built-in error tracking (see Error Tracking), PostHog captures $exception events from the Odoo frontend:
- Error Summary -- Active error tracking issues from PostHog's error tracking API, with occurrence counts, affected users, and sessions
- Errors by Module -- Error counts grouped by Odoo module with percentage breakdown
- Error Trend -- Daily error count chart from
$exceptionevents - Session Replay Link -- Each error type links to a sample session recording for debugging
Audit Trail
The audit trail provides a security-focused event log queried from PostHog, covering authentication, administration, security, and system events:
| Category | Example Events |
|---|---|
| auth | Login, logout, password change, 2FA enable/disable, API key created/deleted |
| security | Access denied, brute force attempt, privilege escalation |
| admin | User created/deleted, module installed, settings changed, group membership changed |
| comms | Email sent, SMS sent |
| system | Cron executed/failed, backup completed |
Each audit entry includes:
- Severity classification (critical, high, medium, low)
- User name, email, and IP address
- Affected model, record ID, and record name
- Changed fields with old and new values
- Session replay link when available
Filter the audit trail by severity, category, user ID, and time period. You can also view the audit history for a specific record by model name and record ID.
Productivity Metrics
The productivity dashboard combines event data with session duration to score per-user productivity:
| Metric | Description |
|---|---|
| Records Saved | Count of odoo:record_saved and related events |
| Records Created | Count of audit:record_created events |
| Shortcuts Used | Count of odoo:keyboard_shortcut events |
| Errors Hit | Count of error dialog and exception events |
| Session Hours | Total time spent in sessions (from PostHog sessions table) |
| Productivity Index | Records saved per session hour |
| Top Modules | The 3 most-used Odoo models per user |
Events and session queries run in parallel for optimal performance. Data is cached for 15 minutes.
Period Selection
All analytics views support configurable time periods:
| Period | Interval |
|---|---|
1d | Last 24 hours |
7d | Last 7 days |
14d | Last 14 days |
30d | Last 30 days |
90d | Last 90 days |
Caching and Rate Limits
PostHog queries are rate-limited (default 30 requests/minute) with a concurrency semaphore of 3 simultaneous requests. Results are cached in memory with TTLs ranging from 2 minutes (audit trail, sessions) to 30 minutes (web vitals, slow RPCs). Failed requests are retried up to 2 times with exponential backoff.
Troubleshooting
Metrics not updating
- Verify the oCore agent is running on the server
- Check that the server status is
active(notunreachable) - Verify the SSE connection is not blocked by a firewall or proxy
Alerts not being received
- Check notification preferences in your account settings
- Verify your email address is confirmed
- Check that alert thresholds are properly configured
Activity feed missing events
- The feed is scoped to your organization -- events from other orgs are not shown
- Very old events may be outside the default query window -- use date range filters
- Check that the user performing the action has proper audit logging enabled
Operation logs incomplete
- Logs stream in real time; if you disconnect mid-operation, reconnect to see the full output
- Failed operations may have partial logs up to the point of failure
- Check the operation status to confirm whether it completed or failed