Superset的图表是非常炫酷的,但是原来的版本只能在web端查看,而最新的0.37版本,可以将图表截图直接发送成邮件,非常的方便。
本文将详细介绍Superset 0.37 定时邮件功能。安装过程遇到的任何问题请关注 “实时流式计算” 随时与我联系。所有的离线安装包已经整理好,请后台回复 “superset0928” 下载。
开启邮件功能
superset 0.37的电子邮件功能 默认是关闭的
电子邮件功能允许用户对以下两种电子邮件进行报告:
图表和仪表板(附件或嵌在邮件之中)
图表数据(CSV附件)
vi config.py
开启邮件功能
ENABLE_SCHEDULED_EMAIL_REPORTS = True
要发送电子邮件 还需要配置一下SMTP
EMAIL_NOTIFICATIONS = True
SMTP_HOST = "email-smtp.eu-west-1.amazonaws.com"
SMTP_STARTTLS = True
SMTP_SSL = False
SMTP_USER = "smtp_username"
SMTP_PORT = 25
SMTP_PASSWORD = os.environ.get("SMTP_PASSWORD")
SMTP_MAIL_FROM = "insights@komoot.com"
启动前记得执行 superset init 否则可能看不到菜单
这时候再登录superset,我们可以看到在Manage下有两个新的菜单了
Dashboard Emails 和 Chart Email Schedules
配置Celery
邮件功能需要使用Celery进行定时调度,为了开启Celery,需要在config.py中进行配置。
class CeleryConfig(object):
BROKER_URL = 'redis://localhost:6379/0'
CELERY_IMPORTS = (
'superset.sql_lab',
'superset.tasks',
)
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERYD_LOG_LEVEL = 'DEBUG'
CELERYD_PREFETCH_MULTIPLIER = 10
CELERY_ACKS_LATE = True
CELERY_ANNOTATIONS = {
'sql_lab.get_sql_results': {
'rate_limit': '100/s',
},
'email_reports.send': {
'rate_limit': '1/s',
'time_limit': 120,
'soft_time_limit': 150,
'ignore_result': True,
},
}
CELERYBEAT_SCHEDULE = {
'email_reports.schedule_hourly': {
'task': 'email_reports.schedule_hourly',
'schedule': crontab(minute=1, hour='*'),
},
}
CELERY_CONFIG = CeleryConfig
随后启动celery worker和celery beat
celery worker --app=superset.tasks.celery_app:app --pool=prefork -O fair -c 4
celery beat --app=superset.tasks.celery_app:app
为了更好地监控Celery,建议大家安装flower,这是一个celery的监控,可以清楚的看到celery任务的执行情况。
pip install flower
celery flower --app=superset.tasks.celery_app:app
flower页面:
安装浏览器驱动
为了可以渲染看板,需要在superset所在环境下本地安装浏览器驱动。
驱动的类型在config.py中配置
EMAIL_REPORT_WEBDRIVER = "chrome"
这里安装chrome
从google官方网站下载google chrome安装包
http://www.google.cn/chrome/browser/desktop/index.html
选择linux系统,并下载google-chrome-stable_current_x86_64.rpm
安装:rpm -ivh google-chrome-stable_current_x86_64.rpm
再安装chromedriver
http://chromedriver.chromium.org/
unzip chromedriver_linux64.zip
mv chromedriver /usr/bin/
清注意两者版本一定要保证一致
安装成功输入 chrome 和 chromedriver验证一下
发送邮件
准备工作做好以后,就可以新建一个邮件发送任务了。
发送看板:
可以选择发送的看板,crontab表达式,邮箱,是否发送测试邮件,内联还是附件。。
也可以选择发送图表:
可以选择发送原始数据。
最后,在邮件中接收到看板和图表了~
邮件看板:
邮件图表:
原始数据:
常见错误
接收不到邮件,也没有看到错误提示
请仔细查看celery worker的log日志,如果发送失败会有错误提示。
可能是SMTP或者其他的配置问题。
如果log正常,请注意设置 SCHEDULED_EMAIL_DEBUG_MODE 是不是设置成了True,如果是True将进行调试模式不会真正的发送邮件,要改成False。
Error: Failed dependencies:
Error: Failed dependencies:
libappindicator3.so.1()(64bit) is needed by google-chrome-stable-85.0.4183.121-1.x86_64
liberation-fonts is needed by google-chrome-stable-85.0.4183.121-1.x86_64
libvulkan.so.1()(64bit) is needed by google-chrome-stable-85.0.4183.121-1.x86_64
安装chrome依赖失败,有网的情况下 yum install libappindicator3 等等 依次安装,没网的话只能自行下载
IndexError: pop from empty list
redis.exceptions.AuthenticationError: Authentication required.
redis认证失败,redis设置了密码,但是访问的URL没有设置密码,设置好密码:“redis://xxx:xxx@localhost:6379/0”
想去掉邮件中的Explore in Superset
需要修改源码,位于
anaconda3/lib/python3.7/site-packages/apache_superset-0.37.0-py3.7.egg/superset/tasks/schedules.py
里面有report charts的邮件模板,修改为自己想要的即可。