Skip to content

Editing profiles

/profiles is the central page to manage profiles and their profile-checks.

Since v0.19.1

16 UX improvements: capability filters, inline threshold edit, clone, export/import, sort arrows, keyboard shortcuts.

Overview

┌──────────────────────────────────────────────────────────────────┐
│ Profiles                              [+ New] [Import] [Export]  │
│                                                                  │
│ Search: [/]                                                      │
│ Filter: [Agent] [SNMP] [Custom] [Modified] [Empty]               │
├──────────────────────────────────────────────────────────────────┤
│  Server                                                          │
│   ┌────────────┐ ┌────────────┐ ┌────────────┐                   │
│   │ Generic    │ │ Linux Web  │ │ Windows    │                   │
│   │ Linux      │ │ Server     │ │ Server     │                   │
│   │ • 12 hosts │ │ • 4 hosts  │ │ • 8 hosts  │                   │
│   │ Agent SNMP │ │ Agent      │ │ Agent      │                   │
│   └────────────┘ └────────────┘ └────────────┘                   │
│  Network Devices                                                 │
│   ...                                                            │
└──────────────────────────────────────────────────────────────────┘

Card pattern

Each card shows:

  • Profile name + icon
  • Host count (or yellow border + „no hosts" if unused)
  • Capability pills (Agent, SNMP, Custom, Modified)
  • On click: profile modal with all profile-checks
Pill Shows
Agent Profiles with agent_capable = true
SNMP Profiles with snmp_enabled = true
Custom Profiles with is_builtin = false
Modified Builtins with is_modified = true
Empty Profiles without hosts (cleanup candidates)

Keyboard shortcuts:

  • ++slash++ — focus search
  • ++n++ — new profile
  • ++esc++ — close modal

Profile modal

┌─ Profile 'Generic Linux Server' ────────────── [Clone] [Export] ─┐
│                                                                  │
│ Basics                                                           │
│   Name:        Generic Linux Server                              │
│   Category:    Server                                            │
│   Vendor:      Generic                                           │
│   Icon:        [server-icon]                                     │
│                                                                  │
│ Advanced ▼                                                       │
│   sysOID patterns:    [.1.3.6.1.4.1.8072.3.2.10] [+]             │
│   sysDescr patterns:  [Linux] [+]                                │
│   Capabilities: [✓] Agent  [✓] SNMP  [_] IP required             │
│   OS family:    linux                                            │
│   Visual type:  (none)                                           │
│                                                                  │
│ Profile-checks (8)                                  [+ Check]    │
│   ↑↓  CPU Load          agent_cpu     60s  W>80  C>95  [Edit]    │
│   ↑↓  RAM Usage         agent_memory  60s  W>85  C>95  [Edit]    │
│   ↑↓  Disk Usage /      agent_disk   300s  W>80  C>95  [Edit]    │
│   ...                                                            │
└──────────────────────────────────────────────────────────────────┘

Sections

  • Basics — name, category, vendor, icon (Lucide picker)
  • Advanced (collapsible) — patterns, capabilities, visual type, OS

Profile-check list

Per check the table shows:

  • Sort arrows (↑↓) for reordering
  • Name + check type
  • Interval in seconds
  • Threshold-warn / threshold-crit in notation W>80 · C>95
  • Edit button

Inline threshold edit

Instead of opening the edit modal, you can adjust thresholds directly:

  1. Click the threshold value
  2. Mini inputs appear
  3. Enter saves, Escape discards

Useful when you only want to tune thresholds, not the full config.

Edit profile-check (modal)

Creating, the profile editor and the host editor show the same set of fields for every check type — exactly the fields the execution really reads. The "Target" field only appears for types that use it.

Field Note
Name display name (profiles are named in English throughout)
Check type only changeable for new checks — locked with a warning for existing ones
Mode Agent / Collector / Active checker
Configuration type-specific fields (for SNMP walks incl. table column, aggregation, reference value, name filter; HTTP API checks get a proper form instead of raw keys)
Thresholds sit right next to the measured value and are only editable where they take effect — locked for SSL certificate and internet line (their own fields apply), and for script checks they apply in addition to the script result and can only make the status worse (from v1.9.437 with the reasoning in the verdict block)
Interval / confirmations numbers; confirmations and confirmation interval replace the former retry/max attempts
Script picker with search; the pencil opens the script body
Configurable values the values declared by the script, see Configurable values on scripts
Comparison with an expected value the only remaining evaluation kind, see Expected values & comparison
auto_add created automatically when the profile is applied?

Changing the check type

Changing the check type reinterprets the config fields. A data-loss warning appears before saving.

Clone

Clones a profile + all profile-checks as a new custom profile with auto-rename:

"Generic Linux Server"     → "Generic Linux Server (Copy)"
"Generic Linux Server"     → "Generic Linux Server (Copy 2)"  (second time)

Clones are is_builtin = false, is_modified = false. Freely editable.

Export

JSON bundle with schema version:

{
  "schema_version": 1,
  "profile": { /* all fields */ },
  "checks": [ /* all profile-checks */ ]
}

Browser-side download, no server state.

Import

Accepts JSON bundle or ZIP with multiple bundles.

  • Magic-bytes detection (PK for ZIP)
  • One savepoint per bundle — bad bundles don't break the rest
  • Auto-rename on name collision: (Import), (Import 2), …
  • Schema version check via PROFILE_BUNDLE_SCHEMA_VERSION
curl -X POST -H "Authorization: Bearer <JWT>" \
  -F "file=@my-profiles.zip" \
  https://your-domain.tld/api/v1/profiles/import

Reset (builtin)

A modified builtin (is_modified = true) shows a Reset button. Restores the profile and all profile-checks to seed defaults.

Confirmation dialog before reset.

Usage preview

On profile delete, a pre-modal shows:

Profile 'Generic Linux Server' is in use by:
  - 12 hosts
  - 86 services

Example hosts:
  - web01.acme.local
  - db01.acme.local
  ...

If you proceed, these hosts will be left without a profile.
Really delete?

  [Cancel]   [Delete]

Backed by GET /profiles/{id}/usage{host_count, service_count, examples[5]}.

Sort & order

Profile-checks have a display_order index. Sort arrows change order — relevant for service list display on the host detail page.

API

Endpoint Purpose
GET /api/v1/profiles/ List with host_count
GET /api/v1/profiles/{id} Detail
POST /api/v1/profiles/ Create
PATCH /api/v1/profiles/{id} Update
DELETE /api/v1/profiles/{id} Delete
GET /api/v1/profiles/{id}/usage Impact preview
POST /api/v1/profiles/{id}/clone Clone
GET /api/v1/profiles/{id}/export JSON bundle
POST /api/v1/profiles/import Bundle/ZIP import
POST /api/v1/profiles/{id}/apply Apply to host
GET /api/v1/profiles/{id}/checks Profile-checks
POST /api/v1/profiles/{id}/checks/{check_id}/reset Reset builtin check

Next