<@U088WCP3B4P> how do you send reports using Slack...
# ask-elementary-ai
s
@kapa.ai how do you send reports using Slack alerts ?
k
There are two different Slack-related flows in Elementary OSS, and they use different commands: 1. Send alerts to Slack (for failed tests, freshness, etc.) Use
edr monitor
after your dbt run/tests:
Copy code
edr monitor --slack-token <SLACK_TOKEN> --slack-channel-name <CHANNEL_NAME>
or with a webhook:
Copy code
edr monitor --slack-webhook <SLACK_WEBHOOK_URL>
You can also configure Slack once in `~/.edr/config.yml`:
Copy code
slack:
  token: <your_slack_token>
  channel_name: <slack_channel_to_post_at>
  group_alerts_by: table  # or alert
Then just run:
Copy code
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`:
Copy code
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:
Copy code
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
Copy code
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): ~ bash edr send-report \ --slack-token SLACK_TOKEN \ --slack-channel-name CHANNEL_NAME \ --disable html_attachment • Use
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.
s
Does the summary have the same features as the html report ?
@kapa.ai Does the summary have the same features as the html report ?
k
No, the Slack summary does not have the same features or level of detail as the full HTML report. From the docs and community threads: • The HTML report is a full observability UI: it includes detailed views on tests, models, sources, exposures, runs, and lets you drill into failures (including failed rows, lineage context, coverage, etc.). [CLI commands] • The Slack summary is a compact notification focused on test statistics and statuses (passed/warn/failed) so you can quickly see if there’s something to address. It does not expose the full interactive UI or all object types the way the HTML report does. [Send report summary; Slack summary content] Also: • The docs explicitly say: “The report itself cannot be filtered by tag, owner or model! To use those filters for the summary you need to disable the report attachment…” – meaning the summary has its own, more limited filtering behavior, separate from the full report. [Send report summary] • A user looking at a summary with
--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.
s
@kapa.ai so inorder to see the html report the reports have to be hosted somewhere ?
k
No, you don’t have to host the report to see it. When you run:
Copy code
edr 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.
s
@kapa.ai I want to share a daily report at least once and share it in a channel via Slack alert
k
To do a daily report + Slack message you’ll typically use
edr 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:
Copy code
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`:
Copy code
slack:
  token: <your_slack_token>
  channel_name: <your_channel>
Then just:
Copy code
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:
Copy code
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:
Copy code
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.
s
@kapa.ai but in order to share the full interactive dashboard report the html reports will have to be hosted somehwere
k
Yes. To share the full interactive HTML dashboard with others (so they can click around in their own browser), the report needs to be hosted somewhere accessible. Elementary supports hosting via: • Amazon S3 –
edr 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.
s
@kapa.ai Can you explain more about what will happen without hosting ?
k
Without hosting the report (S3/GCS/Azure), here’s what happens based on the docs and community threads: 1. You can still generate and view the full HTML report locally ◦ Running
edr 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:
Copy code
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:
Copy code
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.
s
@kapa.ai which option would fare better in the long run ?
k
The knowledge sources don’t give a prescriptive “best” choice, but they do show clear trade‑offs: 1. Slack HTML attachment only (no hosting) • Pros: ◦ Easiest to set up: just
edr 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.
s
What would be the storage requirements for the Google Cloud ? @kapa.ai
k
The knowledge sources don’t provide concrete sizing guidance (GB/day, retention policies, etc.) for Google Cloud in your use case, so I can only summarize what is documented. There are two separate Google Cloud–related pieces: ------------------------- 1. Elementary Cloud log streaming → GCS For Elementary Cloud’s log‑streaming integration, the only explicit storage requirement is: • You must have an existing GCS bucket that Elementary can write to (e.g.
gs://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.
s
@kapa.ai the results of the dbt tests get saved in elementary_test_results ?
k
Yes. All dbt test results are saved into the
elementary_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.
s
What is the storage / retention of this ? @kapa.ai
k
Elementary does not enforce any built‑in storage limit or retention policy on
elementary_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):
Copy code
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.