Senmi Rai
03/06/2026, 3:13 PMkapa.ai
03/06/2026, 3:13 PMedr monitor after your dbt run/tests:
edr monitor --slack-token <SLACK_TOKEN> --slack-channel-name <CHANNEL_NAME>
or with a webhook:
edr monitor --slack-webhook <SLACK_WEBHOOK_URL>
You can also configure Slack once in `~/.edr/config.yml`:
slack:
token: <your_slack_token>
channel_name: <slack_channel_to_post_at>
group_alerts_by: table # or alert
Then just run:
edr monitor
This sends Slack alerts based on your dbt test/model results. [Setup Slack alerts]
-------------------------
2. Send the HTML observability report (with summary) to Slack
Use `edr send-report`:
edr send-report --slack-token <SLACK_TOKEN> --slack-channel-name <CHANNEL_NAME>
This generates the report and posts it as an HTML attachment, with a summary included by default. [Share via Slack]
You can also:
• Host the report on S3/GCS and still send a Slack summary:
edr send-report \
--aws-profile-name <AWS_PROFILE> \
--s3-bucket-name <BUCKET_NAME> \
--slack-token <SLACK_TOKEN> \
--slack-channel-name <CHANNEL_NAME> \
--update-bucket-website true
or
edr send-report \
--google-service-account-path <SERVICE_ACCOUNT_PATH> \
--gcs-bucket-name <BUCKET_NAME> \
--slack-token <SLACK_TOKEN> \
--slack-channel-name <CHANNEL_NAME>
[Send report summary]
• Send only the summary (no HTML attachment):
edr monitor → Slack alerts.
• Use edr send-report → Slack report + summary (or summary only). 👍 0 button 👎 0 button ℹ️ Tip: Mention @elementary.ai in the thread for follow-ups or DM the app for 1-to-1 help.Senmi Rai
03/06/2026, 3:16 PMSenmi Rai
03/06/2026, 3:16 PMkapa.ai
03/06/2026, 3:17 PM--disable html_attachment noted they only see test statistics, not all processed objects (models, seeds, snapshots, etc.). [Slack question on summary]
So the summary is a lightweight, test-focused snapshot; the HTML report is the full-featured observability interface. 👍 0 button 👎 0 button ℹ️ Tip: Mention @elementary.ai in the thread for follow-ups or DM the app for 1-to-1 help.Senmi Rai
03/06/2026, 3:18 PMkapa.ai
03/06/2026, 3:18 PMedr report
Elementary generates the observability report as a local HTML file that you can open directly in your browser (no hosting required). [Quickstart report]
Hosting is only needed if you want to share the report via a stable URL (S3, GCS, Azure) or include a link in Slack summaries. In that case you use edr send-report with the relevant hosting options. [Share report; Host on S3; Host on GCS] 👍 0 button 👎 0 button ℹ️ Tip: Mention @elementary.ai in the thread for follow-ups or DM the app for 1-to-1 help.Senmi Rai
03/06/2026, 3:19 PMkapa.ai
03/06/2026, 3:19 PMedr send-report on a scheduler (CI, cron, orchestrator).
1. Set up Slack integration
Create a Slack app and token, then either:
Option A – pass via CLI:
edr send-report \
--slack-token <SLACK_TOKEN> \
--slack-channel-name <CHANNEL_NAME>
This will:
• Generate the HTML observability report
• Upload it to Slack as an attachment
• Send a summary in the same message by default [Share via Slack; Send summary].
Option B – use `config.yml`:
`~/.edr/config.yml`:
slack:
token: <your_slack_token>
channel_name: <your_channel>
Then just:
edr send-report
[Share via Slack]
2. Schedule it daily
Run that edr send-report command once a day after your dbt jobs (e.g., in GitHub Actions, Prefect, Airflow, cron). The docs explicitly recommend using edr send-report as the way to distribute the report in production. [Share report; Elementary in production]
3. If you only want the Slack summary (no HTML attachment)
You can still send a daily “report-like” summary to the channel:
edr send-report \
--slack-token <SLACK_TOKEN> \
--slack-channel-name <CHANNEL_NAME> \
--disable html_attachment
This sends just the summary text to Slack. [Send summary]
-------------------------
If you also want real-time alerts on failures (not just the daily report), add a separate step:
edr monitor --slack-token <SLACK_TOKEN> --slack-channel-name <CHANNEL_NAME>
for alerts, and keep edr send-report for the daily report. [Setup Slack alerts] 👍 0 button 👎 0 button ℹ️ Tip: Mention @elementary.ai in the thread for follow-ups or DM the app for 1-to-1 help.Senmi Rai
03/06/2026, 3:22 PMkapa.ai
03/06/2026, 3:22 PMedr send-report --s3-bucket-name BUCKET [--aws-profile-name ...] and (optionally) --update-bucket-website true to make it a website with a stable URL. [Host on S3]
• Google Cloud Storage (GCS) – edr send-report --gcs-bucket-name BUCKET [--google-service-account-path ...] and --update-bucket-website true for a constant URL like `https://storage.googleapis.com/`bucket`/index.html`. [Host on GCS]
• Azure Blob Storage – edr send-report --azure-container-name CONTAINER --azure-connection-string CONN_STRING and --update-bucket-website true for a URL like `https://`account`.blob.core.windows.net/`container`/index.html`. [Host on Azure]
Once hosted, edr send-report can include a link to that hosted report in the Slack summary (instead of or in addition to an HTML attachment), as shown for S3/GCS/Azure. [Share report; Send report summary]
Without hosting, Slack can still receive:
• The HTML file as an attachment (people download/open it locally), via edr send-report --slack-token ... --slack-channel-name .... [Share via Slack]
But for a clickable, shared, always-available dashboard URL, you do need to host the HTML report somewhere. 👍 0 button 👎 0 button ℹ️ Tip: Mention @elementary.ai in the thread for follow-ups or DM the app for 1-to-1 help.Senmi Rai
03/06/2026, 3:23 PMkapa.ai
03/06/2026, 3:24 PMedr report (or edr send-report without any bucket options) generates an HTML file on disk that you can open in your browser. No hosting is required to see the full interactive dashboard yourself. [Share report]
2. Sharing via Slack works as an attachment, not a URL
◦ If you run:
edr send-report --slack-token <SLACK_TOKEN> --slack-channel-name <CHANNEL_NAME>
Elementary will:
▪︎ Generate the HTML report
▪︎ Upload it to Slack as an HTML file attachment
▪︎ Include a summary in the Slack message by default [Share via Slack; Send report summary]
◦ Teammates can download/open that HTML file locally to get the full interactive dashboard, but there is no hosted URL.
3. Slack summary only (no HTML file) is still possible
◦ You can choose to send just the summary text to Slack, without the HTML attachment:
edr send-report \
--slack-token <SLACK_TOKEN> \
--slack-channel-name <CHANNEL_NAME> \
--disable html_attachment
This sends only the summary message; there is still no URL unless you host the report yourself and add a custom integration outside Elementary. [Send report summary; Disable attachment flag]
4. What you don’t get without hosting
◦ No automatic “View full report at: https://…” link in the Slack summary; that behavior is documented only for S3/GCS/Azure hosting via edr send-report with the relevant bucket options. [Send report summary; Host on S3/GCS/Azure]
◦ No always-on, shared URL; each person either:
▪︎ Opens the local HTML file they have, or
▪︎ Downloads the HTML attachment from Slack and opens it locally.
So without hosting, you still get the full interactive report, but it’s shared as a file, not as a web URL. 👍 0 button 👎 0 button ℹ️ Tip: Mention @elementary.ai in the thread for follow-ups or DM the app for 1-to-1 help.Senmi Rai
03/06/2026, 3:26 PMkapa.ai
03/06/2026, 3:26 PMedr send-report --slack-token ... --slack-channel-name .... [Share via Slack]
◦ No extra infra (buckets, permissions, static website config).
• Cons:
◦ No stable URL; people must download/open the file from Slack each time.
◦ Large reports can hit Slack limits or time out; users have reported 10MB reports being “a bit much for Slack” and moved to GCS instead. [Slack timeout thread]
◦ Harder to integrate into docs, dashboards, or share outside Slack.
2. Hosting on S3 / GCS / Azure + Slack summary with link
• Pros:
◦ You get a stable URL to the interactive report (S3/GCS/Azure website). [Host on S3; Host on GCS; Host on Azure]
◦ edr send-report can send a Slack summary that includes a link to the hosted report, so people click straight into the dashboard. [Send report summary]
◦ More scalable for big reports and long‑term sharing (you’re not relying on Slack file uploads).
• Cons:
◦ Requires setting up and maintaining a bucket/container and (optionally) static website config.
◦ You must manage access control on the bucket. [Host on GCS]
Given those trade‑offs, the long‑run pattern most aligned with the docs and community usage is:
• Host the report on S3/GCS/Azure and
• Use edr send-report to send a Slack summary with a link to that hosted report. [Share report; Send report summary]
Slack‑only attachments are fine to start, but hosting + link will generally scale better over time. 👍 0 button 👎 0 button ℹ️ Tip: Mention @elementary.ai in the thread for follow-ups or DM the app for 1-to-1 help.Senmi Rai
03/06/2026, 3:30 PMkapa.ai
03/06/2026, 3:31 PMgs://my-logs-bucket).
• A service account with at least the roles/storage.objectUser role so Elementary can create objects in that bucket. [GCS log streaming]
Log files are written in batches:
• New file every 15 minutes or when the batch reaches 100 MB, whichever comes first. [GCS log streaming]
The docs do not state how many logs you should expect per hour/day, nor any recommended bucket size or retention period.
-------------------------
2. OSS HTML report hosting on GCS
For hosting the OSS observability report on GCS:
• You need a GCS bucket and (optionally) to configure it as a static website.
• edr send-report uploads the HTML report (and, if --update-bucket-website true is used, also an index.html). [Host on GCS; Two files explanation]
The actual file size of elementary_report.html varies by project size and configuration; community examples mention tens of MB, and some users hit platform limits (e.g., App Engine’s 32 MB static file cap), but there is no formal sizing formula or storage recommendation in the docs. [Large report size; Report growth discussion]
-------------------------
Because the documentation does not specify any required or recommended total storage capacity for GCS (for either logs or reports), you’ll need to:
• Estimate based on:
◦ Log volume (for Cloud log streaming) and
◦ Typical HTML report size × number of versions you plan to retain (for OSS reports),
• And then apply your own retention policy on the bucket. 👍 0 button 👎 0 button ℹ️ Tip: Mention @elementary.ai in the thread for follow-ups or DM the app for 1-to-1 help.Senmi Rai
03/06/2026, 3:49 PMkapa.ai
03/06/2026, 3:49 PMelementary_test_results table when you use the Elementary dbt package.
• The docs state that elementary_test_results contains the run results of all dbt tests, including native dbt tests, package tests (like dbt_utils, dbt-expectations), and Elementary tests, and it’s populated on an on-run-end hook named elementary.handle_tests_results.[elementary_test_results; dbt artifacts]
• Community answers also confirm that collected dbt test results are stored in elementary_test_results and that this is the main table Elementary uses for reporting and alerts.[Chinese Q&A; Freshness example] 👍 0 button 👎 0 button ℹ️ Tip: Mention @elementary.ai in the thread for follow-ups or DM the app for 1-to-1 help.Senmi Rai
03/06/2026, 3:50 PMkapa.ai
03/06/2026, 3:50 PMelementary_test_results.
From the docs and Slack threads:
• elementary_test_results is an incremental model: new rows are appended on each run via the elementary.handle_tests_results on‑run‑end hook, and they are kept indefinitely by default.[elementary_test_results]
• Elementary has no lifecycle policy for these results; they “will be stored forever” unless you clean them up yourself.[Results lifecycle]
• Recommended approach is to periodically delete old rows using a timestamp column (e.g. created_at) if the table grows too large, with the caveat that the HTML report and analyses can only show periods that still exist in the table.[Results lifecycle; Storage scaling]
Example pattern (you’d adapt to your warehouse):
DELETE FROM elementary_test_results
WHERE created_at < <threshold_date>;
There is no documented config to say “keep only last N days” automatically; retention is entirely up to your own cleanup jobs or warehouse policies. 👍 0 button 👎 0 button ℹ️ Tip: Mention @elementary.ai in the thread for follow-ups or DM the app for 1-to-1 help.