コンテンツへスキップ

'tmdatasourceregistry.cpp', line 847, function

Microsoft Power BIの試行を行っています。
少し致命的な障害が起きているので共有です。
1週間前より、海外のユーザーはPower BIのコミュニティで議論を開始しており、多くの人が困っている状態のようです。

私自身も、Power BIのGateway(ゲートウェイ)を利用する為に、常時接続のWindowsマシンを導入したこともあり、非常に残念。

https://community.powerbi.com/t5/Service/Error-message-on-refresh-An-unexpected-error-occurred-file/td-p/1915594

現象

WEB版のPower BIサービスからのデーターリフレッシュでエラーが生じています。
複数のデーターソースを扱っており、ODBC経由のデーター取得で失敗しているように見えています。

ローカル環境でのデーター更新は可能であり、ローカル環境で更新したデーターやレポートの、Power BIサービスへの発行は可能です。

Power BIサービスからのログなど

メッセージ:

データセット内のデータの処理中にエラーが発生しました。

処理エラー:

An unexpected error occurred (file 'tmdatasourceregistry.cpp', line 847, function 'TMDataSourceRegistry::ApplyDeferredStaticAnalysis').

クラスターURI:

WABI-JAPAN-EAST-redirect.analysis.windows.net

対処方法

Microsoft Power BI側の不具合であり、不具合修正を待つ。
それにしても、データーダッシュボードで致命的な状態。
1週間前から状況が続いているのは、、、

メール送信サーバー(Postfix)

以前は、自由に構築できたメールサーバー。確かに、個人サーバーが踏み台にされるケースも多く、現在、多くの人は、プロバイダーのSMTPサーバーを利用したメールサーバーを運用していると思います。

今回は、自宅LAN内の、プログラムや各種ツールからのメールを、普段利用しているメールアドアレスで受信できるように、メールの中継を行います。中継した先は、GoogleのSMTPサーバーを利用します。

(LAN内の環境)→(今回のメール送信サーバー、Postfix)→GoogleのSMTPサーバー

また、Docker内のコンテナは、通常のプライベートLANとは異なるネットワークで動いているので、Docker環境のコンテナからのメールも中継出来るように設定します。

Pstfixのインストール

sudo apt install postfix sasl2-bin bsd-mailx

postfixのインストールを行います。インストール時にメールサーバの構成方法を設定するダイアログが表示されます。

スマートホスト付きインターネットを選択します。
リレー先となるGmailのSMTPサーバーは、 [smtp.gmail.com]:587 となります。

Postfixインストール後の設定 Gmailへの転送設定(ユーザー、パスワード)

新規でsasl_passwdファイルを作成します。
この際の、Gmailアカウントのパスワードは、Goolgeのアカウント設定画面から、Google へのログインのアプリ向けのアプリパスワードを取得します。
https://myaccount.google.com/security分からない方は、「Google アプリ パスワード」で検索すると関連する情報が沢山出てくると思います。

sasl_passwdファイルに、メールの送信経路となる情報を設定します。

vi /etc/postfix/sasl_passwd
#ファイルに記載する内容
[smtp.gmail.com]:587 user@gmail.com:≪取得したGoogle アプリ パスワード≫

作成したファイルのアクセス権を変更。

chmod 0600 /etc/postfix/sasl_passwd

postmapで、メールの送信経路を有効化します。

postmap /etc/postfix/sasl_passwd

Postfix main.cfファイル更新

/etc/postfix/main.cf を用いて、環境に合わせた設定を行います。

  1. smtp_tls_security_level = may を encryptに変更します
  2. relayhost に gmailのsmtpサーバーを設定します
  3. ファイルの最後に、smtp_sasl関係の設定を追加します。
  4. 必要に応じて、mynetworksにローカルLANのIPを追加します
    例:192.168.0.0./24 など
smtp_tls_security_level = encrypt

relayhost = [smtp.gmail.com]:587

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options = noanonymous

main.cf変更後は、postfixを再起動します。

systemctl restart postfix

postfix main.cfにdockerコンテナのIPを追加

main.cfのmynetworksにdockerコンテナのIPを追加します。
mynetworksに、172.18.0.Xを追加しました。172.18.0.0/16などでも動作しました。

docker psでコンテナID(CONTAINER ID)を取得し、docker exec -it {コンテナID} /bin/bashで、コンテナの中に入ります。コンテナ内で、hostname -iを実行しコンテナの利用するIPアドレスが確認出来ます。

ifconfig -aでもdockerが利用しているネットワークを確認できると思います。

main.cf変更後は、postfixを再起動します。

systemctl restart postfix

relay access deniedへの対応

docker環境からのメール送信に苦戦しました。メールが送れない際は、/var/log/mail.logを確認して、エラー内容を見ると原因が分かり、対応方法が見つかります。
私は、Dockerコンテナの利用するIP(自動的に割り振られる)の記載があり、メールのリレーが拒否されていました。