redash 3.0.0 upgrade

表題の通り。公式のAMIで起動しているredashで下記のような表示がされていたのでupgradeしてみた。たぶん使い始めた時にはすでに表示されていたはずである…。

■ 環境

  • redash 2.0.0 → 3.0.0
  • Ubuntu 16.04
  • AWS

■ redash upgrade

New Redash version available“のリンクからアクセスし、upgradeの方法を確認してみる。

Re:dash Releases
https://version.redash.io/

最新版である”3.0.0“の”Upgrade Instructions“から下記にアクセスした。

How to Upgrade | Redash
https://redash.io/help/open-source/admin-guide/how-to-upgrade

この通りコマンドを実行したがエラーとなった。

$ sudo /opt/redash/current/bin/upgrade
Starting Redash upgrade:
Found version: 3.0.0
Current version: 2.0.0+b2990
* Before doing an upgrade, please make sure you have a backup.
* If you have any issues, please refer to the troubleshooting section in the upgrade guide:
https://redash.io/help-onpremise/maintenance/how-to-upgrade-redash.html
* If the upgrade guide doesn't help, you can ask for help on the forum (https://discuss.redash.io).

Full CHANGELOG for this release: https://github.com/getredash/redash/blob/master/CHANGELOG.md
Continue with upgrade? (y/n): y
Downloading release tarball...
Unpacking to: redash.3.0.0.b3134...
Changing ownership to redash...
Linking .env file...
Installing new Python packages (if needed)...
Running migrations (if needed)...
Failed running: sudo -u redash bin/run ./manage.py db upgrade
Exit status: 1
Output:
Traceback (most recent call last):
  File "/opt/redash/redash.3.0.0.b3134/manage.py", line 6, in 
    from redash.cli import manager
  File "/opt/redash/redash.3.0.0.b3134/redash/__init__.py", line 70, in 
    import_query_runners(settings.QUERY_RUNNERS)
  File "/opt/redash/redash.3.0.0.b3134/redash/query_runner/__init__.py", line 175, in import_query_runners
    __import__(runner_import)
  File "/opt/redash/redash.3.0.0.b3134/redash/query_runner/big_query.py", line 18, in 
    import apiclient.errors
  File "/usr/local/lib/python2.7/dist-packages/apiclient/__init__.py", line 19, in 
    from googleapiclient import discovery
  File "/usr/local/lib/python2.7/dist-packages/googleapiclient/discovery.py", line 71, in 
    from oauth2client.client import GoogleCredentials
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/client.py", line 47, in 
    from oauth2client import crypt
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/crypt.py", line 45, in 
    from oauth2client import _openssl_crypt
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/_openssl_crypt.py", line 16, in 
    from OpenSSL import crypto
  File "/usr/local/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in 
    from OpenSSL import rand, crypto, SSL
  File "/usr/local/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 105, in 
    SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: 'module' object has no attribute 'SSL_ST_INIT'

$

前述のURLの”Troubleshooting“に記載があったので”pyOpenSSL“のversionを確認すると、”3.0.0“では”16.2.0“が必要なようである。現状を確認。

$ pip list --format=legacy | grep pyOpenSSL
pyOpenSSL (0.14)
$

まずは”pyOpenSSL“から”upgrade“する必要があるようだ。

$ sudo pip install --upgrade pyOpenSSL

再度versionを確認すると下記のようになった。

$ pip list --format=legacy | grep pyOpenSSL
pyOpenSSL (17.5.0)
$

随分と上がったがまぁ良いだろう。これで再度”upgrade“を実行する。

$ sudo /opt/redash/current/bin/upgrade
Starting Redash upgrade:
Found version: 3.0.0
Current version: 2.0.0+b2990
* Before doing an upgrade, please make sure you have a backup.
* If you have any issues, please refer to the troubleshooting section in the upgrade guide:
https://redash.io/help-onpremise/maintenance/how-to-upgrade-redash.html
* If the upgrade guide doesn't help, you can ask for help on the forum (https://discuss.redash.io).

Full CHANGELOG for this release: https://github.com/getredash/redash/blob/master/CHANGELOG.md
Continue with upgrade? (y/n): y
Downloading release tarball...
Unpacking to: redash.3.0.0.b3134...
Changing ownership to redash...
Linking .env file...
Installing new Python packages (if needed)...
Running migrations (if needed)...
Linking to current version...
Restarting...
Done! Enjoy.
$

画面上でもフッターのversionが”3.0.0“になったのを確認することができた。

以上。

■ 関連

DataSource Athena

cronログが出ていない

Ubuntu 14.04で表題の通りである。

■ 環境

  • Ubuntu 14.04

■ cron.log

下記が出力されているかと思いきや出力されていなかった。

/var/log/cron

どうやら初期設定ままでは出力されないようである。

/etc/rsyslog.d/50-default.conf

上記ファイルの”cron“がコメントアウトされているのでコメントインする。

cron.*    /var/log/cron.log

rsyslogを再起動する。

# service rsyslog restart

これでログが出力されるようになった。

ちなみにUbuntu 16.04では問題無い。

以上。

Amazon Time Sync Service

表題を使うように設定を変更する。re:inventで発表された表題を実際に使いたい。

■ 環境

  • Ubuntu 16.04
  • AWS EC2

■ chrony

現状では`ntpd`が動いているので止める。

