"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[8915],{6974:function(e,t,n){n.r(t),n.d(t,{assets:function(){return u},contentTitle:function(){return s},default:function(){return m},frontMatter:function(){return l},metadata:function(){return p},toc:function(){return d}});var r=n(83117),a=n(80102),o=(n(67294),n(3905)),i=["components"],l={title:"Alerts and Reports",hide_title:!0,sidebar_position:9,version:2},s=void 0,p={unversionedId:"installation/alerts-reports",id:"installation/alerts-reports",title:"Alerts and Reports",description:"Alerts and Reports",source:"@site/docs/installation/alerts-reports.mdx",sourceDirName:"installation",slug:"/installation/alerts-reports",permalink:"/docs/installation/alerts-reports",editUrl:"https://github.com/apache/superset/tree/master/docs/docs/installation/alerts-reports.mdx",tags:[],version:"current",sidebarPosition:9,frontMatter:{title:"Alerts and Reports",hide_title:!0,sidebar_position:9,version:2},sidebar:"tutorialSidebar",previous:{title:"Async Queries via Celery",permalink:"/docs/installation/async-queries-celery"},next:{title:"SQL Templating",permalink:"/docs/installation/sql-templating"}},u={},d=[{value:"Alerts and Reports",id:"alerts-and-reports",level:2},{value:"Requirements",id:"requirements",level:3},{value:"Commons",id:"commons",level:4},{value:"In your <code>superset_config.py</code>",id:"in-your-superset_configpy",level:5},{value:"In your <code>Dockerfile</code>",id:"in-your-dockerfile",level:5},{value:"Slack integration",id:"slack-integration",level:4},{value:"Kubernetes specific",id:"kubernetes-specific",level:4},{value:"Docker-compose specific",id:"docker-compose-specific",level:4},{value:"You must have in your<code>docker-compose.yaml</code>",id:"you-must-have-in-yourdocker-composeyaml",level:5},{value:"Detailed config",id:"detailed-config",level:3},{value:"Custom Dockerfile",id:"custom-dockerfile",level:3},{value:"Using Firefox",id:"using-firefox",level:4},{value:"Using Chrome",id:"using-chrome",level:4},{value:"Summary of steps to turn on alerts and reporting:",id:"summary-of-steps-to-turn-on-alerts-and-reporting",level:3},{value:"Docker compose",id:"docker-compose",level:3},{value:"Redis message broker",id:"redis-message-broker",level:4},{value:"Replacing SQLite with Postgres",id:"replacing-sqlite-with-postgres",level:4},{value:"Celery worker",id:"celery-worker",level:4},{value:"Celery beat",id:"celery-beat",level:4},{value:"Full <code>docker-compose.yaml</code> configuration",id:"full-docker-composeyaml-configuration",level:4},{value:"Summary",id:"summary",level:3},{value:"Scheduling and Emailing Reports",id:"scheduling-and-emailing-reports",level:2},{value:"Email Reports",id:"email-reports",level:3},{value:"Schedule Reports",id:"schedule-reports",level:3}],c={toc:d};function m(e){var t=e.components,n=(0,a.Z)(e,i);return(0,o.kt)("wrapper",(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"alerts-and-reports"},"Alerts and Reports"),(0,o.kt)("p",null,"(version 1.0.1 and above)"),(0,o.kt)("p",null,"Users can configure automated alerts and reports to send dashboards or charts to an email recipient or Slack channel."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Alerts are sent when a SQL condition is reached"),(0,o.kt)("li",{parentName:"ul"},"Reports are sent on a schedule")),(0,o.kt)("p",null,"Alerts and reports are disabled by default. To turn them on, you need to do some setup, described here."),(0,o.kt)("h3",{id:"requirements"},"Requirements"),(0,o.kt)("h4",{id:"commons"},"Commons"),(0,o.kt)("h5",{id:"in-your-superset_configpy"},"In your ",(0,o.kt)("inlineCode",{parentName:"h5"},"superset_config.py")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},'"ALERT_REPORTS"')," ",(0,o.kt)("a",{parentName:"li",href:"https://superset.apache.org/docs/installation/configuring-superset#feature-flags"},"feature flag")," must be turned to True."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"CELERYBEAT_SCHEDULE")," in CeleryConfig must contain schedule for ",(0,o.kt)("inlineCode",{parentName:"li"},"reports.scheduler"),"."),(0,o.kt)("li",{parentName:"ul"},"At least one of those must be configured, depending on what you want to use:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"emails: ",(0,o.kt)("inlineCode",{parentName:"li"},"SMTP_*")," settings"),(0,o.kt)("li",{parentName:"ul"},"Slack messages: ",(0,o.kt)("inlineCode",{parentName:"li"},"SLACK_API_TOKEN"))))),(0,o.kt)("h5",{id:"in-your-dockerfile"},"In your ",(0,o.kt)("inlineCode",{parentName:"h5"},"Dockerfile")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"You must install a headless browser, for taking screenshots of the charts and dashboards. Only Firefox and Chrome are currently supported.",(0,o.kt)("blockquote",{parentName:"li"},(0,o.kt)("p",{parentName:"blockquote"},"If you choose Chrome, you must also change the value of ",(0,o.kt)("inlineCode",{parentName:"p"},"WEBDRIVER_TYPE")," to ",(0,o.kt)("inlineCode",{parentName:"p"},'"chrome"')," in your ",(0,o.kt)("inlineCode",{parentName:"p"},"superset_config.py"),".")))),(0,o.kt)("p",null,"Note : All the components required (headless browser, redis, postgres db, celery worker and celery beat) are present in the docker image if you are following ",(0,o.kt)("a",{parentName:"p",href:"https://superset.apache.org/docs/installation/installing-superset-using-docker-compose/"},"Installing Superset Locally"),".\nAll you need to do is add the required config (See ",(0,o.kt)("inlineCode",{parentName:"p"},"Detailed Config"),"). Set ",(0,o.kt)("inlineCode",{parentName:"p"},"ALERT_REPORTS_NOTIFICATION_DRY_RUN")," to ",(0,o.kt)("inlineCode",{parentName:"p"},"False")," in ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/apache/superset/blob/master/docker/pythonpath_dev/superset_config.py"},"superset config")," to disable dry-run mode and start receiving email/slack notifications."),(0,o.kt)("h4",{id:"slack-integration"},"Slack integration"),(0,o.kt)("p",null,"To send alerts and reports to Slack channels, you need to create a new Slack Application on your workspace."),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Connect to your Slack workspace, then head to ",(0,o.kt)("a",{parentName:"li",href:"https://api.slack.com/apps"},"https://api.slack.com/apps"),"."),(0,o.kt)("li",{parentName:"ol"},"Create a new app."),(0,o.kt)("li",{parentName:"ol"},'Go to "OAuth & Permissions" section, and give the following scopes to your app:',(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"incoming-webhook")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"files:write")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"chat:write")))),(0,o.kt)("li",{parentName:"ol"},'At the top of the "OAuth and Permissions" section, click "install to workspace".'),(0,o.kt)("li",{parentName:"ol"},"Select a default channel for your app and continue.\n(You can post to any channel by inviting your Superset app into that channel)."),(0,o.kt)("li",{parentName:"ol"},'The app should now be installed in your workspace, and a "Bot User OAuth Access Token" should have been created. Copy that token in the ',(0,o.kt)("inlineCode",{parentName:"li"},"SLACK_API_TOKEN")," variable of your ",(0,o.kt)("inlineCode",{parentName:"li"},"superset_config.py"),"."),(0,o.kt)("li",{parentName:"ol"},"Restart the service (or run ",(0,o.kt)("inlineCode",{parentName:"li"},"superset init"),") to pull in the new configuration.")),(0,o.kt)("p",null,"Note: when you configure an alert or a report, the Slack channel list take channel names without the leading '#' e.g. use ",(0,o.kt)("inlineCode",{parentName:"p"},"alerts")," instead of ",(0,o.kt)("inlineCode",{parentName:"p"},"#alerts"),"."),(0,o.kt)("h4",{id:"kubernetes-specific"},"Kubernetes specific"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"You must have a ",(0,o.kt)("inlineCode",{parentName:"li"},"celery beat")," pod running. If you're using the chart included in the GitHub repository under ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/apache/superset/tree/master/helm/superset"},"helm/superset"),", you need to put ",(0,o.kt)("inlineCode",{parentName:"li"},"supersetCeleryBeat.enabled = true")," in your values override."),(0,o.kt)("li",{parentName:"ul"},"You can see the dedicated docs about ",(0,o.kt)("a",{parentName:"li",href:"/docs/installation/running-on-kubernetes"},"Kubernetes installation")," for more generic details.")),(0,o.kt)("h4",{id:"docker-compose-specific"},"Docker-compose specific"),(0,o.kt)("h5",{id:"you-must-have-in-yourdocker-composeyaml"},"You must have in your",(0,o.kt)("inlineCode",{parentName:"h5"},"docker-compose.yaml")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"a redis message broker"),(0,o.kt)("li",{parentName:"ul"},"PostgreSQL DB instead of SQLlite"),(0,o.kt)("li",{parentName:"ul"},"one or more ",(0,o.kt)("inlineCode",{parentName:"li"},"celery worker")),(0,o.kt)("li",{parentName:"ul"},"a single ",(0,o.kt)("inlineCode",{parentName:"li"},"celery beat"))),(0,o.kt)("h3",{id:"detailed-config"},"Detailed config"),(0,o.kt)("p",null,"The following configurations need to be added to the ",(0,o.kt)("inlineCode",{parentName:"p"},"superset_config.py")," file. This file is loaded when the image runs, and any configurations in it will override the default configurations found in the ",(0,o.kt)("inlineCode",{parentName:"p"},"config.py"),"."),(0,o.kt)("p",null,"You can find documentation about each field in the default ",(0,o.kt)("inlineCode",{parentName:"p"},"config.py")," in the GitHub repository under ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/apache/superset/blob/master/superset/config.py"},"superset/config.py"),"."),(0,o.kt)("p",null,"You need to replace default values with your custom Redis, Slack and/or SMTP config."),(0,o.kt)("p",null,"In the ",(0,o.kt)("inlineCode",{parentName:"p"},"CeleryConfig"),", only the ",(0,o.kt)("inlineCode",{parentName:"p"},"CELERYBEAT_SCHEDULE")," is relative to this feature, the rest of the ",(0,o.kt)("inlineCode",{parentName:"p"},"CeleryConfig")," can be changed for your needs."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-python"},"from celery.schedules import crontab\n\nFEATURE_FLAGS = {\n    \"ALERT_REPORTS\": True\n}\n\nREDIS_HOST = \"redis-superset\"\nREDIS_PORT = \"6379\"\n\nclass CeleryConfig:\n    broker_url = 'redis://%s:%s/0' % (REDIS_HOST, REDIS_PORT)\n    imports = ('superset.sql_lab', \"superset.tasks\", \"superset.tasks.thumbnails\", )\n    result_backend = 'redis://%s:%s/0' % (REDIS_HOST, REDIS_PORT)\n    worker_prefetch_multiplier = 10\n    task_acks_late = True\n    task_annotations = {\n        'sql_lab.get_sql_results': {\n            'rate_limit': '100/s',\n        },\n        'email_reports.send': {\n            'rate_limit': '1/s',\n            'time_limit': 600,\n            'soft_time_limit': 600,\n            'ignore_result': True,\n        },\n    }\n    beat_schedule = {\n        'reports.scheduler': {\n            'task': 'reports.scheduler',\n            'schedule': crontab(minute='*', hour='*'),\n        },\n        'reports.prune_log': {\n            'task': 'reports.prune_log',\n            'schedule': crontab(minute=0, hour=0),\n        },\n    }\nCELERY_CONFIG = CeleryConfig\n\nSCREENSHOT_LOCATE_WAIT = 100\nSCREENSHOT_LOAD_WAIT = 600\n\n# Slack configuration\nSLACK_API_TOKEN = \"xoxb-\"\n\n# Email configuration\nSMTP_HOST = \"smtp.sendgrid.net\" #change to your host\nSMTP_STARTTLS = True\nSMTP_SSL = False\nSMTP_USER = \"your_user\"\nSMTP_PORT = 2525 # your port eg. 587\nSMTP_PASSWORD = \"your_password\"\nSMTP_MAIL_FROM = \"noreply@youremail.com\"\n\n# WebDriver configuration\n# If you use Firefox, you can stick with default values\n# If you use Chrome, then add the following WEBDRIVER_TYPE and WEBDRIVER_OPTION_ARGS\nWEBDRIVER_TYPE = \"chrome\"\nWEBDRIVER_OPTION_ARGS = [\n    \"--force-device-scale-factor=2.0\",\n    \"--high-dpi-support=2.0\",\n    \"--headless\",\n    \"--disable-gpu\",\n    \"--disable-dev-shm-usage\",\n    \"--no-sandbox\",\n    \"--disable-setuid-sandbox\",\n    \"--disable-extensions\",\n]\n\n# This is for internal use, you can keep http\nWEBDRIVER_BASEURL=\"http://superset:8088\"\n# This is the link sent to the recipient, change to your domain eg. https://superset.mydomain.com\nWEBDRIVER_BASEURL_USER_FRIENDLY=\"http://localhost:8088\"\n")),(0,o.kt)("h3",{id:"custom-dockerfile"},"Custom Dockerfile"),(0,o.kt)("p",null,"A webdriver (and headless browser) is needed to capture screenshots of the charts and dashboards which are then sent to the recipient. As the base superset image does not have a webdriver installed, we need to extend it and install the webdriver."),(0,o.kt)("h4",{id:"using-firefox"},"Using Firefox"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-docker"},"FROM apache/superset:1.0.1\n\nUSER root\n\nRUN apt-get update && \\\n    apt-get install --no-install-recommends -y firefox-esr\n\nENV GECKODRIVER_VERSION=0.29.0\nRUN wget -q https://github.com/mozilla/geckodriver/releases/download/v${GECKODRIVER_VERSION}/geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz && \\\n    tar -x geckodriver -zf geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz -O > /usr/bin/geckodriver && \\\n    chmod 755 /usr/bin/geckodriver && \\\n    rm geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz\n\nRUN pip install --no-cache gevent psycopg2 redis\n\nUSER superset\n")),(0,o.kt)("h4",{id:"using-chrome"},"Using Chrome"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-docker"},"FROM apache/superset:1.0.1\n\nUSER root\n\nRUN apt-get update && \\\n    wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \\\n    apt-get install -y --no-install-recommends ./google-chrome-stable_current_amd64.deb && \\\n    rm -f google-chrome-stable_current_amd64.deb\n\nRUN export CHROMEDRIVER_VERSION=$(curl --silent https://chromedriver.storage.googleapis.com/LATEST_RELEASE_88) && \\\n    wget -q https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip && \\\n    unzip chromedriver_linux64.zip -d /usr/bin && \\\n    chmod 755 /usr/bin/chromedriver && \\\n    rm -f chromedriver_linux64.zip\n\nRUN pip install --no-cache gevent psycopg2 redis\n\nUSER superset\n")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"Don't forget to set ",(0,o.kt)("inlineCode",{parentName:"p"},"WEBDRIVER_TYPE")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"WEBDRIVER_OPTION_ARGS")," in your config if you use Chrome.")),(0,o.kt)("h3",{id:"summary-of-steps-to-turn-on-alerts-and-reporting"},"Summary of steps to turn on alerts and reporting:"),(0,o.kt)("p",null,"Using the templates below,"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Create a new directory and create the Dockerfile"),(0,o.kt)("li",{parentName:"ol"},"Build the extended image using the Dockerfile"),(0,o.kt)("li",{parentName:"ol"},"Create the ",(0,o.kt)("inlineCode",{parentName:"li"},"docker-compose.yaml")," file in the same directory"),(0,o.kt)("li",{parentName:"ol"},"Create a new subdirectory called ",(0,o.kt)("inlineCode",{parentName:"li"},"config")),(0,o.kt)("li",{parentName:"ol"},"Create the ",(0,o.kt)("inlineCode",{parentName:"li"},"superset_config.py")," file in the ",(0,o.kt)("inlineCode",{parentName:"li"},"config")," subdirectory"),(0,o.kt)("li",{parentName:"ol"},"Run the image using ",(0,o.kt)("inlineCode",{parentName:"li"},"docker-compose up")," in the same directory as the ",(0,o.kt)("inlineCode",{parentName:"li"},"docker-compose.py")," file"),(0,o.kt)("li",{parentName:"ol"},"In a new terminal window, upgrade the DB by running ",(0,o.kt)("inlineCode",{parentName:"li"},"docker exec -it superset-1.0.1-extended superset db upgrade")),(0,o.kt)("li",{parentName:"ol"},"Then run ",(0,o.kt)("inlineCode",{parentName:"li"},"docker exec -it superset-1.0.1-extended superset init")),(0,o.kt)("li",{parentName:"ol"},"Then setup your admin user if need be, ",(0,o.kt)("inlineCode",{parentName:"li"},"docker exec -it superset-1.0.1-extended superset fab create-admin")),(0,o.kt)("li",{parentName:"ol"},"Finally, restart the running instance - ",(0,o.kt)("inlineCode",{parentName:"li"},"CTRL-C"),", then ",(0,o.kt)("inlineCode",{parentName:"li"},"docker-compose up"))),(0,o.kt)("p",null,"(note: v 1.0.1 is current at time of writing, you can change the version number to the latest version if a newer version is available)"),(0,o.kt)("h3",{id:"docker-compose"},"Docker compose"),(0,o.kt)("p",null,"The docker compose file lists the services that will be used when running the image. The specific services needed for alerts and reporting are outlined below."),(0,o.kt)("h4",{id:"redis-message-broker"},"Redis message broker"),(0,o.kt)("p",null,"To ferry requests between the celery worker and the Superset instance, we use a message broker. This template uses Redis."),(0,o.kt)("h4",{id:"replacing-sqlite-with-postgres"},"Replacing SQLite with Postgres"),(0,o.kt)("p",null,"While it might be possible to use SQLite for alerts and reporting, it is highly recommended using a more production ready DB for Superset in general. Our template uses Postgres."),(0,o.kt)("h4",{id:"celery-worker"},"Celery worker"),(0,o.kt)("p",null,"The worker will process the tasks that need to be performed when an alert or report is fired."),(0,o.kt)("h4",{id:"celery-beat"},"Celery beat"),(0,o.kt)("p",null,"The beat is the scheduler that tells the worker when to perform its tasks. This schedule is defined when you create the alert or report."),(0,o.kt)("h4",{id:"full-docker-composeyaml-configuration"},"Full ",(0,o.kt)("inlineCode",{parentName:"h4"},"docker-compose.yaml")," configuration"),(0,o.kt)("p",null,"The Redis, Postgres, Celery worker and Celery beat services are defined in the template:"),(0,o.kt)("p",null,"Config for ",(0,o.kt)("inlineCode",{parentName:"p"},"docker-compose.yaml"),":"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-docker"},'version: \'3.6\'\nservices:\n  redis:\n    image: redis:6.0.9-buster\n    restart: on-failure\n    volumes:\n      - redis:/data\n  postgres:\n    image: postgres\n    restart: on-failure\n    environment:\n      POSTGRES_DB: superset\n      POSTGRES_PASSWORD: superset\n      POSTGRES_USER: superset\n    volumes:\n      - db:/var/lib/postgresql/data\n  worker:\n    image: superset-1.0.1-extended\n    restart: on-failure\n    healthcheck:\n      disable: true\n    depends_on:\n      - superset\n      - postgres\n      - redis\n    command: "celery --app=superset.tasks.celery_app:app worker --pool=gevent --concurrency=500"\n    volumes:\n      - ./config/:/app/pythonpath/\n  beat:\n    image: superset-1.0.1-extended\n    restart: on-failure\n    healthcheck:\n      disable: true\n    depends_on:\n      - superset\n      - postgres\n      - redis\n    command: "celery --app=superset.tasks.celery_app:app beat --pidfile /tmp/celerybeat.pid --schedule /tmp/celerybeat-schedule"\n    volumes:\n      - ./config/:/app/pythonpath/\n  superset:\n    image: superset-1.0.1-extended\n    restart: on-failure\n    environment:\n      - SUPERSET_PORT=8088\n    ports:\n      - "8088:8088"\n    depends_on:\n      - postgres\n      - redis\n    command: gunicorn --bind  0.0.0.0:8088 --access-logfile - --error-logfile - --workers 5 --worker-class gthread --threads 4 --timeout 200 --limit-request-line 4094 --limit-request-field_size 8190 superset.app:create_app()\n    volumes:\n      - ./config/:/app/pythonpath/\nvolumes:\n  db:\n    external: true\n  redis:\n    external: false\n')),(0,o.kt)("h3",{id:"summary"},"Summary"),(0,o.kt)("p",null,"With the extended image created by using the ",(0,o.kt)("inlineCode",{parentName:"p"},"Dockerfile"),", and then running that image using ",(0,o.kt)("inlineCode",{parentName:"p"},"docker-compose.yaml"),", plus the required configurations in the ",(0,o.kt)("inlineCode",{parentName:"p"},"superset_config.py")," you should now have alerts and reporting working correctly."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"The above templates also work in a Docker swarm environment, you would just need to add ",(0,o.kt)("inlineCode",{parentName:"li"},"Deploy:")," to the Superset, Redis and Postgres services along with your specific configs for your swarm")),(0,o.kt)("h1",{id:"old-reports-feature"},"Old Reports feature"),(0,o.kt)("h2",{id:"scheduling-and-emailing-reports"},"Scheduling and Emailing Reports"),(0,o.kt)("p",null,"(version 0.38 and below)"),(0,o.kt)("h3",{id:"email-reports"},"Email Reports"),(0,o.kt)("p",null,"Email reports allow users to schedule email reports for:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"chart and dashboard visualization (attachment or inline)"),(0,o.kt)("li",{parentName:"ul"},"chart data (CSV attachment on inline table)")),(0,o.kt)("p",null,"Enable email reports in your ",(0,o.kt)("inlineCode",{parentName:"p"},"superset_config.py")," file:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-python"},"ENABLE_SCHEDULED_EMAIL_REPORTS = True\n")),(0,o.kt)("p",null,"This flag enables some permissions that are stored in your database, so you'll want to run ",(0,o.kt)("inlineCode",{parentName:"p"},"superset init")," again if you are running this in a dev environment.\nNow you will find two new items in the navigation bar that allow you to schedule email reports:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Manage > Dashboard Emails")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Manage > Chart Email Schedules"))),(0,o.kt)("p",null,"Schedules are defined in ",(0,o.kt)("a",{parentName:"p",href:"https://crontab.guru/"},"crontab format")," and each schedule can have a list\nof recipients (all of them can receive a single mail, or separate mails). For audit purposes, all\noutgoing mails can have a mandatory BCC."),(0,o.kt)("p",null,"In order get picked up you need to configure a celery worker and a celery beat (see section above\n\u201cCelery Tasks\u201d). Your celery configuration also needs an entry ",(0,o.kt)("inlineCode",{parentName:"p"},"email_reports.schedule_hourly")," for\n",(0,o.kt)("inlineCode",{parentName:"p"},"CELERYBEAT_SCHEDULE"),"."),(0,o.kt)("p",null,"To send emails you need to configure SMTP settings in your ",(0,o.kt)("inlineCode",{parentName:"p"},"superset_config.py")," configuration file."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-python"},'EMAIL_NOTIFICATIONS = True\n\nSMTP_HOST = "email-smtp.eu-west-1.amazonaws.com"\nSMTP_STARTTLS = True\nSMTP_SSL = False\nSMTP_USER = "smtp_username"\nSMTP_PORT = 25\nSMTP_PASSWORD = os.environ.get("SMTP_PASSWORD")\nSMTP_MAIL_FROM = "insights@komoot.com"\n')),(0,o.kt)("p",null,"To render dashboards you need to install a local browser on your Superset instance:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/mozilla/geckodriver"},"geckodriver")," for Firefox"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"http://chromedriver.chromium.org/"},"chromedriver")," for Chrome")),(0,o.kt)("p",null,"You'll need to adjust the ",(0,o.kt)("inlineCode",{parentName:"p"},"WEBDRIVER_TYPE")," accordingly in your configuration. You also need\nto specify on behalf of which username to render the dashboards. In general dashboards and charts\nare not accessible to unauthorized requests, that is why the worker needs to take over credentials\nof an existing user to take a snapshot."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-python"},"THUMBNAIL_SELENIUM_USER = 'username_with_permission_to_access_dashboards'\n")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Important notes")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Be mindful of the concurrency setting for celery (using ",(0,o.kt)("inlineCode",{parentName:"li"},"-c 4"),"). Selenium/webdriver instances can\nconsume a lot of CPU / memory on your servers."),(0,o.kt)("li",{parentName:"ul"},"In some cases, if you notice a lot of leaked geckodriver processes, try running your celery\nprocesses with ",(0,o.kt)("inlineCode",{parentName:"li"},"celery worker --pool=prefork --max-tasks-per-child=128 ...")),(0,o.kt)("li",{parentName:"ul"},"It is recommended to run separate workers for the ",(0,o.kt)("inlineCode",{parentName:"li"},"sql_lab")," and ",(0,o.kt)("inlineCode",{parentName:"li"},"email_reports")," tasks. This can be\ndone using the ",(0,o.kt)("inlineCode",{parentName:"li"},"queue")," field in ",(0,o.kt)("inlineCode",{parentName:"li"},"CELERY_ANNOTATIONS"),"."),(0,o.kt)("li",{parentName:"ul"},"Adjust ",(0,o.kt)("inlineCode",{parentName:"li"},"WEBDRIVER_BASEURL")," in your configuration file if celery workers can\u2019t access Superset via\nits default value of ",(0,o.kt)("inlineCode",{parentName:"li"},"http://0.0.0.0:8080/"),".")),(0,o.kt)("h3",{id:"schedule-reports"},"Schedule Reports"),(0,o.kt)("p",null,"You can optionally allow your users to schedule queries directly in SQL Lab. This is done by adding\nextra metadata to saved queries, which are then picked up by an external scheduled (like\n",(0,o.kt)("a",{parentName:"p",href:"https://airflow.apache.org/"},"Apache Airflow"),")."),(0,o.kt)("p",null,"To allow scheduled queries, add the following to ",(0,o.kt)("inlineCode",{parentName:"p"},"SCHEDULED_QUERIES")," in your configuration file:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-python"},"SCHEDULED_QUERIES = {\n    # This information is collected when the user clicks \"Schedule query\",\n    # and saved into the `extra` field of saved queries.\n    # See: https://github.com/mozilla-services/react-jsonschema-form\n    'JSONSCHEMA': {\n        'title': 'Schedule',\n        'description': (\n            'In order to schedule a query, you need to specify when it '\n            'should start running, when it should stop running, and how '\n            'often it should run. You can also optionally specify '\n            'dependencies that should be met before the query is '\n            'executed. Please read the documentation for best practices '\n            'and more information on how to specify dependencies.'\n        ),\n        'type': 'object',\n        'properties': {\n            'output_table': {\n                'type': 'string',\n                'title': 'Output table name',\n            },\n            'start_date': {\n                'type': 'string',\n                'title': 'Start date',\n                # date-time is parsed using the chrono library, see\n                # https://www.npmjs.com/package/chrono-node#usage\n                'format': 'date-time',\n                'default': 'tomorrow at 9am',\n            },\n            'end_date': {\n                'type': 'string',\n                'title': 'End date',\n                # date-time is parsed using the chrono library, see\n                # https://www.npmjs.com/package/chrono-node#usage\n                'format': 'date-time',\n                'default': '9am in 30 days',\n            },\n            'schedule_interval': {\n                'type': 'string',\n                'title': 'Schedule interval',\n            },\n            'dependencies': {\n                'type': 'array',\n                'title': 'Dependencies',\n                'items': {\n                    'type': 'string',\n                },\n            },\n        },\n    },\n    'UISCHEMA': {\n        'schedule_interval': {\n            'ui:placeholder': '@daily, @weekly, etc.',\n        },\n        'dependencies': {\n            'ui:help': (\n                'Check the documentation for the correct format when '\n                'defining dependencies.'\n            ),\n        },\n    },\n    'VALIDATION': [\n        # ensure that start_date <= end_date\n        {\n            'name': 'less_equal',\n            'arguments': ['start_date', 'end_date'],\n            'message': 'End date cannot be before start date',\n            # this is where the error message is shown\n            'container': 'end_date',\n        },\n    ],\n    # link to the scheduler; this example links to an Airflow pipeline\n    # that uses the query id and the output table as its name\n    'linkback': (\n        'https://airflow.example.com/admin/airflow/tree?'\n        'dag_id=query_${id}_${extra_json.schedule_info.output_table}'\n    ),\n}\n")),(0,o.kt)("p",null,"This configuration is based on\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/mozilla-services/react-jsonschema-form"},"react-jsonschema-form")," and will add a\nmenu item called \u201cSchedule\u201d to SQL Lab. When the menu item is clicked, a modal will show up where\nthe user can add the metadata required for scheduling the query."),(0,o.kt)("p",null,"This information can then be retrieved from the endpoint ",(0,o.kt)("inlineCode",{parentName:"p"},"/savedqueryviewapi/api/read")," and used to\nschedule the queries that have ",(0,o.kt)("inlineCode",{parentName:"p"},"scheduled_queries")," in their JSON metadata. For schedulers other than\nAirflow, additional fields can be easily added to the configuration file above."))}m.isMDXComponent=!0},3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return m}});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(n),m=a,h=c["".concat(s,".").concat(m)]||c[m]||d[m]||o;return n?r.createElement(h,i(i({ref:t},u),{},{components:n})):r.createElement(h,i({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:a,i[1]=l;for(var p=2;p<o;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}c.displayName="MDXCreateElement"}}]);