Refresh Scheduleを設定しても自動実行されない

はじめまして。
redashについて調べていたところこちらを見つけ、もしかしたらと思い投稿させていただきます。
現在、社内のデータ把握の為に、redashを使用しています。
・OS:Ubuntu 16.04.4
・redash:4.0.1
aws amiをベースにec2上でインスタンス起動したものをずっと使用。

使用開始当初から、実は動いていなかったようなのですが、あるクエリに対し、
refresh schedule
を設定しても、自動実行されていないようなのです。
※Last Executedを見ても実行日時はかわらず、データも変更されない

これまで結局誰かが画面から更新をかけていた為、気づかなかったのですが…
自動実行を有効化するには何らか対応が必要なのか、動いていない原因の調査方法などご存じの方がいらっしゃいましたらお知恵をお借りできないでしょうか?

サーバ構築時はamiを使い.envのパラメータを一部調整したくらいしか実施していないと聞いております。

私の方もお会いできてうれしいです、

リフレッシュはどこでスケジュールしましたか? ダッシュボードページ(右上のドロップダウン)またはクエリページ(左下の「更新スケジュール」)にありますか?

ゾンネプランに関して

@tosawada こんにちは!

自動実行ですが、私の知る範囲のバージョンでは、特別な設定が必要ということはなかったように思います。

考えられるのは、自動実行のキューを処理するワーカーが何らかの理由で動いていないなどの原因なのですが、お使いの環境では docker-compose で Redash を起動していますか?それとも supervisord(Legacy 構成)で起動しているでしょうか?

また、認証情報などが含まれないような形で、.env の内容を投稿していただけると、より解決につながるかもしれません。

返信有難うございます。
スケジュールの設定はクエリの方で設定しています。

返信有難うございます。

>環境では docker-compose で Redash を起動していますか?
>それとも supervisord(Legacy 構成)で起動しているでしょうか?

supervisordでの起動です。

>env の内容
以下のような内容です。

export REDASH_LOG_LEVEL=“INFO”
export REDASH_REDIS_URL=redis://localhost:6379/0
export REDASH_DATABASE_URL=“postgresql:///redash”
export REDASH_COOKIE_SECRET=xxxxxx
export ORACLE_HOME=/opt/oracle/instantclient
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle/instantclient
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=JAPANESE_JAPAN.AL32UTF8
export NLS_DATE_FORMAT=YYYY-MM-DD
export REDASH_CSV_WRITER_ENCODING=“cp932”
export QUERY_RESULTS_CLEANUP_ENABLED=true
export QUERY_RESULTS_CLEANUP_COUNT=500
export QUERY_RESULTS_CLEANUP_MAX_AGE=1
export REDASH_ADDITIONAL_QUERY_RUNNERS=redash.query_runner.python,redash.query_runner.oracle
export REDASH_FEATURE_DISABLE_REFRESH_QUERIES=false
export REDASH_ADHOC_QUERY_TIME_LIMIT=3600

導入環境が社内サーバ関連のnw内で構築しており、基本外部サイトへの参照等は全てブロックしていて参照出来ない点が原因では?
という話も出ましたが、、なんとも判断できず。。

@tosawada 情報ありがとうございます。

Redash が動作しているサーバーで ps aux を実行した際、以下のようなプロセスは確認できますか?
Celery に -Qscheduled_queries というオプションが付いたプロセスが、スケジュール実行を担うワーカーのプロセスになりますので、そのプロセスの有無でもう少し切り分けできるかと思います。

redash   25894  1.4  3.3 404520 133620 ?       S    09:16   0:01  \_ [celeryd: celery@ubuntu-bionic:MainProcess] -active- (worker --app=redash.worker -c2 -Qscheduled_queries --maxtasksperchild=10 -Ofair)
redash   25937  0.3  3.2 422776 133184 ?       S    09:16   0:00      \_ [celeryd: celery@ubuntu-bionic:Worker-1]
redash   25939  0.3  3.2 422784 133180 ?       S    09:16   0:00      \_ [celeryd: celery@ubuntu-bionic:Worker-2]

@ariarijp プロセスの情報ですが、celery関連だと以下のようなプロセスがありました。
Qscheduled_queriesというものもあるように見えました。

redash   10739  0.0  0.0 244120  1684 ?        S     5月08   0:00 [celeryd: celery@ntc-redash01:Worker-2]
redash   10740  0.0  0.0 244124  1680 ?        S     5月08   0:00 [celeryd: celery@ntc-redash01:Worker-3]
redash   18449  0.1  1.4 299368 114700 ?       S    12月16   1:53 [celeryd: celery@ntc-redash01:MainProcess] -active- (worker --app=redash.worker -c2 -Qscheduled_queries --maxtasksperchild=10 -Ofair)
redash   18498  0.0  1.4 317088 119876 ?       S    12月16   0:00 [celeryd: celery@ntc-redash01:Worker-1]
redash   18512  0.0  1.4 317088 119912 ?       S    12月16   0:00 [celeryd: celery@ntc-redash01:Worker-2]
redash   18518  0.1  1.4 300912 117540 ?       S    12月16   2:12 [celeryd: celery@ntc-redash01:MainProcess] -active- (worker --app=redash.worker --beat -c2 -Qqueries,celery --maxtasksperchild=10 -Ofair)

プロセスが起動していないというわけではなさそうですね。
ログファイルに何か原因を表すような形跡はありませんか?

以下は私の手元で4.0.1をLegacy構成で立ち上げた際に書き出されているログの置き場所です。