$ ps -ef | grep ntp
ntp      19577     1  0 Sep22 ?        00:03:01 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 112:116
$
$ sudo systemctl stop ntp
$
$ ps -ef | grep ntp
$

`ntp`のパッケージ削除は後回しにするとして、`chrony`をインストールする。

$ sudo apt-cache search chrony
  :
chrony - Versatile implementation of the Network Time Protocol
  :
$
$ sudo apt-get install chrony

インストールしたら既に起動していた。

$ sudo systemctl status chrony
● chrony.service - LSB: Controls chronyd NTP time daemon
   Loaded: loaded (/etc/init.d/chrony; bad; vendor preset: enabled)
   Active: active (running) since Mon 2017-12-04 19:05:19 JST; 34s ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/chrony.service
           └─3038 /usr/sbin/chronyd

Dec 04 19:05:17 host001 systemd[1]: Starting LSB: Controls chronyd NTP time daemon...
Dec 04 19:05:17 host001 chronyd[3038]: chronyd version 2.1.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP -DEBUG +ASYNCDNS
Dec 04 19:05:17 host001 chronyd[3038]: Initial frequency 18.920 ppm
Dec 04 19:05:19 host001 chronyd[3038]: Source XXX.XXX.XXX.XX1 online
Dec 04 19:05:19 host001 chronyd[3038]: Source XXX.XXX.XXX.XX2 online
Dec 04 19:05:19 host001 chronyd[3038]: Source XXX.XXX.XXX.XX3 online
Dec 04 19:05:19 host001 chronyd[3038]: Source XXX.XXX.XXX.XX4 online
Dec 04 19:05:19 host001 chrony[3017]: chronyd is running and online.
Dec 04 19:05:19 host001 systemd[1]: Started LSB: Controls chronyd NTP time daemon.
Dec 04 19:05:23 host001 chronyd[3038]: Selected source XXX.XXX.XXX.XX4

接続先を確認する。

$ sudo chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ xxxxxxxxxxxxxxxxxxxx          2   6    77    92  +1700us[+1398us] +/-   31ms
^* ec2-XX-XX-X-XX.ap-northea     2   6   177    28  -1129us[-1423us] +/-   21ms
^- zzzzzzzzzzzz                  2   6   177    27   -363us[ -363us] +/-  162ms
^- aaaaaaaaaaaaaaa               2   6   177    27  -3461us[-3461us] +/-  106ms

ここで繋がった先が2つ目のようなのだが、EC2のどこかのIPのようである。これではちょいと問題がありそうなのでマニュアルを確認。

ネットワークタイムプロトコル (NTP) の構成
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/set-time.html#configure_ntp

日本語の方にはまだないようなので英語版で確認する。

Configuring the Amazon Time Sync Service
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html#configure-amazon-time-service

これを参考に、下記を`/etc/chrony/chrony.conf`に追記した。

server 169.254.169.123 prefer iburst

chronyを再起動し再度確認する。

$ sudo systemctl restart chrony
$
$ sudo chronyc sources
210 Number of sources = 5
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 169.254.169.123               3   7   377   126  +1540ns[+2000ns] +/- 1343us
^- ec2-XX-XX-X-XX.ap-northea     2   7   377   127   -336us[ -336us] +/-   19ms
^- aaaaaaaaaaaaaaaaaaaaaaaaa     2   7   377   127    -38us[  -38us] +/-   28ms
^- bbbbbbbbbbbbbbb               2   7   377   127   -245us[ -245us] +/-  113ms
^- ccccccccccccccccccccc         2   7   377    57  -2171us[-2171us] +/-   91ms
$

us“が”ns”に、”ms“が”us“になって凄く速くなったようだ。

これらの設定を他にもVPCで動いている各ホストにも入れ込むことにする。

ちなみにntpは後で削除しようと思っていたが、chronyをインストールする時に同時に削除されていた。

以上。

■ 関連

Chrony on Amazon Linux

apt-get upgradeできない

表題の通り。

■ 環境

  • Ubuntu 16.04

■ apt-get upgrade

とある環境で、下記のようなメッセージが出力された。

$ sudo apt-get upgrade
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
$

誰かが実行したのか?不明だが確認することに。

プロセスを確認したところ、過去に実行されたまま放置されているプロセスが存在した。

$ ps -ef | grep apt
root       654 31494  0 11:19 pts/1    00:00:00 grep --color=auto apt
root     23198     1  0 Nov15 ?        00:00:00 sudo apt-get upgrade -y
root     23199 23198  0 Nov15 ?        00:02:39 apt-get upgrade -y
$
$ sudo kill 23198
$

プロセスを`kill`し再度実行。

$ sudo apt-get upgrade
E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
$

出力されたメッセージの通り実行すると、過去の実行したまま入力待ちの状態であったようだ。

$ sudo dpkg --configure -a

最後に再度`upgrade`を実行する。

$ sudo apt-get upgrade

以上。

sudo: no tty present and no askpass program specified

表題のエラーが出ていたのでメモ。

■ 環境

  • Ubuntu 14.04, 16.04

■ sudo

`sudo`を使っている箇所で表題のメッセージが出力され、正しく値を取得できていないようであった。

sudo: no tty present and no askpass program specified

何かの作業のタイミングで”/etc/sudoers“が書き換わっていたのが原因のようであった。`sudo`を実行するユーザに権限がなくなってしまっていた。

$ sudo visudo

正しく編集し保存した。再度実行したところ、想定通りの結果を得られるようになった。

以上。