この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは!DA(データアナリティクス)事業本部 インテグレーション部の大高です。
SnowflakeのPython Connectorを試していた際に、接続診断ツールとして「SnowCD」というツールがあることを知りました。今回はこの「SnowCD」を早速使ってみたいと思います。
前提
OSはUbuntuの18.04
を利用しています。(WindowsのWSLです)
「SnowCD」とは?
SnowCD(Snowflake Connectivity Diagnostic Tool)は、その名の通りSnowflake用の接続診断ツールで、Snowflakeへの接続診断やトラブルシューティングに利用できるツール、とのことです。
SYSTEM$WHITELIST または SYSTEM$WHITELIST_PRIVATELINK を実行する
ウェブインターフェースからSYSTEM$WHITELIST
を実行してホワイトリストを取得します。なお、「AWS PrivateLink」または「Azure Private Link」を利用している場合にはSYSTEM$WHITELIST_PRIVATELINK
を実行します。
SELECT SYSTEM$WHITELIST();
実行結果をクリックすると詳細ダイアログが表示されるので、「COPY」をクリックしてクリップボードにコピーします。
コピーした結果は、以下のように「whitelist.json」として保存します。なお、文字コードは「UTF-8」で保存しました。
whitelist.json
[{"type":"SNOWFLAKE_DEPLOYMENT","host":"xxx.snowflakecomputing.com","port":443},{"type":"OCSP_RESPONDER","host":"ocsp.xxx.amazontrust.com","port":80}]
また、結果を一覧形式で見たい場合には、下記のクエリで確認可能です。
select value:type as type,
value:host as host,
value:port as port
from table(flatten(input => parse_json(system$whitelist())));
「SnowCD」をインストールする
ダウンロードとインストールをドキュメントに沿って行います。
今回はLinuxなので、Linux用のファイルをドキュメント内のリンクからダウンロードします。また、Debian系のUbuntu
を利用しているので、*.deb
ファイルをダウンロードしました。Redhat
系の場合は*.rpm
が良いかと思います。
# ダウンロード
$ curl -O https://sfc-repo.snowflakecomputing.com/snowcd/linux/latest/snowflake-snowcd-1.0.2.x86_64.deb
# aptでインストール
$ sudo apt install ./snowflake-snowcd-1.0.2.x86_64.deb
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'snowflake-snowcd' instead of './snowflake-snowcd-1.0.2.x86_64.deb'
The following NEW packages will be installed:
snowflake-snowcd
0 upgraded, 1 newly installed, 0 to remove and 156 not upgraded.
After this operation, 10.0 MB of additional disk space will be used.
Get:1 /home/ubuntu/snowcd/snowflake-snowcd-1.0.2.x86_64.deb snowflake-snowcd amd64 1.0.2 [5003 kB]
Selecting previously unselected package snowflake-snowcd.
(Reading database ... 38364 files and directories currently installed.)
Preparing to unpack .../snowflake-snowcd-1.0.2.x86_64.deb ...
Unpacking snowflake-snowcd (1.0.2) ...
Setting up snowflake-snowcd (1.0.2) ...
# バージョン確認
$ snowcd --version
snowcd version 1.0.2
簡単ですね。なお、この場合パッケージはsnowflake-snowcd
としてインストールされるので、アンインストール時には以下のようにアンインストールすることになります。
$ sudo apt remove snowflake-snowcd
「SnowCD」を実行する
では、さっそく先程用意したwhitelist.json
を使って試してみましょう。
$ snowcd whitelist.json
Performing 33 checks for 13 hosts
All checks passed
問題ないようですね。なお、詳細なオプションは以下のようです。
$ snowcd --help
The Snowflake Connectivity Diagnostic tool to diagnose network connectivity issue.
Usage:
snowcd <path to input json file> [flags]
Examples:
snowcd test.json
Flags:
-h, --help help for snowcd
--logLevel string log level (panic, fatal[default], error, warning, info, debug, trace) (default "fatal")
--logPath string Output directory for log. When not specified, no log is generated
--printCertificates print certificates for the whitelist, no checks are perform. Remember to specify proxy if you use it during check. (default false)
--proxyHost string host for http proxy. (When not specified, does not use proxy at all
--proxyIsHTTPS Is connection to proxy secure, i.e. https. (default false)
--proxyPassword string password for http proxy.(default empty)
--proxyPort int port for http proxy.(default 8080) (default 8080)
--proxyUser string user name for http proxy.(default empty)
-t, --timeout int timeout for each hostname's checks in seconds (default 5) (default 5)
--version version for snowcd
試しに、以下のように詳細ログを出力してみます。ログレベルとログファイルパスを指定して、ファイルにログを出力します。
$ snowcd whitelist.json --logLevel=trace --logPath=./snowcd.log
Performing 33 checks for 13 hosts
All checks passed
すると、こんな感じでログが出力されました。
time="2020-03-31T09:57:17+09:00" level=trace msg="ip addresses: [{xx.xxx.x.x }]" CheckType="DNS Check" Host=xxx.s3.amazonaws.com Port=443 Type=STAGE
(略)
time="2020-03-31T09:57:20+09:00" level=info msg="Check clear. No error presented." CheckType="HTTP checker" Host=xxx.s3.us-west-2.amazonaws.com Port=443 Type=SNOWSQL_REPO
なにか問題があった場合には、このようなログから原因解析が進められそうですね。
まとめ
以上、Snowflakeの接続診断ツール「SnowCD」の紹介でした。 Snowflakeへの接続に問題があった場合には、こちらのツールなどを活用して原因分析に役立てればと思います。
どなたかのお役に立てば幸いです。それでは!