OneUptime
OneUptime is an open-source observability platform: uptime monitoring, status pages, incident management, on-call rotations, logs, traces and metrics in one place.
Configuration
services:
oneuptime:
image: oneuptime/app:11.5.6
restart: unless-stopped
environment:
- PORT=3002
- NODE_ENV=production
- BILLING_ENABLED=false
- IS_ENTERPRISE_EDITION=false
- LOG_LEVEL=ERROR
- DISABLE_TELEMETRY=true
# Public host (domain) and protocol used to build links.
- HOST=${HOST}
- HTTP_PROTOCOL=${HTTP_PROTOCOL}
- ONEUPTIME_SECRET=${ONEUPTIME_SECRET}
- ENCRYPTION_SECRET=${ENCRYPTION_SECRET}
# Probes that present this key are allowed to self-register.
- REGISTER_PROBE_KEY=${REGISTER_PROBE_KEY}
- DATABASE_HOST=postgres
- DATABASE_PORT=5432
- DATABASE_USERNAME=postgres
- DATABASE_PASSWORD=${DATABASE_PASSWORD}
- DATABASE_NAME=oneuptimedb
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_USERNAME=default
- REDIS_PASSWORD=${REDIS_PASSWORD}
- REDIS_DB=0
- CLICKHOUSE_HOST=clickhouse
- CLICKHOUSE_PORT=8123
- CLICKHOUSE_USER=default
- CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD}
- CLICKHOUSE_DATABASE=oneuptime
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
clickhouse:
condition: service_healthy
ingress:
image: oneuptime/nginx:11.5.6
restart: unless-stopped
environment:
- NODE_ENV=production
- BILLING_ENABLED=false
- LOG_LEVEL=ERROR
- DISABLE_TELEMETRY=true
- HOST=${HOST}
- NGINX_LISTEN_ADDRESS=
- NGINX_LISTEN_OPTIONS=
- PROVISION_SSL=
# Long domains (e.g. generated *.sslip.io hosts) overflow nginx's
# default server_names_hash_bucket_size of 64.
- SERVER_NAMES_HASH_BUCKET_SIZE=128
# Where nginx proxies the UI/API to.
- SERVER_APP_HOSTNAME=oneuptime
- APP_PORT=3002
# The marketing "home" app is not deployed (only used when billing is
# enabled), but nginx needs the vars to render its config.
- SERVER_HOME_HOSTNAME=home
- HOME_PORT=1444
# The ingress sidecar (custom-domain certificate writer) connects to
# Postgres and Redis.
- ONEUPTIME_SECRET=${ONEUPTIME_SECRET}
- ENCRYPTION_SECRET=${ENCRYPTION_SECRET}
- DATABASE_HOST=postgres
- DATABASE_PORT=5432
- DATABASE_USERNAME=postgres
- DATABASE_PASSWORD=${DATABASE_PASSWORD}
- DATABASE_NAME=oneuptimedb
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_USERNAME=default
- REDIS_PASSWORD=${REDIS_PASSWORD}
- REDIS_DB=0
depends_on:
postgres:
condition: service_healthy
oneuptime:
condition: service_started
probe:
image: oneuptime/probe:11.5.6
restart: unless-stopped
environment:
- PORT=3874
- NODE_ENV=production
- LOG_LEVEL=ERROR
- DISABLE_TELEMETRY=true
# The probe reaches OneUptime through the ingress ("ingress" is part of
# nginx's server_name, so all API routes resolve correctly).
- ONEUPTIME_URL=http://ingress:7849
- PROBE_NAME=Probe-1
- PROBE_DESCRIPTION=Default probe for monitors
- PROBE_MONITORING_WORKERS=3
- PROBE_MONITOR_FETCH_LIMIT=10
- PROBE_KEY=${PROBE_KEY}
- REGISTER_PROBE_KEY=${REGISTER_PROBE_KEY}
depends_on:
ingress:
condition: service_started
postgres:
image: postgres:15
restart: unless-stopped
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
- POSTGRES_DB=oneuptimedb
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d oneuptimedb"]
interval: 10s
timeout: 5s
retries: 5
start_period: 15s
redis:
image: redis:7.0.12
restart: unless-stopped
command: redis-server --requirepass "${REDIS_PASSWORD}" --save "" --appendonly no
healthcheck:
test: ["CMD-SHELL", "redis-cli -a \"$$REDIS_PASSWORD\" ping | grep PONG"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
environment:
- REDIS_PASSWORD=${REDIS_PASSWORD}
clickhouse:
image: clickhouse/clickhouse-server:25.7
restart: unless-stopped
environment:
- CLICKHOUSE_USER=default
- CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD}
- CLICKHOUSE_DB=oneuptime
- CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1
volumes:
- clickhouse-data:/var/lib/clickhouse
# Single-node cluster + embedded Keeper (OneUptime's analytics schema is
# always ReplicatedMergeTree + Distributed) and Distributed-insert
# batching, as shipped by upstream.
- ../files/clickhouse/cluster.xml:/etc/clickhouse-server/config.d/cluster.xml
- ../files/clickhouse/distributed-insert-tuning.xml:/etc/clickhouse-server/users.d/distributed-insert-tuning.xml
healthcheck:
test: ["CMD-SHELL", "clickhouse-client --password \"$$CLICKHOUSE_PASSWORD\" --query 'SELECT 1'"]
interval: 10s
timeout: 5s
retries: 5
start_period: 15s
volumes:
postgres-data:
clickhouse-data:[variables]
main_domain = "${domain}"
db_password = "${password:32}"
redis_password = "${password:32}"
clickhouse_password = "${password:32}"
oneuptime_secret = "${password:64}"
encryption_secret = "${password:64}"
register_probe_key = "${password:32}"
probe_key = "${password:32}"
[config]
[[config.domains]]
serviceName = "ingress"
port = 7849
host = "${main_domain}"
[config.env]
# Public host OneUptime is served on. Must match the domain above.
"HOST" = "${main_domain}"
# Change to "https" once you serve the domain over SSL/TLS.
"HTTP_PROTOCOL" = "http"
"DATABASE_PASSWORD" = "${db_password}"
"REDIS_PASSWORD" = "${redis_password}"
"CLICKHOUSE_PASSWORD" = "${clickhouse_password}"
"ONEUPTIME_SECRET" = "${oneuptime_secret}"
"ENCRYPTION_SECRET" = "${encryption_secret}"
# Shared key probes use to self-register with the server.
"REGISTER_PROBE_KEY" = "${register_probe_key}"
# Identity key of the bundled probe.
"PROBE_KEY" = "${probe_key}"
# Single-node ClickHouse cluster + embedded Keeper drop-in (from upstream:
# OneUptime's analytics schema is always ReplicatedMergeTree + Distributed,
# so a single node runs an embedded Keeper and a 1-node "oneuptime" cluster).
[[config.mounts]]
filePath = "/clickhouse/cluster.xml"
content = """
<?xml version="1.0"?>
<clickhouse>
<!-- Embedded ClickHouse Keeper: coordinates ReplicatedMergeTree on this node. -->
<keeper_server>
<tcp_port>9181</tcp_port>
<server_id>1</server_id>
<log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path>
<snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path>
<coordination_settings>
<operation_timeout_ms>10000</operation_timeout_ms>
<session_timeout_ms>30000</session_timeout_ms>
<raft_logs_level>warning</raft_logs_level>
</coordination_settings>
<raft_configuration>
<server>
<id>1</id>
<hostname>localhost</hostname>
<port>9234</port>
</server>
</raft_configuration>
</keeper_server>
<!-- Point this server at its own embedded Keeper for replication metadata. -->
<zookeeper>
<node>
<host>localhost</host>
<port>9181</port>
</node>
</zookeeper>
<!-- Replication macros. Single node => one shard, one replica. -->
<macros>
<shard>01</shard>
<replica>replica-1</replica>
<cluster>oneuptime</cluster>
</macros>
<!-- The cluster the app issues `ON CLUSTER 'oneuptime'` and
`Distributed('oneuptime', ...)` against. -->
<remote_servers>
<oneuptime>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>localhost</host>
<port>9000</port>
</replica>
</shard>
</oneuptime>
</remote_servers>
</clickhouse>
"""
# Batches the background Distributed-insert sender so telemetry ingestion
# keeps up with volume (from upstream Clickhouse/users.d).
[[config.mounts]]
filePath = "/clickhouse/distributed-insert-tuning.xml"
content = """
<?xml version="1.0"?>
<clickhouse>
<profiles>
<default>
<!-- Coalesce many spooled files into one insert into the local table. -->
<distributed_background_insert_batch>1</distributed_background_insert_batch>
<!-- If a coalesced batch fails, retry its files individually. -->
<distributed_background_insert_split_batch_on_failure>1</distributed_background_insert_split_batch_on_failure>
<!-- Write to the local replica directly. -->
<prefer_localhost_replica>1</prefer_localhost_replica>
</default>
</profiles>
</clickhouse>
"""Base64
To import this template in Dokploy: create a Compose service → Advanced → Base64 import and paste the content below:
ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuICBvbmV1cHRpbWU6XG4gICAgaW1hZ2U6IG9uZXVwdGltZS9hcHA6MTEuNS42XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUE9SVD0zMDAyXG4gICAgICAtIE5PREVfRU5WPXByb2R1Y3Rpb25cbiAgICAgIC0gQklMTElOR19FTkFCTEVEPWZhbHNlXG4gICAgICAtIElTX0VOVEVSUFJJU0VfRURJVElPTj1mYWxzZVxuICAgICAgLSBMT0dfTEVWRUw9RVJST1JcbiAgICAgIC0gRElTQUJMRV9URUxFTUVUUlk9dHJ1ZVxuICAgICAgIyBQdWJsaWMgaG9zdCAoZG9tYWluKSBhbmQgcHJvdG9jb2wgdXNlZCB0byBidWlsZCBsaW5rcy5cbiAgICAgIC0gSE9TVD0ke0hPU1R9XG4gICAgICAtIEhUVFBfUFJPVE9DT0w9JHtIVFRQX1BST1RPQ09MfVxuICAgICAgLSBPTkVVUFRJTUVfU0VDUkVUPSR7T05FVVBUSU1FX1NFQ1JFVH1cbiAgICAgIC0gRU5DUllQVElPTl9TRUNSRVQ9JHtFTkNSWVBUSU9OX1NFQ1JFVH1cbiAgICAgICMgUHJvYmVzIHRoYXQgcHJlc2VudCB0aGlzIGtleSBhcmUgYWxsb3dlZCB0byBzZWxmLXJlZ2lzdGVyLlxuICAgICAgLSBSRUdJU1RFUl9QUk9CRV9LRVk9JHtSRUdJU1RFUl9QUk9CRV9LRVl9XG4gICAgICAtIERBVEFCQVNFX0hPU1Q9cG9zdGdyZXNcbiAgICAgIC0gREFUQUJBU0VfUE9SVD01NDMyXG4gICAgICAtIERBVEFCQVNFX1VTRVJOQU1FPXBvc3RncmVzXG4gICAgICAtIERBVEFCQVNFX1BBU1NXT1JEPSR7REFUQUJBU0VfUEFTU1dPUkR9XG4gICAgICAtIERBVEFCQVNFX05BTUU9b25ldXB0aW1lZGJcbiAgICAgIC0gUkVESVNfSE9TVD1yZWRpc1xuICAgICAgLSBSRURJU19QT1JUPTYzNzlcbiAgICAgIC0gUkVESVNfVVNFUk5BTUU9ZGVmYXVsdFxuICAgICAgLSBSRURJU19QQVNTV09SRD0ke1JFRElTX1BBU1NXT1JEfVxuICAgICAgLSBSRURJU19EQj0wXG4gICAgICAtIENMSUNLSE9VU0VfSE9TVD1jbGlja2hvdXNlXG4gICAgICAtIENMSUNLSE9VU0VfUE9SVD04MTIzXG4gICAgICAtIENMSUNLSE9VU0VfVVNFUj1kZWZhdWx0XG4gICAgICAtIENMSUNLSE9VU0VfUEFTU1dPUkQ9JHtDTElDS0hPVVNFX1BBU1NXT1JEfVxuICAgICAgLSBDTElDS0hPVVNFX0RBVEFCQVNFPW9uZXVwdGltZVxuICAgIGRlcGVuZHNfb246XG4gICAgICBwb3N0Z3JlczpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICAgIHJlZGlzOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgICAgY2xpY2tob3VzZTpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcblxuICBpbmdyZXNzOlxuICAgIGltYWdlOiBvbmV1cHRpbWUvbmdpbng6MTEuNS42XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gTk9ERV9FTlY9cHJvZHVjdGlvblxuICAgICAgLSBCSUxMSU5HX0VOQUJMRUQ9ZmFsc2VcbiAgICAgIC0gTE9HX0xFVkVMPUVSUk9SXG4gICAgICAtIERJU0FCTEVfVEVMRU1FVFJZPXRydWVcbiAgICAgIC0gSE9TVD0ke0hPU1R9XG4gICAgICAtIE5HSU5YX0xJU1RFTl9BRERSRVNTPVxuICAgICAgLSBOR0lOWF9MSVNURU5fT1BUSU9OUz1cbiAgICAgIC0gUFJPVklTSU9OX1NTTD1cbiAgICAgICMgTG9uZyBkb21haW5zIChlLmcuIGdlbmVyYXRlZCAqLnNzbGlwLmlvIGhvc3RzKSBvdmVyZmxvdyBuZ2lueCdzXG4gICAgICAjIGRlZmF1bHQgc2VydmVyX25hbWVzX2hhc2hfYnVja2V0X3NpemUgb2YgNjQuXG4gICAgICAtIFNFUlZFUl9OQU1FU19IQVNIX0JVQ0tFVF9TSVpFPTEyOFxuICAgICAgIyBXaGVyZSBuZ2lueCBwcm94aWVzIHRoZSBVSS9BUEkgdG8uXG4gICAgICAtIFNFUlZFUl9BUFBfSE9TVE5BTUU9b25ldXB0aW1lXG4gICAgICAtIEFQUF9QT1JUPTMwMDJcbiAgICAgICMgVGhlIG1hcmtldGluZyBcImhvbWVcIiBhcHAgaXMgbm90IGRlcGxveWVkIChvbmx5IHVzZWQgd2hlbiBiaWxsaW5nIGlzXG4gICAgICAjIGVuYWJsZWQpLCBidXQgbmdpbnggbmVlZHMgdGhlIHZhcnMgdG8gcmVuZGVyIGl0cyBjb25maWcuXG4gICAgICAtIFNFUlZFUl9IT01FX0hPU1ROQU1FPWhvbWVcbiAgICAgIC0gSE9NRV9QT1JUPTE0NDRcbiAgICAgICMgVGhlIGluZ3Jlc3Mgc2lkZWNhciAoY3VzdG9tLWRvbWFpbiBjZXJ0aWZpY2F0ZSB3cml0ZXIpIGNvbm5lY3RzIHRvXG4gICAgICAjIFBvc3RncmVzIGFuZCBSZWRpcy5cbiAgICAgIC0gT05FVVBUSU1FX1NFQ1JFVD0ke09ORVVQVElNRV9TRUNSRVR9XG4gICAgICAtIEVOQ1JZUFRJT05fU0VDUkVUPSR7RU5DUllQVElPTl9TRUNSRVR9XG4gICAgICAtIERBVEFCQVNFX0hPU1Q9cG9zdGdyZXNcbiAgICAgIC0gREFUQUJBU0VfUE9SVD01NDMyXG4gICAgICAtIERBVEFCQVNFX1VTRVJOQU1FPXBvc3RncmVzXG4gICAgICAtIERBVEFCQVNFX1BBU1NXT1JEPSR7REFUQUJBU0VfUEFTU1dPUkR9XG4gICAgICAtIERBVEFCQVNFX05BTUU9b25ldXB0aW1lZGJcbiAgICAgIC0gUkVESVNfSE9TVD1yZWRpc1xuICAgICAgLSBSRURJU19QT1JUPTYzNzlcbiAgICAgIC0gUkVESVNfVVNFUk5BTUU9ZGVmYXVsdFxuICAgICAgLSBSRURJU19QQVNTV09SRD0ke1JFRElTX1BBU1NXT1JEfVxuICAgICAgLSBSRURJU19EQj0wXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIHBvc3RncmVzOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgICAgb25ldXB0aW1lOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2Vfc3RhcnRlZFxuXG4gIHByb2JlOlxuICAgIGltYWdlOiBvbmV1cHRpbWUvcHJvYmU6MTEuNS42XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUE9SVD0zODc0XG4gICAgICAtIE5PREVfRU5WPXByb2R1Y3Rpb25cbiAgICAgIC0gTE9HX0xFVkVMPUVSUk9SXG4gICAgICAtIERJU0FCTEVfVEVMRU1FVFJZPXRydWVcbiAgICAgICMgVGhlIHByb2JlIHJlYWNoZXMgT25lVXB0aW1lIHRocm91Z2ggdGhlIGluZ3Jlc3MgKFwiaW5ncmVzc1wiIGlzIHBhcnQgb2ZcbiAgICAgICMgbmdpbngncyBzZXJ2ZXJfbmFtZSwgc28gYWxsIEFQSSByb3V0ZXMgcmVzb2x2ZSBjb3JyZWN0bHkpLlxuICAgICAgLSBPTkVVUFRJTUVfVVJMPWh0dHA6Ly9pbmdyZXNzOjc4NDlcbiAgICAgIC0gUFJPQkVfTkFNRT1Qcm9iZS0xXG4gICAgICAtIFBST0JFX0RFU0NSSVBUSU9OPURlZmF1bHQgcHJvYmUgZm9yIG1vbml0b3JzXG4gICAgICAtIFBST0JFX01PTklUT1JJTkdfV09SS0VSUz0zXG4gICAgICAtIFBST0JFX01PTklUT1JfRkVUQ0hfTElNSVQ9MTBcbiAgICAgIC0gUFJPQkVfS0VZPSR7UFJPQkVfS0VZfVxuICAgICAgLSBSRUdJU1RFUl9QUk9CRV9LRVk9JHtSRUdJU1RFUl9QUk9CRV9LRVl9XG4gICAgZGVwZW5kc19vbjpcbiAgICAgIGluZ3Jlc3M6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkXG5cbiAgcG9zdGdyZXM6XG4gICAgaW1hZ2U6IHBvc3RncmVzOjE1XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUE9TVEdSRVNfVVNFUj1wb3N0Z3Jlc1xuICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0ke0RBVEFCQVNFX1BBU1NXT1JEfVxuICAgICAgLSBQT1NUR1JFU19EQj1vbmV1cHRpbWVkYlxuICAgIHZvbHVtZXM6XG4gICAgICAtIHBvc3RncmVzLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTUQtU0hFTExcIiwgXCJwZ19pc3JlYWR5IC1VIHBvc3RncmVzIC1kIG9uZXVwdGltZWRiXCJdXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogNVxuICAgICAgc3RhcnRfcGVyaW9kOiAxNXNcblxuICByZWRpczpcbiAgICBpbWFnZTogcmVkaXM6Ny4wLjEyXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBjb21tYW5kOiByZWRpcy1zZXJ2ZXIgLS1yZXF1aXJlcGFzcyBcIiR7UkVESVNfUEFTU1dPUkR9XCIgLS1zYXZlIFwiXCIgLS1hcHBlbmRvbmx5IG5vXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTUQtU0hFTExcIiwgXCJyZWRpcy1jbGkgLWEgXFxcIiQkUkVESVNfUEFTU1dPUkRcXFwiIHBpbmcgfCBncmVwIFBPTkdcIl1cbiAgICAgIGludGVydmFsOiAxMHNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiA1XG4gICAgICBzdGFydF9wZXJpb2Q6IDEwc1xuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBSRURJU19QQVNTV09SRD0ke1JFRElTX1BBU1NXT1JEfVxuXG4gIGNsaWNraG91c2U6XG4gICAgaW1hZ2U6IGNsaWNraG91c2UvY2xpY2tob3VzZS1zZXJ2ZXI6MjUuN1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIENMSUNLSE9VU0VfVVNFUj1kZWZhdWx0XG4gICAgICAtIENMSUNLSE9VU0VfUEFTU1dPUkQ9JHtDTElDS0hPVVNFX1BBU1NXT1JEfVxuICAgICAgLSBDTElDS0hPVVNFX0RCPW9uZXVwdGltZVxuICAgICAgLSBDTElDS0hPVVNFX0RFRkFVTFRfQUNDRVNTX01BTkFHRU1FTlQ9MVxuICAgIHZvbHVtZXM6XG4gICAgICAtIGNsaWNraG91c2UtZGF0YTovdmFyL2xpYi9jbGlja2hvdXNlXG4gICAgICAjIFNpbmdsZS1ub2RlIGNsdXN0ZXIgKyBlbWJlZGRlZCBLZWVwZXIgKE9uZVVwdGltZSdzIGFuYWx5dGljcyBzY2hlbWEgaXNcbiAgICAgICMgYWx3YXlzIFJlcGxpY2F0ZWRNZXJnZVRyZWUgKyBEaXN0cmlidXRlZCkgYW5kIERpc3RyaWJ1dGVkLWluc2VydFxuICAgICAgIyBiYXRjaGluZywgYXMgc2hpcHBlZCBieSB1cHN0cmVhbS5cbiAgICAgIC0gLi4vZmlsZXMvY2xpY2tob3VzZS9jbHVzdGVyLnhtbDovZXRjL2NsaWNraG91c2Utc2VydmVyL2NvbmZpZy5kL2NsdXN0ZXIueG1sXG4gICAgICAtIC4uL2ZpbGVzL2NsaWNraG91c2UvZGlzdHJpYnV0ZWQtaW5zZXJ0LXR1bmluZy54bWw6L2V0Yy9jbGlja2hvdXNlLXNlcnZlci91c2Vycy5kL2Rpc3RyaWJ1dGVkLWluc2VydC10dW5pbmcueG1sXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTUQtU0hFTExcIiwgXCJjbGlja2hvdXNlLWNsaWVudCAtLXBhc3N3b3JkIFxcXCIkJENMSUNLSE9VU0VfUEFTU1dPUkRcXFwiIC0tcXVlcnkgJ1NFTEVDVCAxJ1wiXVxuICAgICAgaW50ZXJ2YWw6IDEwc1xuICAgICAgdGltZW91dDogNXNcbiAgICAgIHJldHJpZXM6IDVcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTVzXG5cbnZvbHVtZXM6XG4gIHBvc3RncmVzLWRhdGE6XG4gIGNsaWNraG91c2UtZGF0YTpcbiIsCiAgImNvbmZpZyI6ICJbdmFyaWFibGVzXVxubWFpbl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5kYl9wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxucmVkaXNfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbmNsaWNraG91c2VfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbm9uZXVwdGltZV9zZWNyZXQgPSBcIiR7cGFzc3dvcmQ6NjR9XCJcbmVuY3J5cHRpb25fc2VjcmV0ID0gXCIke3Bhc3N3b3JkOjY0fVwiXG5yZWdpc3Rlcl9wcm9iZV9rZXkgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbnByb2JlX2tleSA9IFwiJHtwYXNzd29yZDozMn1cIlxuXG5bY29uZmlnXVxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwiaW5ncmVzc1wiXG5wb3J0ID0gNzg0OVxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIlxuXG5bY29uZmlnLmVudl1cbiMgUHVibGljIGhvc3QgT25lVXB0aW1lIGlzIHNlcnZlZCBvbi4gTXVzdCBtYXRjaCB0aGUgZG9tYWluIGFib3ZlLlxuXCJIT1NUXCIgPSBcIiR7bWFpbl9kb21haW59XCJcbiMgQ2hhbmdlIHRvIFwiaHR0cHNcIiBvbmNlIHlvdSBzZXJ2ZSB0aGUgZG9tYWluIG92ZXIgU1NML1RMUy5cblwiSFRUUF9QUk9UT0NPTFwiID0gXCJodHRwXCJcblwiREFUQUJBU0VfUEFTU1dPUkRcIiA9IFwiJHtkYl9wYXNzd29yZH1cIlxuXCJSRURJU19QQVNTV09SRFwiID0gXCIke3JlZGlzX3Bhc3N3b3JkfVwiXG5cIkNMSUNLSE9VU0VfUEFTU1dPUkRcIiA9IFwiJHtjbGlja2hvdXNlX3Bhc3N3b3JkfVwiXG5cIk9ORVVQVElNRV9TRUNSRVRcIiA9IFwiJHtvbmV1cHRpbWVfc2VjcmV0fVwiXG5cIkVOQ1JZUFRJT05fU0VDUkVUXCIgPSBcIiR7ZW5jcnlwdGlvbl9zZWNyZXR9XCJcbiMgU2hhcmVkIGtleSBwcm9iZXMgdXNlIHRvIHNlbGYtcmVnaXN0ZXIgd2l0aCB0aGUgc2VydmVyLlxuXCJSRUdJU1RFUl9QUk9CRV9LRVlcIiA9IFwiJHtyZWdpc3Rlcl9wcm9iZV9rZXl9XCJcbiMgSWRlbnRpdHkga2V5IG9mIHRoZSBidW5kbGVkIHByb2JlLlxuXCJQUk9CRV9LRVlcIiA9IFwiJHtwcm9iZV9rZXl9XCJcblxuIyBTaW5nbGUtbm9kZSBDbGlja0hvdXNlIGNsdXN0ZXIgKyBlbWJlZGRlZCBLZWVwZXIgZHJvcC1pbiAoZnJvbSB1cHN0cmVhbTpcbiMgT25lVXB0aW1lJ3MgYW5hbHl0aWNzIHNjaGVtYSBpcyBhbHdheXMgUmVwbGljYXRlZE1lcmdlVHJlZSArIERpc3RyaWJ1dGVkLFxuIyBzbyBhIHNpbmdsZSBub2RlIHJ1bnMgYW4gZW1iZWRkZWQgS2VlcGVyIGFuZCBhIDEtbm9kZSBcIm9uZXVwdGltZVwiIGNsdXN0ZXIpLlxuW1tjb25maWcubW91bnRzXV1cbmZpbGVQYXRoID0gXCIvY2xpY2tob3VzZS9jbHVzdGVyLnhtbFwiXG5jb250ZW50ID0gXCJcIlwiXG48P3htbCB2ZXJzaW9uPVwiMS4wXCI/PlxuPGNsaWNraG91c2U+XG4gICAgPCEtLSBFbWJlZGRlZCBDbGlja0hvdXNlIEtlZXBlcjogY29vcmRpbmF0ZXMgUmVwbGljYXRlZE1lcmdlVHJlZSBvbiB0aGlzIG5vZGUuIC0tPlxuICAgIDxrZWVwZXJfc2VydmVyPlxuICAgICAgICA8dGNwX3BvcnQ+OTE4MTwvdGNwX3BvcnQ+XG4gICAgICAgIDxzZXJ2ZXJfaWQ+MTwvc2VydmVyX2lkPlxuICAgICAgICA8bG9nX3N0b3JhZ2VfcGF0aD4vdmFyL2xpYi9jbGlja2hvdXNlL2Nvb3JkaW5hdGlvbi9sb2c8L2xvZ19zdG9yYWdlX3BhdGg+XG4gICAgICAgIDxzbmFwc2hvdF9zdG9yYWdlX3BhdGg+L3Zhci9saWIvY2xpY2tob3VzZS9jb29yZGluYXRpb24vc25hcHNob3RzPC9zbmFwc2hvdF9zdG9yYWdlX3BhdGg+XG4gICAgICAgIDxjb29yZGluYXRpb25fc2V0dGluZ3M+XG4gICAgICAgICAgICA8b3BlcmF0aW9uX3RpbWVvdXRfbXM+MTAwMDA8L29wZXJhdGlvbl90aW1lb3V0X21zPlxuICAgICAgICAgICAgPHNlc3Npb25fdGltZW91dF9tcz4zMDAwMDwvc2Vzc2lvbl90aW1lb3V0X21zPlxuICAgICAgICAgICAgPHJhZnRfbG9nc19sZXZlbD53YXJuaW5nPC9yYWZ0X2xvZ3NfbGV2ZWw+XG4gICAgICAgIDwvY29vcmRpbmF0aW9uX3NldHRpbmdzPlxuICAgICAgICA8cmFmdF9jb25maWd1cmF0aW9uPlxuICAgICAgICAgICAgPHNlcnZlcj5cbiAgICAgICAgICAgICAgICA8aWQ+MTwvaWQ+XG4gICAgICAgICAgICAgICAgPGhvc3RuYW1lPmxvY2FsaG9zdDwvaG9zdG5hbWU+XG4gICAgICAgICAgICAgICAgPHBvcnQ+OTIzNDwvcG9ydD5cbiAgICAgICAgICAgIDwvc2VydmVyPlxuICAgICAgICA8L3JhZnRfY29uZmlndXJhdGlvbj5cbiAgICA8L2tlZXBlcl9zZXJ2ZXI+XG5cbiAgICA8IS0tIFBvaW50IHRoaXMgc2VydmVyIGF0IGl0cyBvd24gZW1iZWRkZWQgS2VlcGVyIGZvciByZXBsaWNhdGlvbiBtZXRhZGF0YS4gLS0+XG4gICAgPHpvb2tlZXBlcj5cbiAgICAgICAgPG5vZGU+XG4gICAgICAgICAgICA8aG9zdD5sb2NhbGhvc3Q8L2hvc3Q+XG4gICAgICAgICAgICA8cG9ydD45MTgxPC9wb3J0PlxuICAgICAgICA8L25vZGU+XG4gICAgPC96b29rZWVwZXI+XG5cbiAgICA8IS0tIFJlcGxpY2F0aW9uIG1hY3Jvcy4gU2luZ2xlIG5vZGUgPT4gb25lIHNoYXJkLCBvbmUgcmVwbGljYS4gLS0+XG4gICAgPG1hY3Jvcz5cbiAgICAgICAgPHNoYXJkPjAxPC9zaGFyZD5cbiAgICAgICAgPHJlcGxpY2E+cmVwbGljYS0xPC9yZXBsaWNhPlxuICAgICAgICA8Y2x1c3Rlcj5vbmV1cHRpbWU8L2NsdXN0ZXI+XG4gICAgPC9tYWNyb3M+XG5cbiAgICA8IS0tIFRoZSBjbHVzdGVyIHRoZSBhcHAgaXNzdWVzIGBPTiBDTFVTVEVSICdvbmV1cHRpbWUnYCBhbmRcbiAgICAgICAgIGBEaXN0cmlidXRlZCgnb25ldXB0aW1lJywgLi4uKWAgYWdhaW5zdC4gLS0+XG4gICAgPHJlbW90ZV9zZXJ2ZXJzPlxuICAgICAgICA8b25ldXB0aW1lPlxuICAgICAgICAgICAgPHNoYXJkPlxuICAgICAgICAgICAgICAgIDxpbnRlcm5hbF9yZXBsaWNhdGlvbj50cnVlPC9pbnRlcm5hbF9yZXBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8cmVwbGljYT5cbiAgICAgICAgICAgICAgICAgICAgPGhvc3Q+bG9jYWxob3N0PC9ob3N0PlxuICAgICAgICAgICAgICAgICAgICA8cG9ydD45MDAwPC9wb3J0PlxuICAgICAgICAgICAgICAgIDwvcmVwbGljYT5cbiAgICAgICAgICAgIDwvc2hhcmQ+XG4gICAgICAgIDwvb25ldXB0aW1lPlxuICAgIDwvcmVtb3RlX3NlcnZlcnM+XG48L2NsaWNraG91c2U+XG5cIlwiXCJcblxuIyBCYXRjaGVzIHRoZSBiYWNrZ3JvdW5kIERpc3RyaWJ1dGVkLWluc2VydCBzZW5kZXIgc28gdGVsZW1ldHJ5IGluZ2VzdGlvblxuIyBrZWVwcyB1cCB3aXRoIHZvbHVtZSAoZnJvbSB1cHN0cmVhbSBDbGlja2hvdXNlL3VzZXJzLmQpLlxuW1tjb25maWcubW91bnRzXV1cbmZpbGVQYXRoID0gXCIvY2xpY2tob3VzZS9kaXN0cmlidXRlZC1pbnNlcnQtdHVuaW5nLnhtbFwiXG5jb250ZW50ID0gXCJcIlwiXG48P3htbCB2ZXJzaW9uPVwiMS4wXCI/PlxuPGNsaWNraG91c2U+XG4gICAgPHByb2ZpbGVzPlxuICAgICAgICA8ZGVmYXVsdD5cbiAgICAgICAgICAgIDwhLS0gQ29hbGVzY2UgbWFueSBzcG9vbGVkIGZpbGVzIGludG8gb25lIGluc2VydCBpbnRvIHRoZSBsb2NhbCB0YWJsZS4gLS0+XG4gICAgICAgICAgICA8ZGlzdHJpYnV0ZWRfYmFja2dyb3VuZF9pbnNlcnRfYmF0Y2g+MTwvZGlzdHJpYnV0ZWRfYmFja2dyb3VuZF9pbnNlcnRfYmF0Y2g+XG4gICAgICAgICAgICA8IS0tIElmIGEgY29hbGVzY2VkIGJhdGNoIGZhaWxzLCByZXRyeSBpdHMgZmlsZXMgaW5kaXZpZHVhbGx5LiAtLT5cbiAgICAgICAgICAgIDxkaXN0cmlidXRlZF9iYWNrZ3JvdW5kX2luc2VydF9zcGxpdF9iYXRjaF9vbl9mYWlsdXJlPjE8L2Rpc3RyaWJ1dGVkX2JhY2tncm91bmRfaW5zZXJ0X3NwbGl0X2JhdGNoX29uX2ZhaWx1cmU+XG4gICAgICAgICAgICA8IS0tIFdyaXRlIHRvIHRoZSBsb2NhbCByZXBsaWNhIGRpcmVjdGx5LiAtLT5cbiAgICAgICAgICAgIDxwcmVmZXJfbG9jYWxob3N0X3JlcGxpY2E+MTwvcHJlZmVyX2xvY2FsaG9zdF9yZXBsaWNhPlxuICAgICAgICA8L2RlZmF1bHQ+XG4gICAgPC9wcm9maWxlcz5cbjwvY2xpY2tob3VzZT5cblwiXCJcIlxuIgp9Links
Tags
monitoring, observability, status-page, incident-management, on-call, alerting
Version: 11.5.6