Audit Logs and Activity
Know what happened, when, and who did it. Jetty's audit logs provide a comprehensive record of organization activity for security monitoring, compliance, and debugging.
Overview
Audit logs are timestamped records of every significant action in your organization.
Each log entry includes:
- Who -- The user who performed the action
- What -- The specific action taken
- When -- Precise timestamp
- Where -- IP address and user agent
- Target -- The resource affected (tunnel, team, user, etc.)
Plans and Retention
| Plan | Retention |
|---|---|
| Harbor (free) | 30 days |
| Coastal | 90 days |
| Fleet | 1 year |
Accessing Audit Logs
- Organization-level: Organization > Settings > Audit Logs
- Team-level: Team > Settings > Audit Logs
- Personal activity: Profile > Security
Permissions
- Organization Owner/Admin -- All organization and team logs
- Team Owner/Admin -- Their team's logs only
- Team Member -- Their own security logs only
What Gets Logged
Authentication and Security
- Login (successful and failed), logout, password changes/resets
- 2FA enabled/disabled, recovery codes regenerated
- Sessions revoked
- API token creation, revocation, and scope changes
- Failed authentication attempts, account lockouts, unusual login locations
Profile
- Name, email, avatar, and notification preference changes
Team Management
- Team created, renamed, deleted, settings updated
- Member invited, accepted, revoked, added, removed, role changed
- Organization owner transferred
Tunnels
- Tunnel created, deleted, started, stopped, settings updated
- Subdomain reserved, released, assigned, removed
- Custom domain added, verified, removed, settings updated
- SSL certificate issued/renewed
- Basic auth, IP allowlist, request inspection, redaction rules changed
Billing
- Plan upgraded/downgraded, subscription cancelled/resumed
- Payment method added/removed/updated
- Payment succeeded/failed, invoice generated, refund issued
Understanding Log Entries
Each entry uses a resource.verb naming convention:
user.login, user.logout, user.updated
team.created, team.member_added
tunnel.created, tunnel.deleted, tunnel.started
billing.subscription_upgraded, billing.payment_failed
security.two_factor_enabled, security.api_token_created
Example entry (JSON):
{
"id": "log_1a2b3c4d5e6f",
"timestamp": "2024-01-15T14:32:18Z",
"actor": {
"id": "user_abc123",
"name": "Alice Chen",
"email": "alice@example.com"
},
"action": "tunnel.deleted",
"target": {
"type": "tunnel",
"id": "tunnel_xyz789",
"name": "api-staging.tunnels.usejetty.online"
},
"context": {
"ip_address": "203.0.113.42",
"user_agent": "Mozilla/5.0...",
"team_id": "team_456def",
"team_name": "Engineering"
},
"metadata": {
"reason": "No longer needed for testing"
}
}
Filtering and Searching
Available filters:
- Date range -- Presets (24h, 7d, 30d) or custom range
- Actor -- Actions by a specific user
- Action type -- Authentication, tunnel, team, billing, or security events
- Resource -- Tunnel name, team name, or user email
Free-text search works across actor names/emails, action types, resource names, IP addresses, and metadata.
Use Cases
Security Monitoring
Monitor for failed login attempts from unfamiliar locations, API tokens created outside normal hours, unexpected permission changes, and multiple failed auth attempts.
During incident response, audit logs help identify compromised accounts, determine scope of unauthorized access, track attacker actions, and verify remediation.
Compliance
Audit logs support SOC 2, GDPR, HIPAA, ISO 27001, and PCI DSS requirements. Export logs for the audit period filtered by security and access control events.
Debugging
Answer questions like "Who deleted that tunnel?", "When did we change the custom domain?", or "Why can't Bob access this anymore?" by filtering on the relevant action type or resource name.
Best Practices
- Review cadence: Daily for failed logins, weekly for permission changes, monthly for API token activity, quarterly for comprehensive review
- Assign responsibility for monitoring logs and investigating suspicious activity
- Export regularly to maintain history beyond your plan's retention period
- Store exports securely (encrypted, access-controlled)
- Add context when possible -- comment on deletions, document permission change reasons, note API token purposes
Exporting Audit Logs
Dashboard Export
- Apply desired filters
- Click Export (top right)
- Choose CSV, JSON, or PDF
API Export
# Get logs for a date range
curl -X GET "https://usejetty.online/api/organization/audit-logs?from=2024-01-01&to=2024-01-31" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
# Filter by action type
curl -X GET "https://usejetty.online/api/organization/audit-logs?action=tunnel.deleted" \
-H "Authorization: Bearer YOUR_API_TOKEN"
# Filter by actor
curl -X GET "https://usejetty.online/api/organization/audit-logs?actor_id=user_abc123" \
-H "Authorization: Bearer YOUR_API_TOKEN"
# Pagination
curl -X GET "https://usejetty.online/api/organization/audit-logs?page=1&per_page=100" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Automated Daily Backup
#!/bin/bash
DATE=$(date -d "yesterday" +%Y-%m-%d)
curl -X GET "https://usejetty.online/api/organization/audit-logs?from=${DATE}&to=${DATE}" \
-H "Authorization: Bearer ${JETTY_API_TOKEN}" \
-o "audit-logs-${DATE}.json"
# Run daily at 2 AM
0 2 * * * /path/to/export-audit-logs.sh
Troubleshooting
"You don't have permission to view audit logs"
You need Organization Owner/Admin for org logs, Team Owner/Admin for team logs. Personal logs are at Profile > Security.
Logs are missing or incomplete
- Logs may have exceeded your plan's retention period -- export regularly
- Events before audit logging was enabled are not available
Export is too large
Break into smaller date ranges, use API pagination, or apply filters. Export by month instead of year.
Can't find a specific event
Verify the date range includes when the event occurred, check retention limits, try broader filters, and ensure you are viewing the correct team context. Note: page views and button clicks are not logged -- only state changes, auth events, permission changes, and billing events.
API rate limits
Use pagination, add delays between requests, and narrow date filters. Contact support for higher limits if needed.
Related Documentation
Questions? Email support@usejetty.online or visit the Jetty Community.
Send feedback
Found an issue or have a suggestion? Let us know.