vagrant@ubuntu-bionic:/var/log/supervisor$ ll redash_celery_scheduled-std*
-rw------- 1 root root 951 Dec 18 14:51 redash_celery_scheduled-stderr---supervisor-V9saiX.log
-rw------- 1 root root   0 Dec 18 14:51 redash_celery_scheduled-stdout---supervisor-Qs_FYM.log

ありがとうございます。
直近のログだと以下のようなものがありました。
ただ常に出ているわけではなく、プロセス再起動等のタイミング?で出ているように見え、関係があるかは判断できずですが…

※redash_celery_scheduled-stderr—supervisor-2uL7SB.log

[2019-12-16 21:29:14,334][PID:18449][WARNING][MainProcess] /usr/local/lib/python2.7/dist-packages/celery/apps/worker.py:161: CDeprecationWarning: 
Starting from version 3.2 Celery will refuse to accept pickle by default.

The pickle serializer is a security concern as it may give attackers
the ability to execute any command.  It's important to secure
your broker from unauthorized access when using pickle, so we think
that enabling pickle should require a deliberate action and not be
the default choice.

If you depend on pickle then you should set a setting to disable this
warning and to be sure that everything will continue working
when you upgrade to Celery 3.2::

    CELERY_ACCEPT_CONTENT = ['pickle', 'json', 'msgpack', 'yaml']

You must only enable the serializers that you will actually use.

  warnings.warn(CDeprecationWarning(W_PICKLE_DEPRECATED))
[2019-12-16 21:29:16,466][PID:18449][WARNING][MainProcess] celery@ntc-redash01 ready.

※redash_celery_scheduled-stdout—supe rvisor-a_KJ_b.log

 -------------- celery@ntc-redash01 v3.1.25 (Cipater)
---- **** ----- 
--- * ***  * -- Linux-4.4.0-1061-aws-x86_64-with-Ubuntu-16.04-xenial
-- * - **** --- 
- ** ---------- [config]
- ** ---------- .> app:         redash:0x7fa886cce590
- ** ---------- .> transport:   redis://localhost:6379/0
- ** ---------- .> results:     redis://localhost:6379/0
- *** --- * --- .> concurrency: 2 (prefork)
-- ******* ---- 
--- ***** ----- [queues]
 -------------- .> scheduled_queries exchange=scheduled_queries(direct) key=scheduled_queries

ちなみに、自動実行の機能がもし有効に動いた場合、
例えばEvery 1 minuteに設定し状態でクエリを保存しておくと、
・ブラウザからredashにアクセスし、該当queryを開くと1分前の実行結果が表示
・右下の再生マーク(実行用マーク)の左の直近の実行日の情報も1分前とわかるような表示になる
と思っているのですが(現状はそうなっていない)あっているでしょうか?

直近のログだと以下のようなものがありました。
ただ常に出ているわけではなく、プロセス再起動等のタイミング?で出ているように見え、関係があるかは判断できずですが…

以前教えていただいた環境変数のとおりであれば、ログレベルは INFO なのでもうちょっと何か出ていてほしいですね。。
ログレベルを DEBUG にすると、流れているクエリもログに吐かれるようになるのですが、こちらはすでに確認されていますか?

ちなみに、自動実行の機能がもし有効に動いた場合、
例えばEvery 1 minuteに設定し状態でクエリを保存しておくと、
・ブラウザからredashにアクセスし、該当queryを開くと1分前の実行結果が表示
・右下の再生マーク(実行用マーク)の左の直近の実行日の情報も1分前とわかるような表示になる
と思っているのですが(現状はそうなっていない)あっているでしょうか?

こちらはご認識のとおりです。

また、EC2 を利用されているということなのですが、インスタンスタイプはどちらになりますか?

ログレベルを DEBUG にすると、流れているクエリもログに吐かれるようになる
のですが、こちらはすでに確認されていますか?

DEBUGに変更し、サービス再起動してみましたが、”redash_celery_scheduled-stderr…”には

” [2020-01-08 11:20:33,855][PID:20401][DEBUG][redash.query_runner] Registering Oracle (oracle) query runner.”

のような各データソース用の設定がされたようなログが増えたのみにで、起動後にlog更新が入りませんね。。(stdoutの方も)

EC2 を利用されているということなのですが、インスタンスタイプは
どちらになりますか?

t2 largeです。

@tosawada あらためて v4.0.1 の環境を作りなおし、検証してみたのですが。
クエリパラメータを使用したクエリの場合に自動実行されないことを確認しました。
クエリ自体をここで共有していただくことは難しいと思いますので、クエリパラメータを使っているか、確認してみてください。

わざわざ環境作成までありがとうございます。
クエリですが、今回はredashのクエリ一覧を定期的に最新に、というつもりで、以下クエリで設定してみていました。パラメータは使用していないです。

select
queries.id,
queries.is_draft, queries.NAME, users.email, queries.query
  from queries, users
where queries.is_archived=false 
  AND queries.user_id = users.id
 orDER BY 2

クエリの確認・共有ありがとうございます。

頂いた SQL と同じものを毎分実行にして確認してみたのですが、私の環境では自動実行されていることが確認できました。

導入環境が社内サーバ関連のnw内で構築しており、基本外部サイトへの参照等は全てブロックしていて参照出来ない点が原因では?

念のためこちらも確認してみようと、ネットワークにつながらない状態にして確認しましたが、自動実行には影響ありませんでした。

現時点では解決にいたりませんでしたが、また何か気づいたことがあれば共有させていただきますね。

諸々ありがとうございます。
こちら引き続き確認はする予定ですが、何か進展がありましたらまた共有させていただきます。

1 Like