### Full YAML Configuration for Kuvasz Uptime Source: https://kuvasz-uptime.dev/management/examples This example demonstrates a complete YAML configuration file for Kuvasz Uptime. It includes application settings, SMTP configuration, various integrations (PagerDuty, Slack, Discord, Email, Telegram), HTTP monitors with detailed settings, push monitors, and status page configurations. Use this as a starting point for your own setup. Remember that monitors defined in YAML are read-only in the Web UI. ```yaml micronaut.security.enabled: true micronaut.security.token.generator.access-token.expiration: 86400 # 24 hours admin-auth: username: YourSuperSecretUsername password: YourSuperSecretPassword api-key: ThisShouldBeVeryVerySecureToo app-config: event-data-retention-days: 365 latency-data-retention-days: 7 log-event-handler: true language: en check-updates: true http-check-timeout-seconds: 30 --- smtp-config: host: 'your.smtp.server' port: 465 transport-strategy: SMTP_TLS username: YourSMTPUsername password: YourSMTPPassword --- integrations: pagerduty: - name: pd_global integration-key: YourOwnIntegrationKey global: true enabled: true slack: - name: slack_default webhook-url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXX' discord: - name: discord webhook-url: https://discord.com/api/webhooks/XXXXXXX/YYYYYYYYY email: - name: email_implicitly_enabled from-address: noreply@kuvasz-uptime.dev to-address: your@email.address telegram: - name: telegram_disabled api-token: 'YourToken' chat-id: '-1232642423121' enabled: false --- http-monitors: - name: "full configuration example" url: "https://akobor.me" sensitive-url: false uptime-check-interval: 30 enabled: true ssl-check-enabled: false request-method: "POST" latency-history-enabled: true follow-redirects: true force-no-cache: true ssl-expiry-threshold: 30 failure-count-threshold: 2 integrations: - "telegram:telegram_disabled" - "slack:slack_default" expected-status-codes: - 200 - 201 - 303 expected-keyword: "akobor" expected-keyword-case-sensitive: true expected-keyword-negated: false response-time-threshold-millis: 500 request-headers: Host: "example.com" expected-headers: Content-Type: "application/json" request-body: "{\"key\":\"value\"}" - name: "minimal configuration example" url: "https://kuvasz-uptime.dev" uptime-check-interval: 5 push-monitors: - name: "My Push Monitor" heartbeat-interval: 10 grace-period: 2 failure-count-threshold: 3 client-secret: "d6d5a85c-82c0-4bea-9926-c3eed32de32b" enabled: true integrations: [ ] - name: "Another Push Monitor" heartbeat-interval: 86400 grace-period: 3600 client-secret: "7b2d5cb1-41bd-4067-9732-c79dbbf45286" enabled: false integrations: - "slack:slack_default" --- default-status-page: public: true title: "Status - Kuvasz Uptime" custom-logo-url: "https://example.com/logo.png" custom-favicon-url: "https://example.com/favicon.png" status-pages: - title: "Example Status Page" slug: "example-status" public: true custom-logo-url: "https://example.com/logo.png" custom-favicon-url: "https://example.com/favicon.png" monitors: - "http:full configuration example" - "http:minimal configuration example" - "push:My Push Monitor" ``` -------------------------------- ### Install Kuvasz Helm Chart Source: https://kuvasz-uptime.dev/setup/helm-deployment Install the Kuvasz Helm chart with default or custom values. Replace `` with the specific chart version. ```bash helm install my-kuvasz oci://ghcr.io/kuvasz-uptime/kuvasz-uptime --version helm install my-kuvasz oci://ghcr.io/kuvasz-uptime/kuvasz-uptime --version -f my-values.yaml ``` -------------------------------- ### Complete OpenTelemetry Exporter Configuration Source: https://kuvasz-uptime.dev/management/metrics-exporters Comprehensive example showing how to enable and configure the OpenTelemetry exporter with various settings. ```yaml micronaut: metrics: enabled: true export: otlp: enabled: true url: https://example.host:4318/v1/metrics headers: 'Authorization=Bearer Your-collectors-API-token,key2=value' step: PT1M --- metrics-exports: http-uptime-status: true http-latest-latency: true ssl-status: true ssl-expiry: true push-uptime-status: true ``` ```env ENABLE_METRICS_EXPORT=true ENABLE_OTLP_EXPORT=true OTLP_EXPORT_URL=https://example.host:4318/v1/metrics OTLP_EXPORT_HEADERS='Authorization=Bearer Your-collectors-API-token,key2=value' OTLP_EXPORT_STEP=PT1M # Enable the individual metrics ENABLE_HTTP_UPTIME_STATUS_EXPORT=true ENABLE_HTTP_LATEST_LATENCY_EXPORT=true ENABLE_SSL_STATUS_EXPORT=true ENABLE_SSL_EXPIRY_EXPORT=true ``` -------------------------------- ### Start Kuvasz with Docker Compose Source: https://kuvasz-uptime.dev/setup/installation Command to start the Kuvasz stack in detached mode. Ensure you are in the same directory as your docker-compose.yml file. ```bash docker compose up -d ``` -------------------------------- ### Prometheus Full Configuration Example (YAML) Source: https://kuvasz-uptime.dev/management/metrics-exporters A comprehensive YAML configuration enabling global metrics, the Prometheus exporter, descriptions, and individual metric exports. ```yaml micronaut: metrics: enabled: true export: prometheus: enabled: true descriptions: true --- metrics-exports: http-uptime-status: true http-latest-latency: true ssl-status: true ssl-expiry: true push-uptime-status: true ``` -------------------------------- ### Prometheus Full Configuration Example (Environment Variables) Source: https://kuvasz-uptime.dev/management/metrics-exporters A comprehensive set of environment variables enabling global metrics, the Prometheus exporter, descriptions, and individual metric exports. ```env ENABLE_METRICS_EXPORT=true ENABLE_PROMETHEUS_EXPORT=true ENABLE_PROMETHEUS_DESCRIPTIONS=true # Enable the individual metrics ENABLE_HTTP_UPTIME_STATUS_EXPORT=true ENABLE_HTTP_LATEST_LATENCY_EXPORT=true ENABLE_SSL_STATUS_EXPORT=true ENABLE_SSL_EXPIRY_EXPORT=true ``` -------------------------------- ### YAML Configuration Example Source: https://kuvasz-uptime.dev/setup/configuration Use this YAML configuration to set up security, metrics export (OTLP and Prometheus), administrative authentication, data retention policies, and application settings. ```yaml micronaut: security: enabled: true token.generator.access-token.expiration: 86400 # 24 hours metrics: enabled: true export: otlp: enabled: true url: https://example.host:4318/v1/metrics headers: 'Authorization=Bearer Your-collectors-API-token,key2=value' step: PT1M prometheus: enabled: true descriptions: true --- metrics-exports: http-uptime-status: true http-latest-latency: true ssl-status: true ssl-expiry: true push-uptime-status: true --- admin-auth: username: YourSuperSecretUsername password: YourSuperSecretPassword api-key: ThisShouldBeVeryVerySecureToo --- app-config: event-data-retention-days: 365 latency-data-retention-days: 7 log-event-handler: true language: en check-updates: true http-check-timeout-seconds: 30 --- smtp-config: host: 'your.smtp.server' port: 465 transport-strategy: SMTP_TLS username: YourSMTPUsername password: YourSMTPPassword ``` -------------------------------- ### Prometheus Example Output Source: https://kuvasz-uptime.dev/management/metrics-exporters Example output format for metrics scraped by Prometheus, including HTTP uptime, latency, and SSL status. ```text kuvasz_http_uptime_status{name="nytimes.com",target="https://www.nytimes.com"} 1.0 kuvasz_http_latency_latest_milliseconds{name="nytimes.com",target="https://www.nytimes.com"} 29.0 kuvasz_http_ssl_status{name="nytimes.com",target="https://www.nytimes.com"} 1.0 kuvasz_http_ssl_expiry_seconds{name="nytimes.com",target="https://www.nytimes.com"} 1.758828296E9 ``` -------------------------------- ### Configure PagerDuty Integration Source: https://kuvasz-uptime.dev/management/integrations Example of setting up a PagerDuty integration with a name and integration key. Ensure the name is unique for the PagerDuty type. ```yaml integrations: pagerduty: - name: "PD global integration" integration-key: YourOwnIntegrationKey ``` -------------------------------- ### Configure Discord Integrations Source: https://kuvasz-uptime.dev/management/integrations Set up Discord integrations with webhook URLs. This includes examples for a specific integration and a global one. ```yaml integrations: discord: - name: discord-example webhook-url: 'https://discord.com/api/webhooks/123456789/abcdef1234567890abcdef1234567890' - name: discord-global webhook-url: 'https://discord.com/api/webhooks/987654321/fedcba0987654321fedcba0987654321' global: true # ... other Discord integrations ``` -------------------------------- ### Configure Slack Integration Source: https://kuvasz-uptime.dev/setup/installation Example YAML snippet for setting up Slack as a global notification channel. Replace placeholders with your actual webhook URL and desired name. ```yaml integrations: slack: - name: use_your_desired_name webhook-url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXX' global: true ``` -------------------------------- ### OpenTelemetry Metrics Example Output Source: https://kuvasz-uptime.dev/management/metrics-exporters Example of the metrics format exported by the OpenTelemetry exporter. ```plaintext kuvasz.http.ssl.status{name=weather.com,target=https://weather.com} 1 kuvasz.http.latency.latest.milliseconds{name=samsung.com,target=https://www.samsung.com} 183 kuvasz.http.uptime.status{name=google.com,target=https://www.google.com} 1 kuvasz.http.ssl.expiry.seconds{name=bbc.com,target=https://www.bbc.com} 1.785147977e+09 ``` -------------------------------- ### Install Kuvasz with Custom Values Source: https://kuvasz-uptime.dev/setup/helm-deployment Deploy Kuvasz using a specified values file, version, and namespace. The `--create-namespace` flag ensures the namespace is created if it doesn't exist. ```bash helm install kuvasz-uptime oci://ghcr.io/kuvasz-uptime/kuvasz-uptime \ --version \ --values values.yaml \ --namespace kuvasz-uptime \ --create-namespace ``` -------------------------------- ### Configure Push Monitor in YAML Source: https://kuvasz-uptime.dev/management/push-monitors Example of a push monitor configuration in YAML format. This includes settings like name, heartbeat interval, grace period, client secret, enabled status, and integrations. ```yaml push-monitors: - name: "My Push Monitor" heartbeat-interval: 10 grace-period: 2 client-secret: "d6d5a85c-82c0-4bea-9926-c3eed32de32a" enabled: true integrations: - "slack:devops_channel" - "slack:general_channel" ``` -------------------------------- ### Environment Variable Configuration Example Source: https://kuvasz-uptime.dev/setup/configuration Configure security, data retention, application language, timeouts, and metrics export options using environment variables. This is an alternative to YAML configuration. ```env ENABLE_AUTH=true AUTH_MAX_AGE=86400 # 24 hours ADMIN_USER=YourSuperSecretUsername ADMIN_PASSWORD=YourSuperSecretPassword ADMIN_API_KEY=ThisShouldBeVeryVerySecureToo DATABASE_HOST=localhost DATABASE_PORT=5432 DATABASE_NAME=postgres DATABASE_USER=change_me DATABASE_PASSWORD=change_me EVENT_DATA_RETENTION_DAYS=365 LATENCY_DATA_RETENTION_DAYS=7 ENABLE_LOG_EVENT_HANDLER=true APP_LANGUAGE=en ENABLE_CHECK_UPDATES=true HTTP_CHECK_TIMEOUT_SECONDS=30 TZ=UTC ENABLE_METRICS_EXPORT=true ENABLE_OTLP_EXPORT=true OTLP_EXPORT_URL=https://example.host:4318/v1/metrics OTLP_EXPORT_HEADERS='Authorization=Bearer Your-collectors-API-token,key2=value' OTLP_EXPORT_STEP=PT1M ENABLE_PROMETHEUS_EXPORT=true ENABLE_PROMETHEUS_DESCRIPTIONS=true # Enable the individual metrics ENABLE_HTTP_UPTIME_STATUS_EXPORT=true ENABLE_HTTP_LATEST_LATENCY_EXPORT=true ENABLE_SSL_STATUS_EXPORT=true ENABLE_SSL_EXPIRY_EXPORT=true ENABLE_PUSH_UPTIME_STATUS_EXPORT=true ``` -------------------------------- ### HTTP Monitor Response Example Source: https://kuvasz-uptime.dev/features/api This JSON object represents a successful response when querying an HTTP monitor's details. It includes configuration parameters, status information, and integration details. ```json { "id": 107, "name": "kuvasz docs", "url": "https://kuvasz-uptime.dev", "sensitiveUrl": false, "uptimeCheckInterval": 300, "enabled": true, "sslCheckEnabled": true, "createdAt": "2025-06-29T10:01:25.416294+02:00", "updatedAt": "2025-06-29T10:57:56.470142+02:00", "uptimeStatus": "UP", "uptimeStatusStartedAt": "2025-06-29T10:01:29.618775+02:00", "lastUptimeCheck": "2025-06-29T11:25:58.880898+02:00", "nextUptimeCheck": "2025-06-29T11:30:58.884+02:00", "sslStatus": "VALID", "sslStatusStartedAt": "2025-06-29T10:02:30.473866+02:00", "lastSSLCheck": "2025-06-29T10:59:03.527202+02:00", "nextSSLCheck": "2025-06-30T10:59:03.532+02:00", "uptimeError": null, "sslError": null, "requestMethod": "GET", "latencyHistoryEnabled": true, "forceNoCache": true, "followRedirects": true, "sslExpiryThreshold": 7, "failureCountThreshold": 2, "sslValidUntil": "2025-08-10T10:54:01+02:00", "integrations": [ "telegram:telegram_test" ], "effectiveIntegrations": [ { "id": "email:email_test", "type": "EMAIL", "name": "email_test", "enabled": true, "global": true }, { "id": "slack:slack_global", "type": "SLACK", "name": "slack_global", "enabled": true, "global": true }, { "id": "discord:discord", "type": "DISCORD", "name": "discord", "enabled": true, "global": false }, { "id": "telegram:telegram_test", "type": "TELEGRAM", "name": "telegram_test", "enabled": true, "global": false }, { "id": "pagerduty:pd-test", "type": "PAGERDUTY", "name": "pd-test", "enabled": true, "global": true } ], "expectedStatusCodes": [200, 201, 303], "responseTimeThresholdMillis": 500, "expectedKeyword": "Kuvasz", "expectedKeywordCaseSensitive": true, "expectedKeywordNegated": false, "requestHeaders": { "Authorization": "Bearer jklfjkds8fdshlkfds" }, "expectedHeaders": { "Access-Control-Max-Age": "30" }, "requestBody": "{\"key\": \"value\"}" } ``` -------------------------------- ### Readiness/Health Probe Source: https://kuvasz-uptime.dev/setup/installation The `GET /api/v2/health` endpoint can be used as a readiness probe in container orchestration systems to check if Kuvasz is running. It does not require authentication and returns a simple JSON response indicating the application's status. ```APIDOC ## GET /api/v2/health ### Description Checks the readiness and health status of the Kuvasz application. ### Method GET ### Endpoint /api/v2/health ### Parameters This endpoint does not require any parameters. ### Response #### Success Response (200) - **status** (string) - The status of the application, e.g., "UP". ### Response Example { "status": "UP" } ``` -------------------------------- ### Prepare Custom cacerts File for SSL Checks Source: https://kuvasz-uptime.dev/management/examples Steps to prepare a custom cacerts file by pulling a base Docker image, copying the original cacerts, and importing a custom certificate using keytool. ```bash # 1. Pull the current base image docker pull eclipse-temurin:25-jre-alpine-3.23 # 2. Copy the "original" cacerts to a local file docker run --rm --entrypoint cat eclipse-temurin:25-jre-alpine-3.23 /opt/java/openjdk/lib/security/cacerts > cacerts # 3. This is the tricky step: we attach back the current folder where the cacerts, and also the custom certificate should exist and we add the custom certificate to the keystore docker run --rm -v `pwd`:/tmp/certs eclipse-temurin:25-jre-alpine-3.23 sh -c 'cd /tmp/certs && keytool -keystore cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias your-custom-alias -file your-custom-cert.crt' ``` -------------------------------- ### Get Telegram Chat ID Example Source: https://kuvasz-uptime.dev/management/integrations Example JSON response from the Telegram API showing where to find the 'chat-id' for notifications. ```json { // ... other fields ... "sender_chat": { "id": -343243243111, "title": "kuvasz uptime events", "type": "channel" }, // ... other fields ... } ``` -------------------------------- ### Get Specific Push Monitor Source: https://kuvasz-uptime.dev/management/push-monitors Retrieves details of a specific push monitor by its ID. ```APIDOC ## GET /api/v2/push-monitors/{id} ### Description Gets a specific push monitor by its ID. ### Method GET ### Endpoint /api/v2/push-monitors/{id} ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the push monitor. ``` -------------------------------- ### Get a specific HTTP monitor Source: https://kuvasz-uptime.dev/management/http-monitors Retrieves the details of a specific HTTP monitor by its unique ID. ```APIDOC ## Get HTTP monitor by ID ### Description Retrieves the details of a specific HTTP monitor by its unique ID. ### Method GET ### Endpoint /api/v2/http-monitors/{id} ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the HTTP monitor. ``` -------------------------------- ### Send Heartbeat Source: https://kuvasz-uptime.dev/management/push-monitors Send a heartbeat to a push monitor to signal it is UP. This can be done using either a POST or GET request. ```APIDOC ## Send Heartbeat ### Description Send a heartbeat to a push monitor to signal it is UP. This can be done using either a POST or GET request. ### Method GET or POST ### Endpoint `/api/v2/push-monitors/heartbeats/{clientSecret}` ### Parameters #### Path Parameters - **clientSecret** (string) - Required - The secret key of the monitor. ### Request Example ```bash curl '[YOUR_HOST]/api/v2/push-monitors/heartbeats/[CLIENT_SECRET]' ``` ``` -------------------------------- ### API Endpoint Changes Source: https://kuvasz-uptime.dev/upgrade-notes API endpoints have been moved from `/api/v1` to `/api/v2`. Specific changes to `GET /api/v2/settings` and removed endpoints are detailed below. ```APIDOC ## API Endpoint Changes ### Description All API endpoints have been migrated from `/api/v1` to `/api/v2`. While most endpoints function similarly, `GET /api/v2/settings` has a modified response schema, and some endpoints have been removed or renamed. ### Changed Endpoints #### `GET /api/v2/settings` ##### Description The response schema for `GET /api/v2/settings` has been updated. It no longer includes the `integrations` property, which is now available via a separate endpoint. Additionally, `MeterSettingsDto` properties have been renamed for clarity, and `editabilityState` replaces the `readOnlyMode` property. ##### Response Schema Changes: - `integrations`: Removed from the response. - `MeterSettingsDto` property renames: - `latestLatency` -> `httpLatestLatency` - `uptimeStatus` -> `httpUptimeStatus` - `editabilityState`: Replaces `readOnlyMode` to reflect UI & API editability. ### Removed Endpoints #### `GET /api/v1/health` (Renamed to `GET /api/v2/health`) ##### Description This endpoint has been moved to `/api/v2/health`. Functionality remains the same. #### `GET /api/v1/prometheus` (Renamed to `GET /api/v2/prometheus`) ##### Description This endpoint has been moved to `/api/v2/prometheus`. Gauge names have also been made more scoped. Refer to the Metrics export section for details. ``` -------------------------------- ### Send Heartbeat to Push Monitor Source: https://kuvasz-uptime.dev/management/push-monitors Send a heartbeat to a push monitor using a GET or POST request. Replace [YOUR_HOST] and [CLIENT_SECRET] with your specific values. ```curl curl '[YOUR_HOST]/api/v2/push-monitors/heartbeats/[CLIENT_SECRET]' ``` -------------------------------- ### Configure Slack Integrations Source: https://kuvasz-uptime.dev/management/integrations Set up Slack integrations with webhook URLs. Multiple integrations can be configured, including a global one. ```yaml integrations: slack: - name: slack-example webhook-url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXX' - name: slack-global webhook-url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXX' global: true # ... other Slack integrations ``` -------------------------------- ### Show Helm Chart Values Source: https://kuvasz-uptime.dev/setup/helm-deployment Inspect all available configuration options for the Kuvasz Helm chart by showing its default values. ```bash helm show values oci://ghcr.io/kuvasz-uptime/kuvasz-uptime --version ``` -------------------------------- ### Create New Push Monitor Source: https://kuvasz-uptime.dev/management/push-monitors Creates a new push monitor with the specified configuration. ```APIDOC ## POST /api/v2/push-monitors ### Description Creates a new push monitor. ### Method POST ### Endpoint /api/v2/push-monitors ### Request Body - **name** (string) - Required - The unique name of the monitor. - **heartbeat_interval** (number) - Required - The interval in seconds for expected heartbeats (minimum 10). - **grace_period** (number) - Optional - The grace period in seconds after the heartbeat interval. - **failure_count_threshold** (number) - Optional - The number of consecutive failures before the monitor is considered down (defaults to 1). - **client_secret** (string) - Required - The unique client secret for authenticating heartbeats (at least 36 characters). - **enabled** (boolean) - Optional - Whether the monitor is enabled (defaults to true). - **integrations** (array) - Optional - A list of integrations to assign to the monitor (format: "{type}:{name}"). ``` -------------------------------- ### Enable Prometheus Descriptions (Environment Variable) Source: https://kuvasz-uptime.dev/management/metrics-exporters Enable meter descriptions for Prometheus by setting the environment variable 'ENABLE_PROMETHEUS_DESCRIPTIONS' to true. Disable to minimize data. ```env ENABLE_PROMETHEUS_DESCRIPTIONS=true ``` -------------------------------- ### Empty Status Pages Array in YAML Source: https://kuvasz-uptime.dev/management/status-pages An example of an empty 'status-pages' array in YAML. Providing an empty array will result in all existing status pages in the database being deleted. ```yaml status-pages: [] ``` -------------------------------- ### Signal Failure Source: https://kuvasz-uptime.dev/management/push-monitors Signal a failure for a push monitor. This can be done using either a POST or GET request. The POST request can optionally include an 'error' field for more details. ```APIDOC ## Signal Failure ### Description Signal a failure for a push monitor. This can be done using either a POST or GET request. The POST request can optionally include an 'error' field for more details. ### Method GET or POST ### Endpoint `/api/v2/push-monitors/heartbeats/{clientSecret}/failure` ### Parameters #### Path Parameters - **clientSecret** (string) - Required - The secret key of the monitor. #### Request Body (for POST) - **error** (string) - Optional - Provides more details about the failure. ### Request Example (POST with error) ```bash curl '[YOUR_HOST]/api/v2/push-monitors/heartbeats/[CLIENT_SECRET]/failure' \ --header 'Content-Type: application/json' \ --data '{ "error": "failed to execute pgdump" }' ``` ``` -------------------------------- ### Enable Authentication (Environment Variable) Source: https://kuvasz-uptime.dev/setup/configuration Enable or disable authentication for Kuvasz. If disabled, anyone can access the instance. ```bash ENABLE_AUTH=true ``` -------------------------------- ### Check Database Connection Source: https://kuvasz-uptime.dev/setup/helm-deployment Verify PostgreSQL pod status in the kuvasz-uptime namespace. Ensure database credentials in your values file are correct and network policies permit communication. ```bash kubectl get pods -n kuvasz-uptime ``` -------------------------------- ### Signal Failure for Push Monitor Source: https://kuvasz-uptime.dev/management/push-monitors Signal a failure for a push monitor using a GET or POST request. The POST request can include an optional 'error' field for more details. ```curl curl '[YOUR_HOST]/api/v2/push-monitors/heartbeats/[CLIENT_SECRET]/failure' \ --header 'Content-Type: application/json' \ --data '{ "error": "failed to execute pgdump" }' ``` -------------------------------- ### Enable Push Uptime Status Export (Environment Variable) Source: https://kuvasz-uptime.dev/management/metrics-exporters Enable the push uptime status metric export by setting the environment variable 'ENABLE_PUSH_UPTIME_STATUS_EXPORT' to true. ```env ENABLE_PUSH_UPTIME_STATUS_EXPORT=true ``` -------------------------------- ### Set Database Host (Environment Variable) Source: https://kuvasz-uptime.dev/setup/configuration Configure the hostname or IP address of the PostgreSQL database server. ```bash DATABASE_HOST=localhost ``` -------------------------------- ### Check Deployment Logs Source: https://kuvasz-uptime.dev/setup/helm-deployment Use this command to stream logs from the kuvasz-uptime deployment in the kuvasz-uptime namespace. Useful for debugging runtime errors. ```bash kubectl logs -n kuvasz-uptime deployment/kuvasz-uptime -f ``` -------------------------------- ### Minimal values.yaml for Kuvasz Deployment Source: https://kuvasz-uptime.dev/setup/helm-deployment A basic configuration file for deploying Kuvasz, including database and authentication settings. Remember to change the default secrets. ```yaml # Database configuration postgresql: enabled: true auth: username: kuvasz-uptime password: "YourSuperSecretDbPassword" # Change this! database: kuvasz-uptime # Authentication configuration auth: adminUser: "YourSuperSecretUsername" # Change this! adminPassword: "YourSuperSecretPassword" # Change this! adminApiKey: "ThisShouldBeVeryVerySecureToo" # Change this! # Ingress configuration (optional) ingress: enabled: false # Uncomment and configure if you want to expose Kuvasz externally # className: "nginx" # hosts: # - host: kuvasz-uptime.example.com # paths: # - path: / # pathType: Prefix ``` -------------------------------- ### Get HTTP Monitor Details Source: https://kuvasz-uptime.dev/features/api Retrieves detailed information about a specific HTTP monitor, including its configuration, status, and recent check results. This endpoint is useful for monitoring the health and performance of your web services. ```APIDOC ## GET /api/v2/http-monitors/{id} ### Description Retrieves detailed information about a specific HTTP monitor. ### Method GET ### Endpoint /api/v2/http-monitors/{id} ### Parameters #### Path Parameters - **id** (integer) - Required - The unique identifier of the HTTP monitor. ### Request Example ```bash curl -X GET "http://your.kuvasz.host/api/v2/http-monitors/107" \ -H "X-API-KEY: ThisShouldBeVeryVerySecureToo" ``` ### Response #### Success Response (200) - **id** (integer) - The unique identifier of the monitor. - **name** (string) - The name of the monitor. - **url** (string) - The URL being monitored. - **sensitiveUrl** (boolean) - Indicates if the URL contains sensitive information. - **uptimeCheckInterval** (integer) - The interval in seconds for uptime checks. - **enabled** (boolean) - Whether the monitor is enabled. - **sslCheckEnabled** (boolean) - Whether SSL certificate checks are enabled. - **createdAt** (string) - The timestamp when the monitor was created. - **updatedAt** (string) - The timestamp when the monitor was last updated. - **uptimeStatus** (string) - The current uptime status (e.g., UP, DOWN). - **uptimeStatusStartedAt** (string) - The timestamp when the current uptime status started. - **lastUptimeCheck** (string) - The timestamp of the last uptime check. - **nextUptimeCheck** (string) - The timestamp of the next scheduled uptime check. - **sslStatus** (string) - The current SSL certificate status (e.g., VALID, EXPIRED). - **sslStatusStartedAt** (string) - The timestamp when the current SSL status started. - **lastSSLCheck** (string) - The timestamp of the last SSL check. - **nextSSLCheck** (string) - The timestamp of the next scheduled SSL check. - **uptimeError** (string) - Details about any uptime error, if applicable. - **sslError** (string) - Details about any SSL error, if applicable. - **requestMethod** (string) - The HTTP method used for the check (e.g., GET, POST). - **latencyHistoryEnabled** (boolean) - Whether latency history tracking is enabled. - **forceNoCache** (boolean) - Whether to force no caching for requests. - **followRedirects** (boolean) - Whether to follow HTTP redirects. - **sslExpiryThreshold** (integer) - The threshold in days for SSL certificate expiry warnings. - **failureCountThreshold** (integer) - The number of consecutive failures before triggering an alert. - **sslValidUntil** (string) - The expiration date of the SSL certificate. - **integrations** (array) - A list of integrations configured for this monitor. - **effectiveIntegrations** (array) - A list of effective integrations applied to this monitor. - **expectedStatusCodes** (array) - A list of expected HTTP status codes. - **responseTimeThresholdMillis** (integer) - The response time threshold in milliseconds. - **expectedKeyword** (string) - A keyword expected in the response body. - **expectedKeywordCaseSensitive** (boolean) - Whether the keyword check is case-sensitive. - **expectedKeywordNegated** (boolean) - Whether the keyword check is negated. - **requestHeaders** (object) - Custom headers to send with the request. - **expectedHeaders** (object) - Headers expected in the response. - **requestBody** (string) - The request body to send for POST or PUT requests. ### Response Example ```json { "id": 107, "name": "kuvasz docs", "url": "https://kuvasz-uptime.dev", "sensitiveUrl": false, "uptimeCheckInterval": 300, "enabled": true, "sslCheckEnabled": true, "createdAt": "2025-06-29T10:01:25.416294+02:00", "updatedAt": "2025-06-29T10:57:56.470142+02:00", "uptimeStatus": "UP", "uptimeStatusStartedAt": "2025-06-29T10:01:29.618775+02:00", "lastUptimeCheck": "2025-06-29T11:25:58.880898+02:00", "nextUptimeCheck": "2025-06-29T11:30:58.884+02:00", "sslStatus": "VALID", "sslStatusStartedAt": "2025-06-29T10:02:30.473866+02:00", "lastSSLCheck": "2025-06-29T10:59:03.527202+02:00", "nextSSLCheck": "2025-06-30T10:59:03.532+02:00", "uptimeError": null, "sslError": null, "requestMethod": "GET", "latencyHistoryEnabled": true, "forceNoCache": true, "followRedirects": true, "sslExpiryThreshold": 7, "failureCountThreshold": 2, "sslValidUntil": "2025-08-10T10:54:01+02:00", "integrations": [ "telegram:telegram_test" ], "effectiveIntegrations": [ { "id": "email:email_test", "type": "EMAIL", "name": "email_test", "enabled": true, "global": true }, { "id": "slack:slack_global", "type": "SLACK", "name": "slack_global", "enabled": true, "global": true }, { "id": "discord:discord", "type": "DISCORD", "name": "discord", "enabled": true, "global": false }, { "id": "telegram:telegram_test", "type": "TELEGRAM", "name": "telegram_test", "enabled": true, "global": false }, { "id": "pagerduty:pd-test", "type": "PAGERDUTY", "name": "pd-test", "enabled": true, "global": true } ], "expectedStatusCodes": [200, 201, 303], "responseTimeThresholdMillis": 500, "expectedKeyword": "Kuvasz", "expectedKeywordCaseSensitive": true, "expectedKeywordNegated": false, "requestHeaders": { "Authorization": "Bearer jklfjkds8fdshlkfds" }, "expectedHeaders": { "Access-Control-Max-Age": "30" }, "requestBody": "{\"key\": \"value\"}" } ``` ``` -------------------------------- ### Set Database Name (Environment Variable) Source: https://kuvasz-uptime.dev/setup/configuration Configure the name of the PostgreSQL database. Kuvasz will create a 'kuvasz' schema within this database. ```bash DATABASE_NAME=postgres ``` -------------------------------- ### List All Push Monitors Source: https://kuvasz-uptime.dev/management/push-monitors Retrieves a list of all configured push monitors. ```APIDOC ## GET /api/v2/push-monitors ### Description Lists all push monitors. ### Method GET ### Endpoint /api/v2/push-monitors ``` -------------------------------- ### Enable Push Uptime Status Export (YAML) Source: https://kuvasz-uptime.dev/management/metrics-exporters Enable the push uptime status metric export by setting 'metrics-exports.push-uptime-status' to true in your YAML configuration. ```yaml metrics-exports.push-uptime-status: true ``` -------------------------------- ### Enable SSL Status Export (Environment Variable) Source: https://kuvasz-uptime.dev/management/metrics-exporters Enable the SSL status metric export by setting the environment variable 'ENABLE_SSL_STATUS_EXPORT' to true. ```env ENABLE_SSL_STATUS_EXPORT=true ``` -------------------------------- ### Configure Push Monitor in YAML Source: https://kuvasz-uptime.dev/management/push-monitors Define push monitors using YAML for advanced configuration. Ensure unique names and appropriate intervals. Client secret must be at least 36 characters long. ```yaml push-monitors: - name: "My Push Monitor" heartbeat-interval: 10 grace-period: 2 failure-count-threshold: 3 client-secret: "d6d5a85c-82c0-4bea-9926-c3eed32de32a" enabled: true integrations: - "slack:devops_channel" # ... other monitors ``` -------------------------------- ### Create a new HTTP monitor Source: https://kuvasz-uptime.dev/management/http-monitors Creates a new HTTP monitor with the specified configuration. ```APIDOC ## Create HTTP monitor ### Description Creates a new HTTP monitor with the specified configuration. ### Method POST ### Endpoint /api/v2/http-monitors ### Request Body - **name** (string) - Required - The name of the monitor, which must be unique. - **url** (string) - Required - The URL of the monitor to be monitored. - **uptime-check-interval** (number) - Required - The interval in seconds at which uptime checks will be performed. Minimum value is 5 seconds. - **enabled** (boolean) - Optional - Whether the monitor is enabled. - **ssl-check-enabled** (boolean) - Optional - Whether SSL check is enabled. - **latency-history-enabled** (boolean) - Optional - Whether latency history is enabled. - **request-method** (string) - Optional - The HTTP method to use for uptime checks (e.g., GET, HEAD). Defaults to GET. - **follow-redirects** (boolean) - Optional - Whether to follow redirects. Defaults to true. - **force-no-cache** (boolean) - Optional - Whether to send a `Cache-Control: no-cache` header. Defaults to true. - **ssl-expiry-threshold** (number) - Optional - The number of days before SSL certificate expiry to alert. Defaults to 30 days. - **integrations** (array) - Optional - A list of integrations to assign to the monitor. Format: `"{integration-type}:{integration-name}"`. - **expected-status-codes** (array) - Optional - A list of expected HTTP status codes. - **expected-keyword** (string) - Optional - A keyword to look for in the response body. - **expected-keyword-case-sensitive** (boolean) - Optional - Whether keyword matching is case-sensitive. Defaults to false. - **expected-keyword-negated** (boolean) - Optional - Whether keyword matching is negated. Defaults to false. - **response-time-threshold** (number) - Optional - The maximum response time in milliseconds. Maximum is 30000 ms. - **request-headers** (object) - Optional - A map of request headers to send with the request. - **expected-headers** (object) - Optional - A map of expected response headers. - **request-body** (object) - Optional - The JSON request body to send with the request. - **failure-count-threshold** (number) - Optional - The number of consecutive failures before the monitor is considered down. Defaults to 1. - **sensitive-url** (boolean) - Optional - Whether the URL is considered sensitive. Defaults to false. ``` -------------------------------- ### Make HTTP Monitor Request with cURL Source: https://kuvasz-uptime.dev/features/api Use this cURL command to retrieve details for a specific HTTP monitor. Ensure you replace 'http://your.kuvasz.host' with your Kuvasz instance URL and '107' with the monitor ID. Authentication is handled via the 'X-API-KEY' header. ```bash curl -X GET "http://your.kuvasz.host/api/v2/http-monitors/107" \ -H "X-API-KEY: ThisShouldBeVeryVerySecureToo" ``` -------------------------------- ### Enable OpenTelemetry Exporter Source: https://kuvasz-uptime.dev/management/metrics-exporters Configure whether to enable the OpenTelemetry exporter. Set to true to activate. ```yaml micronaut.metrics.export.otlp.enabled: true ``` ```env ENABLE_OTLP_EXPORT=true ``` -------------------------------- ### Enable HTTP Uptime Status Export (Environment Variable) Source: https://kuvasz-uptime.dev/management/metrics-exporters Enable the HTTP uptime status metric export by setting the environment variable 'ENABLE_HTTP_UPTIME_STATUS_EXPORT' to true. ```env ENABLE_HTTP_UPTIME_STATUS_EXPORT=true ``` -------------------------------- ### Set Database Password (Environment Variable) Source: https://kuvasz-uptime.dev/setup/configuration Configure the password for the database user. ```bash DATABASE_PASSWORD=change_me ``` -------------------------------- ### Set Authentication Max Age (Environment Variable) Source: https://kuvasz-uptime.dev/setup/configuration Configure the maximum age of the authentication token in seconds. Defaults to 24 hours. ```bash AUTH_MAX_AGE=86400 ``` -------------------------------- ### Enable Metrics Export (Environment Variable) Source: https://kuvasz-uptime.dev/management/metrics-exporters Enable metrics export by setting the environment variable 'ENABLE_METRICS_EXPORT' to true. Remember to restart the container. ```env ENABLE_METRICS_EXPORT=true ``` -------------------------------- ### Enable SSL Status Export (YAML) Source: https://kuvasz-uptime.dev/management/metrics-exporters Enable the SSL status metric export by setting 'metrics-exports.ssl-status' to true in your YAML configuration. ```yaml metrics-exports.ssl-status: true ``` -------------------------------- ### Enable Prometheus Descriptions (YAML) Source: https://kuvasz-uptime.dev/management/metrics-exporters Enable meter descriptions for Prometheus by setting 'micronaut.metrics.export.prometheus.descriptions' to true in your YAML configuration. Disable to minimize data. ```yaml micronaut.metrics.export.prometheus.descriptions: true ``` -------------------------------- ### Access Kuvasz Locally via Port-Forwarding Source: https://kuvasz-uptime.dev/setup/helm-deployment Expose the Kuvasz service to your local machine for direct access. This is useful for testing and development. ```bash kubectl port-forward -n kuvasz-uptime svc/kuvasz-uptime 8080:8080 ``` -------------------------------- ### Enable Prometheus Exporter (YAML) Source: https://kuvasz-uptime.dev/management/metrics-exporters Enable the Prometheus exporter by setting 'micronaut.metrics.export.prometheus.enabled' to true in your YAML configuration. ```yaml micronaut.metrics.export.prometheus.enabled: true ``` -------------------------------- ### Mount Custom Cacerts in Docker Source: https://kuvasz-uptime.dev/management/examples Mount a custom cacerts file into the OpenJDK environment within a Docker container. Ensure the container is recreated after applying this volume. ```yaml # ... volumes: - /path/to/your/cacerts:/opt/java/openjdk/lib/security/cacerts:ro # ... ``` -------------------------------- ### Enable Prometheus Exporter (Environment Variable) Source: https://kuvasz-uptime.dev/management/metrics-exporters Enable the Prometheus exporter by setting the environment variable 'ENABLE_PROMETHEUS_EXPORT' to true. ```env ENABLE_PROMETHEUS_EXPORT=true ``` -------------------------------- ### Configure Resource Limits for Kuvasz Source: https://kuvasz-uptime.dev/setup/helm-deployment Set resource requests and limits for CPU and memory for the Kuvasz application pods. These are recommended minimums. ```yaml resources: limits: cpu: 1000m memory: 768Mi requests: cpu: 100m memory: 256Mi ``` -------------------------------- ### Set Database User (Environment Variable) Source: https://kuvasz-uptime.dev/setup/configuration Configure the username for connecting to the PostgreSQL database. This user must have permissions to create schemas and tables. ```bash DATABASE_USER=change_me ``` -------------------------------- ### Configure HTTP Monitor in YAML Source: https://kuvasz-uptime.dev/management/http-monitors Define an HTTP monitor with detailed settings for URL, checks, and expected responses. Ensure to read the common documentation for managing monitors before configuring. ```yaml http-monitors: - name: "My Monitor" url: "https://kuvasz-uptime.dev" sensitive-url: false uptime-check-interval: 60 enabled: true ssl-check-enabled: false latency-history-enabled: true request-method: "GET" follow-redirects: true force-no-cache: true ssl-expiry-threshold: 30 failure-count-threshold: 1 expected-status-codes: - 200 - 201 - 303 expected-keyword: "Kuvasz" expected-keyword-case-sensitive: false expected-keyword-negated: false response-time-threshold-millis: 500 request-headers: Host: "example.com" expected-headers: Content-Type: "application/json" request-body: "{\"key\":\"value\"}" integrations: - "email:my-email-integration" ``` -------------------------------- ### Homepage Integration: Global HTTP Stats Widget Source: https://kuvasz-uptime.dev/management/examples Configure a Homepage custom API widget to display global HTTP monitor statistics from Kuvasz. Requires an API key and specifies data mappings for various metrics. ```yaml - Global HTTP stats: id: kuvasz-http-stats icon: sh-kuvasz widget: type: customapi display: list url: https://demo.kuvasz-uptime.dev/api/v2/http-monitors/stats refreshInterval: 300 headers: X-Api-Key: KuvaszDemoAPIKey mappings: - label: Total field: actual.uptimeStats.total - label: Up field: actual.uptimeStats.up - label: Down field: actual.uptimeStats.down - label: Paused field: actual.uptimeStats.paused - label: Pending field: actual.uptimeStats.inProgress - label: Last incident field: actual.uptimeStats.lastIncident format: date locale: en dateStyle: long timeStyle: long - label: Incidents (last 7 days) field: history.uptimeStats.incidents - label: Affected monitors (last 7 days) field: history.uptimeStats.affectedMonitors - label: Uptime ratio (last 7 days) field: history.uptimeStats.uptimeRatio format: float scale: 100 suffix: '%' - label: Total downtime (last 7 days) field: history.uptimeStats.totalDowntimeSeconds format: duration - label: SSL Valid field: actual.sslStats.valid - label: SSL Invalid field: actual.sslStats.invalid - label: SSL Expiring field: actual.sslStats.willExpire ``` -------------------------------- ### Enable Authentication (YAML) Source: https://kuvasz-uptime.dev/setup/configuration Enable or disable authentication for Kuvasz. If disabled, anyone can access the instance. ```yaml micronaut.security.enabled: true ```