Skip to content

Commit 2324e51

Browse files
authored
docs: adds v10 release (#4417)
1 parent cc82f9f commit 2324e51

File tree

6 files changed

+235
-10
lines changed

6 files changed

+235
-10
lines changed

docs/.vitepress/config.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export default defineConfig({
3737
nav: [
3838
{ text: "Home", link: "/" },
3939
{ text: "Guide", link: "/guide/what-is-dozzle", activeMatch: "/guide/" },
40+
{ text: "Dozzle Cloud", link: "https://cloud.dozzle.dev" },
4041
{
4142
text: `v${pkg.version}`,
4243
items: [
@@ -68,6 +69,13 @@ export default defineConfig({
6869
{ text: "Podman", link: "/guide/podman" },
6970
],
7071
},
72+
{
73+
text: "Notifications",
74+
items: [
75+
{ text: "Alerts & Webhooks", link: "/guide/alerts-and-webhooks" },
76+
{ text: "Dozzle Cloud", link: "/guide/dozzle-cloud" },
77+
],
78+
},
7179
{
7280
text: "Advanced Configuration",
7381
items: [

docs/.vitepress/theme/components/Banner.vue

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,8 @@
33
class="banner fixed top-0 right-0 left-0 z-(--vp-z-index-layout-top) flex items-center overflow-hidden bg-[oklch(74%_0.16_232.661)] p-4 font-bold text-gray-800 dark:bg-[oklch(60%_0.126_221.723)] dark:text-white"
44
>
55
<div class="mx-auto flex items-center gap-2 lg:gap-4">
6-
<span class="animate-bounce">🚀</span>K8s users, I need your help! I have added K8s support to Dozzle and I need
7-
your feedback! 🙏
8-
<a
9-
href="https://github.com/amir20/dozzle/discussions/3614"
10-
target="_blank"
11-
class="btn btn-sm btn-primary text-white!"
12-
>
13-
See the discussion
14-
</a>
6+
<span class="animate-bounce">🎉</span>Dozzle v10 is here! Alerts, webhooks, and Dozzle Cloud are now available.
7+
<a href="/guide/alerts-and-webhooks" class="btn btn-sm btn-primary text-white!"> Learn more </a>
158
</div>
169
<button class="btn btn-circle btn-ghost btn-xs ml-auto" @click="dismiss">
1710
<svg class="swap-on fill-current" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 512 512">

docs/.vitepress/theme/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default {
1717
"home-hero-image": () => h(HeroVideo),
1818
"sidebar-nav-after": () => h(BuyMeCoffee),
1919
"home-hero-actions-after": () => h(Stats),
20-
// "layout-top": () => h(Banner),
20+
"layout-top": () => h(Banner),
2121
"home-hero-after": () => h(Supported),
2222
});
2323
},

docs/guide/alerts-and-webhooks.md

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
---
2+
title: Alerts & Webhooks
3+
---
4+
5+
# Alerts & Webhooks
6+
7+
<Badge type="tip" text="New in v10" />
8+
9+
Dozzle v10 introduces a powerful alerting system that lets you monitor container logs and receive notifications when specific conditions are met. Alerts use customizable expressions to filter containers and log messages, and can send notifications to webhooks, Slack, Discord, ntfy, or [Dozzle Cloud](/guide/dozzle-cloud).
10+
11+
## How It Works
12+
13+
Alerts are configured with two expressions:
14+
15+
1. **Container filter** — selects which containers to monitor
16+
2. **Log filter** — defines which log messages trigger the alert
17+
18+
When a log entry matches both filters, Dozzle sends a notification to the configured destination.
19+
20+
> [!IMPORTANT]
21+
> Alert and destination configurations are stored in the `/data` directory. You must mount this directory as a volume to persist your notification settings across container restarts.
22+
23+
::: code-group
24+
25+
```sh
26+
docker run -v /var/run/docker.sock:/var/run/docker.sock -v /path/to/data:/data -p 8080:8080 amir20/dozzle:latest
27+
```
28+
29+
```yaml [docker-compose.yml]
30+
services:
31+
dozzle:
32+
image: amir20/dozzle:latest
33+
volumes:
34+
- /var/run/docker.sock:/var/run/docker.sock
35+
- /path/to/data:/data
36+
ports:
37+
- 8080:8080
38+
```
39+
40+
:::
41+
42+
## Setting Up a Destination
43+
44+
Before creating alerts, you need to configure at least one notification destination. Navigate to the **Notifications** page in Dozzle and click **Add Destination**.
45+
46+
### Webhook
47+
48+
Webhooks send an HTTP POST request to a URL of your choice. Dozzle includes built-in payload templates for popular services:
49+
50+
- **Slack** — formatted with blocks and markdown
51+
- **Discord** — formatted for Discord webhook API
52+
- **ntfy** — formatted for [ntfy.sh](https://ntfy.sh) push notifications
53+
- **Custom** — generic JSON payload you can customize
54+
55+
You can also write your own payload template using Go's `text/template` syntax. The following variables are available:
56+
57+
<div v-pre>
58+
59+
| Variable | Description |
60+
| ------------------------- | --------------------------- |
61+
| `{{.Container.Name}}` | Container name |
62+
| `{{.Container.Image}}` | Container image |
63+
| `{{.Container.HostName}}` | Docker host name |
64+
| `{{.Container.State}}` | Container state |
65+
| `{{.Log.Message}}` | Log message content |
66+
| `{{.Log.Level}}` | Log level |
67+
| `{{.Log.Timestamp}}` | Log timestamp |
68+
| `{{.Log.Stream}}` | Stream type (stdout/stderr) |
69+
| `{{.Subscription.Name}}` | Alert rule name |
70+
71+
</div>
72+
73+
> [!TIP]
74+
> Use the **Test** button to verify your webhook is working before saving.
75+
76+
### Dozzle Cloud
77+
78+
You can also send alerts to [Dozzle Cloud](/guide/dozzle-cloud) for centralized monitoring across multiple Dozzle instances. See the [Dozzle Cloud guide](/guide/dozzle-cloud) for more details.
79+
80+
## Creating an Alert
81+
82+
Navigate to the **Notifications** page and click **Add Alert**. You'll need to configure:
83+
84+
### Container Expression
85+
86+
The container expression selects which containers to monitor. Available properties:
87+
88+
| Property | Type | Example |
89+
| ---------- | ------ | ------------------------------- |
90+
| `name` | string | `name contains "api"` |
91+
| `image` | string | `image == "nginx:latest"` |
92+
| `state` | string | `state == "running"` |
93+
| `health` | string | `health == "unhealthy"` |
94+
| `hostName` | string | `hostName == "prod-host"` |
95+
| `labels` | map | `labels["env"] == "production"` |
96+
97+
You can combine conditions with `&&` (AND), `||` (OR), and `!` (NOT):
98+
99+
```
100+
name contains "api" && labels["env"] == "production"
101+
```
102+
103+
### Log Expression
104+
105+
The log expression filters which log messages trigger the alert. Available properties:
106+
107+
| Property | Type | Example |
108+
| --------- | ---------- | -------------------------- |
109+
| `message` | string/map | `message contains "error"` |
110+
| `level` | string | `level == "error"` |
111+
| `stream` | string | `stream == "stderr"` |
112+
| `type` | string | `type == "complex"` |
113+
114+
For JSON logs, you can access nested fields using dot notation:
115+
116+
```
117+
message.status >= 500 && message.path contains "/api"
118+
```
119+
120+
Supported string operators include `contains`, `startsWith`, `endsWith`, and `matches` (regex).
121+
122+
### Examples
123+
124+
**Alert on all errors from production containers:**
125+
126+
```
127+
Container: labels["env"] == "production"
128+
Log: level == "error"
129+
```
130+
131+
**Alert on HTTP 5xx errors from API containers:**
132+
133+
```
134+
Container: name contains "api"
135+
Log: message.status >= 500
136+
```
137+
138+
**Alert on any stderr output from a specific image:**
139+
140+
```
141+
Container: image startsWith "myapp/"
142+
Log: stream == "stderr"
143+
```
144+
145+
> [!NOTE]
146+
> The alert editor includes autocomplete and real-time validation. You can preview matched containers and logs before saving.
147+
148+
## Managing Alerts
149+
150+
From the Notifications page, you can:
151+
152+
- **Enable/disable** alerts without deleting them
153+
- **Edit** alert expressions and destinations
154+
- **View statistics** including trigger count, matched containers, and last triggered time
155+
- **Delete** alerts that are no longer needed

docs/guide/dozzle-cloud.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
title: Dozzle Cloud
3+
---
4+
5+
# Dozzle Cloud
6+
7+
<Badge type="tip" text="New in v10" />
8+
9+
[Dozzle Cloud](https://cloud.dozzle.dev) is a companion service that extends your self-hosted Dozzle instances with centralized monitoring, smart alerting, and log intelligence. While Dozzle remains fully open source and self-hosted, Dozzle Cloud adds a managed layer on top for teams that need more visibility across their infrastructure.
10+
11+
## Why Dozzle Cloud?
12+
13+
Container logs are noisy. Dozzle Cloud helps you cut through the noise with intelligent summarization and multi-instance aggregation — without requiring additional agents or complex setup.
14+
15+
## Key Features
16+
17+
### Log Summaries
18+
19+
Dozzle Cloud automatically batches related container events into concise summaries. Each summary includes severity levels, source container information, and direct links to the full logs in your Dozzle instance.
20+
21+
### Pattern Clustering
22+
23+
Instead of showing duplicate errors, Dozzle Cloud groups similar errors together and displays frequency counts. This makes it easy to identify recurring issues across multiple containers.
24+
25+
### Smart Alert Distribution
26+
27+
Receive notifications through multiple channels:
28+
29+
- **Email**
30+
- **Slack**
31+
- **ntfy**
32+
- **Webhooks**
33+
- **Browser push notifications**
34+
35+
You can enable or disable channels independently with unlimited configurations.
36+
37+
### Multi-Instance Dashboard
38+
39+
Monitor all your Dozzle servers from a single dashboard. Connecting is simple — just link your instance with an API key. No additional agents are required.
40+
41+
### Searchable Event History
42+
43+
Search across all logged events with full-text search. Filter by container, severity (error, warning, info), and keywords. Retention is configurable from 24 hours to 30 days.
44+
45+
### Security
46+
47+
- API keys are hashed with expiration support
48+
- GitHub OAuth authentication
49+
- Your logs remain your own — Dozzle Cloud is committed to data privacy
50+
51+
## Connecting to Dozzle Cloud
52+
53+
To link your Dozzle instance to Dozzle Cloud:
54+
55+
1. Navigate to the **Notifications** page in Dozzle
56+
2. Click **Add Destination** and select **Dozzle Cloud**
57+
3. Click **Link Dozzle Cloud** — you'll be redirected to authenticate
58+
4. Once linked, your API key is automatically configured
59+
60+
You can then select Dozzle Cloud as a destination when creating [alerts](/guide/alerts-and-webhooks).
61+
62+
## Pricing
63+
64+
Dozzle Cloud offers a free tier with 500 events per month — no credit card required. Visit [cloud.dozzle.dev](https://cloud.dozzle.dev) for more details.

docs/index.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ features:
3535
link: /guide/remote-hosts
3636
linkText: Learn More
3737
icon: 🌐
38+
- title: Alerts & Webhooks
39+
details: Set up customizable alerts with powerful expressions to monitor container logs and receive notifications via Slack, Discord, ntfy, or webhooks.
40+
icon: 🔔
41+
linkText: Learn More
42+
link: /guide/alerts-and-webhooks
3843
- title: SQL Engine
3944
details: Use SQL queries to analyze logs inside your browser with WebAssembly and DuckDB.
4045
icon: 📊

0 commit comments

Comments
 (0)