diff --git a/docs/agent-server-snap-services.mdx b/docs/agent-server-snap-services.mdx
new file mode 100644
index 0000000..98851e0
--- /dev/null
+++ b/docs/agent-server-snap-services.mdx
@@ -0,0 +1,53 @@
+# Parca and Parca Agent as snap services
+
+import BrowserWindow from "@site/src/components/BrowserWindow"
+
+:::tip
+
+You can configure both services quickly with a simple [cloud-init](https://cloudinit.readthedocs.io/en/latest/index.html) file:
+
+```yaml
+#cloud-config
+snap:
+ commands:
+ - [install, parca]
+ - [install, parca-agent, --classic]
+ - [set, parca-agent, remote-store-insecure=true]
+ - [set, parca-agent, remote-store-address=localhost:7070]
+ - [start, parca]
+ - [start, parca-agent]
+```
+
+:::
+
+## Setting up Parca
+
+You can install Parca using the [snap](https://snapcraft.io/about) package.
+
+```shell
+sudo snap install parca
+sudo snap start parca
+```
+
+This will start the Parca server on port `7070` and configure it to retrieve profiles from itself every 1 second automatically.
+
+Once Parca is running, you can navigate to the web interface on the browser.
+
+
+
+![image](https://user-images.githubusercontent.com/8681572/133893063-8cc9fc8a-4d55-431d-80fc-6a2fe8de7019.png)
+
+
+
+## Setting up Parca Agent
+
+You can install Parca Agent using the [snap](https://snapcraft.io/about) package.
+
+```shell
+sudo snap install --classic parca-agent
+sudo snap set parca-agent remote-store-insecure=true
+sudo snap set parca-agent remote-store-address=localhost:7070
+sudo snap start parca-agent
+```
+
+The `systemd` service will be collecting profiles from `docker.service`, `parca.service` and `parca-agent.service` that have been running on your system.
diff --git a/docs/parca-agent-snap.mdx b/docs/parca-agent-snap.mdx
new file mode 100644
index 0000000..2f911fb
--- /dev/null
+++ b/docs/parca-agent-snap.mdx
@@ -0,0 +1,119 @@
+# Parca Agent from Snapcraft
+
+import BrowserWindow from "@site/src/components/BrowserWindow"
+
+You can install Parca Agent using the [snap](https://snapcraft.io/about) package.
+
+```shell
+sudo snap install --classic parca-agent
+```
+
+The snap has two primary modes of operation, one-shot or service.
+
+## Invoking `parca-agent` manually
+
+```shell
+parca-agent --help
+Usage: parca-agent
+
+Flags:
+ -h, --help Show context-sensitive help.
+ --log-level="info" Log level.
+ --log-format="logfmt" Configure if structured logging as JSON or as logfmt
+ --http-address="127.0.0.1:7071" Address to bind HTTP server to.
+ --version Show application version.
+#...
+```
+
+You can find more information about invoking `parca-agent` manually in the [binary installation](https://www.parca.dev/docs/agent-binary) docs.
+
+## Using the `parca-agent` service
+
+The snap package also ships with a minimally configurable service that is managed by `snapd`.
+
+To get started without any customisation, once the snap is installed, invoke:
+
+```shell
+sudo snap start parca-agent
+```
+
+This will start `parca-agent` on http://localhost:7071.
+
+There are a few config options available for the snap service:
+
+```shell
+sudo snap get parca-agent
+Key Value
+http-address :7071
+log-level info
+node test
+remote-store-address grpc.polarsignals.com:443
+remote-store-bearer-token
+remote-store-insecure false
+```
+
+Each can be customised individually. If a config value is changed, the service must be restarted for the changes to take effect. For example:
+
+```shell
+# Change the bind port
+sudo snap set parca-agent http-address=:8081
+
+# Restart the service
+sudo snap restart parca-agent
+```
+
+You can view the `parca-agent` service logs using the `snap logs` command:
+
+```shell
+sudo snap logs parca-agent
+2023-12-12T08:51:38Z systemd[1]: Started Service for snap application parca-agent.parca-agent-svc.
+2023-12-12T08:51:38Z parca-agent.parca-agent-svc[1405]: ooooooooo. .o. .
+2023-12-12T08:51:38Z parca-agent.parca-agent-svc[1405]: `888 `Y88. .888. .o8
+2023-12-12T08:51:38Z parca-agent.parca-agent-svc[1405]: 888 .d88' .oooo. oooo d8b .ooooo. .oooo. .8"888. .oooooooo .ooooo. ooo. .oo. .o888oo
+2023-12-12T08:51:38Z parca-agent.parca-agent-svc[1405]: 888ooo88P' `P )88b `888""8P d88' `"Y8 `P )88b .8' `888. 888' `88b d88' `88b `888P"Y88b 888
+2023-12-12T08:51:38Z parca-agent.parca-agent-svc[1405]: 888 .oP"888 888 888 .oP"888 .88ooo8888. 888 888 888ooo888 888 888 888
+2023-12-12T08:51:38Z parca-agent.parca-agent-svc[1405]: 888 d8( 888 888 888 .o8 d8( 888 .8' `888. `88bod8P' 888 .o 888 888 888 .
+2023-12-12T08:51:38Z parca-agent.parca-agent-svc[1405]: o888o `Y888""8o d888b `Y8bod8P' `Y888""8o o88o o8888o `8oooooo. `Y8bod8P' o888o o888o "888"
+2023-12-12T08:51:38Z parca-agent.parca-agent-svc[1405]: d" YD
+2023-12-12T08:51:38Z parca-agent.parca-agent-svc[1405]: "Y88888P'
+2023-12-12T08:51:38Z parca-agent.parca-agent-svc[1405]:
+2023-12-12T08:51:38Z parca-agent.parca-agent-svc[1328]: level=info name=parca-agent ts=2023-12-12T08:51:38.368315839Z caller=main.go:502 msg="maxprocs: Leaving GOMAXPROCS=1: CPU quota undefined"
+2023-12-12T08:51:38Z parca-agent.parca-agent-svc[1328]: name=parca-agent ts=2023-12-12T08:51:38.447448683Z caller=main.go:724 msg=starting... node=test store=grpc.polarsignals.com:443
+```
+
+Now we can view the active profilers by visiting `http://localhost:7071`:
+
+
+![image](../static/img/tutorial/active_profilers.png)
+
+
+
+
+
+And all the discovered processes:
+
+
+![image](../static/img/tutorial/processes.png)
+
+
+
+
+
+Once Parca and Parca Agent are both running, you can navigate to the web interface on the browser.
+You should shortly see the `Select profile...` dropdown menu populate with the profiles that Parca is retrieving from itself and receiving from the Agent.
+
+
+
+![image](../static/img/tutorial/cpu_sample_count.png)
+
+
+
+
+
+Selecting `parca_agent_cpu_sample_count` as profile types and clicking the `Search` button will retrieve the profiles from Parca Agent for the time selection (default Last Hour).
+
+
+
+![image](../static/img/tutorial/cpu_sample_count_select.png)
+
+
diff --git a/docs/snap.mdx b/docs/parca-snap.mdx
similarity index 81%
rename from docs/snap.mdx
rename to docs/parca-snap.mdx
index 1124658..961d6fa 100644
--- a/docs/snap.mdx
+++ b/docs/parca-snap.mdx
@@ -5,7 +5,7 @@ import BrowserWindow from "@site/src/components/BrowserWindow"
You can install Parca using the [snap](https://snapcraft.io/about) package.
```shell
-sudo snap install parca --channel edge
+sudo snap install parca
```
The snap has two primary modes of operation, one-shot or service.
@@ -13,16 +13,15 @@ The snap has two primary modes of operation, one-shot or service.
## Invoking `parca` manually
```shell
-parca --help
Usage: parca
Flags:
- -h, --help Show context-sensitive help.
- --config-path="parca.yaml" Path to config file.
- --mode="all" Scraper only runs a scraper that sends to a remote gRPC endpoint. All runs all components.
- --log-level="info" log level.
- --port=":7070" Port string for server
- --cors-allowed-origins=CORS-ALLOWED-ORIGINS,... Allowed CORS origins.
+ -h, --help Show context-sensitive help.
+ --config-path="parca.yaml" Path to config file.
+ --mode="all" Scraper only runs a scraper that sends to a remote gRPC endpoint. All runs all components.
+ --http-address=":7070" Address to bind HTTP server to.
+ --http-read-timeout=5s Timeout duration for HTTP server to read request body.
+ --http-write-timeout=1m Timeout duration for HTTP server to write response body.
# ...
```
@@ -45,17 +44,20 @@ There are a few config options available for the snap service:
```shell
sudo snap get parca
Key Value
-enable-persistence false
-log-level info
-port 7070
-storage-active-memory 536870912
+enable-persistence false
+http-address :7070
+log-level info
+remote-store-address grpc.polarsignals.com:443
+remote-store-bearer-token
+remote-store-insecure false
+storage-active-memory 536870912
```
Each can be customised individually. If a config value is changed, the service must be restarted for the changes to take effect. For example:
```shell
# Change the bind port
-sudo snap set parca port=8080
+sudo snap set parca http-address=:8080
# Restart the service
sudo snap restart parca
diff --git a/docs/quickstart.mdx b/docs/quickstart.mdx
index 68bf891..c864aad 100644
--- a/docs/quickstart.mdx
+++ b/docs/quickstart.mdx
@@ -129,5 +129,26 @@ minikube start --driver=virtualbox
:::danger [Parca in Kubernetes - Tutorial 5min ⏱️](/docs/kubernetes)
:::
+
+
+
+**Server**
+
+1. Use to deploy Parca Server (API and UI), listening on `0.0.0.0:7070`.
+
+ ```
+ sudo snap install parca
+ sudo snap start parca
+ ```
+
+**Agent**
+
+2. Use to install Parca Agent on a node with `snapd`.
+
+ ```
+ sudo snap install --classic parca-agent
+ sudo snap start parca
+ ```
+
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 92f6f21..7035ff4 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -122,7 +122,7 @@ module.exports = {
},
{
label: "Parca from Snapcraft",
- to: "/docs/snap",
+ to: "/docs/parca-snap",
},
{
label: "Parca in Kubernetes",
diff --git a/sidebars.js b/sidebars.js
index 2531050..f3f811d 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -121,7 +121,14 @@ module.exports = {
{
type: "category",
label: "Running Parca",
- items: ["binary", "snap", "agent-binary", "systemd"],
+ items: [
+ "binary",
+ "parca-snap",
+ "agent-binary",
+ "parca-agent-snap",
+ "systemd",
+ "agent-server-snap-services"
+ ],
},
{
type: "category",
diff --git a/wordlist.txt b/wordlist.txt
index 903f794..f8d6690 100644
--- a/wordlist.txt
+++ b/wordlist.txt
@@ -139,6 +139,7 @@ HUP
iciclegraph
infod
IngressRoute
+init
inlined
integrations
interactable
@@ -151,6 +152,7 @@ jit
jitdump
js
justtrustme
+JSON
JVM
KASLR
Katacoda
@@ -177,6 +179,7 @@ LLVM
localhost
LocalStoreDirectory
LockPersonality
+logfmt
LogLevel
Loibl
LSB