Azure File Storage の空き容量を監視する
タイトルに「空き容量」と書きましたが、正確には『使用量」ですね。メトリックが見えているのですぐできると思って調べてみたら意外と見あたらなかったので記録しておきます。先に結論を書いておくと、こんな感じになりそうです。
- 共有(Share)単位では出来ない。いま取得出来るメトリックはストレージアカウント単位のみ。
- Azure Monitor の Alerts から設定する。
- 容量のメトリックがAzure Monitorに送信されるのは1時間に1回。
共有をマウントするOSがある場合はそちらでcronなりタスクスケジューラーなりを回せば済むんでしょうね。
では、設定の手順です。ストレージアカウントと共有は作成済みの前提です。
Azure Monitor にアラートルールを追加する
「Azure Monitor --> Alerts --> New Alert Rule」と進んでアラートルールを追加します。
「+ Select target」から監視対象を追加するのですが、リソースタイプのプルダウンから「Storage Service」を選択すると、ストレージのサービス(blobやtable, file, queue)別に選択できます。
閾値の定義
続いて「+ Add criteria」から閾値を定義します。「File Capacity」が使用量です。他にも「File Share Count」というメトリックがあって同じストレージアカウント内にある共有数が取れるようなのですが、そこまで取れるならもうひと頑張りして共有単位のメトリックも欲しかったところです。
アラート発生条件の指定
選択すると条件の定義に移ります。一般的には「閾値を超えたら(例:使用量が500GBを超えたらアラート発報)」となるかと思いますので、プルダウンから「Greater than」「Maximum」「500000000000」のように指定します(最後の「500000000000」は単位が「bytes」なので)。
次に評価のタイミングですが、ドキュメントによると「容量メトリックの値は 1 時間ごとに Azure Monitor に送信され」ということなので、Periodに1時間以上(Over the last hour)を指定しましょう。それより短いとこのグラフみたいになるので、アラートが出たり引っ込んだりしてしまいます。
ということで、ひととおり設定し終えてこんな感じになりました。
残りはAzure Monitoのアラート設定なので割愛。アラートに名前を付けたりアクショングループを作ってメールの送信先を設定したりします。
実際のアラートが発生すると、通知方法をメールとした場合はこんな感じのメールが届きます。
これで無事に空き容量が監視できるようになりました。
GAしたQnA Makerをちょっと試してみた
build のタイミングでQnA MakerがGAしましたね。
簡単に試したのでTwitterのログをまとめておきます。
QnA Makerどう変わったかなと思ってログインしてみたらナレッジベースが空になっていて焦ったんですが、いったんプレビューポータルに押し込まれるんですね。https://t.co/MbYVxarGng
— haray (@haray_isa) 2018年5月8日
QnA Makerの作成時にSearchとWeb AppとApplication Insightsも作成するようになってますね。そしてSearchをFreeプランで作成しようとして「1個しかダメ」エラーになったのでBプランで進めてみる pic.twitter.com/bCes8p7uJC
— haray (@haray_isa) 2018年5月8日
そしていろいろなリソースがリソースグループ内にできると。Azureポータル内であれこれ見られるようになったのは嬉しいですね。 pic.twitter.com/jMlhAjtAXK
— haray (@haray_isa) 2018年5月8日
ん、作ったWeb Appにアクセスするとデフォルトページが出ちゃうので本番用にはちょっと何か考えた方がよさそうな感じが pic.twitter.com/y7JV7EsWuM
— haray (@haray_isa) 2018年5月8日
ちなみにPlanはS1 pic.twitter.com/J9k1JzcRP3
— haray (@haray_isa) 2018年5月8日
適当にFAQを取り込んでみる。UI変わりましたね pic.twitter.com/5FvVcAZQ2N
— haray (@haray_isa) 2018年5月8日
Markdownで書ける模様 pic.twitter.com/8QJw8e726E
— haray (@haray_isa) 2018年5月8日
QnAのリクエスト先のエンドポイントが作ったWeb Appのものになっている pic.twitter.com/gvFWReYMXp
— haray (@haray_isa) 2018年5月8日
プレビューからGA版への移行はこれ、KBはタブ区切りテキストでエクスポート→インポート、alternationはAPI経由で移行する、と。ちょっといろいろ手間な感…
— haray (@haray_isa) 2018年5月8日
How to import a knowledge base - Microsoft Cognitive Services - Azure | Microsoft Docshttps://t.co/7MT7f2i6De
QnA Maker APIのバージョンがv2.0からv4.0になってメソッドもいろいろと増えている様子 pic.twitter.com/gM0rG6APtY
— haray (@haray_isa) 2018年5月8日
Azure上のLinux VMにAzure AD認証でログインする
Linux VM用に「Azure AD login VM extension」というVM機能拡張が用意されたおかげで、Azure AD認証でログインできるようになりました。詳しくはこちらのドキュメントを。
対象のディストリビューションとバージョンはこんな感じ。
Distribution | Version |
---|---|
CentOS | CentOS 6.9 and CentOS 7.4 |
RedHat Enterprise Linux | RHEL 7 |
Ubuntu Server | Ubuntu 14.04 LTS, Ubuntu Server 16.04 and Ubuntu Server 17.10 |
準備
既にLinux VMがある場合はextensionを導入するだけです。実質1行。
az vm extension set \ --publisher Microsoft.Azure.ActiveDirectory.LinuxSSH \ --name AADLoginForLinux \ --resource-group [VMのリソースグループ名] \ --vm-name [VM名]
インストールが終わったら、VMに対してRBACの権限を割り当てます。
OSに対して管理者権限でログインしたい場合は「Virtual Machine Administrator Login」を、一般ユーザーの場合は「Virtual Machine User Login」を選びます。
VMにsshする
「-l」オプションを付けてsshでログインします。
ssh -l azureuser@contoso.onmicrosoft.com [VMのIPアドレス/FQDN] -p 22
URLとコードが表示されるので、URLをブラウザで開いてコードを入力しましょう。デバイスログインの仕組みですね。最近はCloud Shellばかり使っていたので久々に見ました。
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code [コード] to authenticate. Press ENTER when ready.
ここでコードを入力して、
ここまで来たらターミナルの方でEnterを押せばログイン完了です。無事にログインできました。
元のユーザー情報が消えたり制限されたりするわけではないので安心です。逆に制限したい場合は各自でケアするということですね。
Azure Database for MySQLのFirewallルールをAzure CLIから設定する
メモ代わりに。 Azure CLIからAzure Database for MySQLのFirewallルールを設定する方法です。
az mysql server firewall-rule create --resource-group <リソースグループ名> --server <サーバー名> --name AllowAzureIP --start-ip-address <開始IPアドレス> --end-ip-address <終了アドレス>
Azureサービスからのアクセスを許可したい場合はこれ(0.0.0.0)で良いようです。
az mysql server firewall-rule create --resource-group <リソースグループ名> --server <サーバー名> --name AllowAzureIP --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0
WAF & SSLのApplication GatewayをARM Templateでデプロイする
「ロードバランサーでSSLを終端してついでにWAFも」というご要望で登場するのがAzureのApplication Gatewayです。よくある構成なのでARM Templateにしておきました。プロビジョニングで20分、設定変更のつど分単位で待たされるので、効率よくやりたいですね。
テンプレートからのデプロイ方法は、お手軽なところでポータルかを使う手順をご紹介しておきます。
テンプレートデプロイ用のブレードを開く
「Create a Resource」から「Template deployment」で検索するか、以下のURLから直接開けます。開いたら「Create」ボタンを押して進んでください。
「Build your own template in the editor」をクリック
テンプレートを貼り付けて「Save」をクリック
パラメーターを適宜入力
- 「Backend Ip Address1」は実際にはFQDNも入れられます
- 「Cert Data」はサーバー証明書(.pfx)をBase64エンコードしたテキストを貼り付けてください
- 「Cert Password」はサーバー証明書(.pfx)のパスワードを入力してください
- 他のパラメーターは適宜
(参考)Base64への変換
$path="C:\Users\my\Documents\mycert.pfx"
[Convert]::ToBase64String([System.IO.File]::ReadAllBytes($path))
openssl base64 -in mycert.pfx -out mycert.pfx.txt
しばらくお待ちください
ドキュメントによると「プロビジョニングに最大 20 分かかります」とのことでしばらく待ちましょう。
▼Application Gateway のテンプレート(WAF & SSL)
▼HTTPからHTTPSへのリダイレクトはテンプレートに入れてないので、設定したい場合はこちらのPowerShellをどうぞ
Azure Database for PostgreSQLでCollation(照合順序)を指定してCREATE DATABASEしたい
というお困り状態を見かけたので。
これまで使っていたCREATE DATABASEをAzureのPostgreSQLに発行すると「ERROR: invalid locale name: "ja_JP.utf8"」となってしまう場合があるようです。
postgres=> CREATE DATABASE my_new_database ENCODING='UTF8' LC_COLLATE='ja_JP.utf8' LC_CTYPE='ja_JP.utf8'; ERROR: invalid locale name: "ja_JP.utf8"
これはPostgreSQLがWindows上で動いているのが原因のようで、エンコーディングを「UTF8」とする場合、COLLATIONの日本語ロケールは「Japanese_Japan.932」を指定すると良いようです。
ロケール(国際化と地域化) | Let's Postgres
Windows で UTF8 エンコーディングを使う場合のみ、ロケールのエンコーディングにコードページ 932 (SJIS) を使うことができます。これは Windows の C ライブラリが UTF8 でのロケール処理をサポートしていないためで、PostgreSQL 側で専用の対応を行っています。
だそうです。SQLで書くとこんな感じです。
postgres=> CREATE DATABASE my_new_database ENCODING='UTF8' LC_COLLATE='Japanese_Japan.932' LC_CTYPE='Japanese_Japan.932' TEMPLATE='template0';
ちなみに、ロケールを指定しない場合のデフォルトは「English_United States.1252」となってました。
せっかくなので、Azure Database for PostgreSQL 上でいくつかの照合順序を指定して、実際にどのような並びになるのか簡単に試してみました。
Japanese_Japan.932 | English_United States.1252 | C |
---|---|---|
う | う | う |
ヴ | ヴ | う゛ |
う゛ | う゛ | は |
ハ | ハ | ば |
は | は | ぱ |
バ | バ | ハ |
ば | ば | バ |
パ | パ | パ |
ぱ | ぱ | ヴ |
#これだけ見るとデフォルト(English_United States.1252)でいいんじゃ?って気にならなくもない。