情シスは何度でも甦るさ。

VBA!VBA!

会社のiPhoneの通信量が激増して○○○万円追加請求された話

「え、なんでこんな請求高なってんの!?」

部長のその叫びから始まったこの事件。

うちの会社では、店頭用にiPhoneを数百台規模で使っている。

契約上、通信量の上限が決まっており、その上限を超えると追加料金がかかる。

で、先月の通信量が、上限の倍ほど使い込んでて、○○○万くらいの追加料金がかかってしまった。

このままじゃ、毎月毎月莫大な経費かかるから、至急対策せよ!

ということで、白羽の矢が立つ。

とりあえず、MDMの設定で以下の対策を打つ。

  • 店頭のiPhoneから、動画サービスへの通信を停止。
  • 個別に見て通信量が激しい店舗の検索系サービスへの通信を停止。

いわゆる、店頭のスタッフが遊んでんじゃねーかという対策。

ただ、どう考えても全ての店舗がそんなに遊びに使っているとは考えにくい。

そこで、ヘルプデスク担当者が問い合わせ時に使用するiPhoneの通信量を調べてみることに。

Akamai!!貴様なぜそんなことを

「会社休みの日に80MBの通信量て!?」

ある端末の日曜日の通信量が、多いのである。もちろん担当者は出社してない。

つまり、iPhoneがスリープしている間に、80MBとかの通信をしていることが判明したのである。

さらに、その通信をうちのネットワークのログでもって調査(弊社の店頭用iPhoneは閉域網を経由して社内N/Wからインターネットに接続される)すると、いくつかの特定のIPアドレス先に通信量が多いことが判明した。

そこで、そのIPアドレスに全体でどれだけの通信を行っているかを調べると、あるIPアドレスhttpsの通信を 月間455GBもしてることがわかった。

IP: 23.35.196.166

どこのサーバーやねんと調べると、

IP address : 23.35.196.166
Hostnamea : 23-35-196-166.deploy.static.akamaitechnologies.com
Country : United States (US) (99% confidence)
Continent : North America (NA)
Time zone : America/Chicago

AKAMAIさん!」

アメリカのAkamaiのサーバに、iOSが何らかの通信を行っている。ただ、その内容は全く謎。

念の為に、でかいアプリでも配信してしまったかと思って調べたが、iOSへのアプリの配信は、http(80)の通信みたいで、それも該当しない。

一体、これは何の通信なんや。

この時点で、この問題が簡単ではないことを覚悟し、まずはキャリアへ連絡。

「うーん、該当のiPhoneを送ってください。検証してみます」

とのことで、iPhoneと業務用アプリで使用するバーコードリーダーアクセサリーをセットで送る。

数日後、回答があり、

「このiPhoneの外部アクセサリーを付けた場合のみ、発生するので、うち関係ありません」

まじかよ!!

いやいや、iOSのバグかもしんないから、もうちょっと調べてよと言うも、「iOSはうちの保守範囲ではないんで」ということで、キャリアには、逃げられる。

社内で検証する

自社で通信テストを本格的に実施。

  • 外部アクセサリー付ける/付けない
  • 業務アプリあり/なし
  • キャリア専用の閉域サービスあり/なし

ということで、10台ほどのiPhoneを並べて、通信テスト。

で、結果としては、

「キャリアの言うこと、あってる!」

なぜか、外部アクセサリーを付けた端末がスリープに入った時に大量の通信を発生させている。

というわけで、外部アクセサリーの製造メーカーへ問い合わせ。

「え、でも、うち、普通にAppleの認証取ってますし、Appleフレームワーク(External Accessory Framework)に則ってiOSと接続してるだけですよ・・・」

でしょうね!

一応、認証取ってるか確認したけど、ちゃんと取ってた。当たり前か。

該当のアクセサリは、物流系や小売系の大企業にも何千台と導入されているので、アクセサリ側が悪いわけじゃなさそう。

というわけで、自社での検証のログを解析を続けると、ある法則が。

iOS11.4のバグ!?

iOSバージョンが11.4の時だけ発生しません、これ?

いろんな組み合わせでやってみたが、iOS11.4でしか発生しない。謎の通信が発生していた端末のiOS上げると収まる。

絶対iOSのバグだろこれ。と思いきやApple様には逆らえないので、別件の対応もあり、iPhoneを回収して、iOSのバージョンアップを実施。

徐々に通信量は下がっていき、無事上限を下回り、原因は謎のまま事件は収束したのであった。

追記:

今回の件で、気になったのは、2019年3月のある日を起点にして、全体の通信量が爆発的に増加しており、そのタイミングまでは、iOS11.4でも通信量は落ち着いていたこと。

なので、iOSではなく、そのタイミングで、Appleのサーバ側で、何らかの変更があったのではないかと考えるのだが、原因は謎。

もしかして、バージョンアップしない輩へのApple様からの天罰なのか。いや、言うても1つ前のバージョンでっせ。

原因がわからないから、また再発しないか心配でござる。

ニフクラ(旧ニフティクラウド)を使ってみた

ある案件で、ニフクラ(旧ニフティクラウド)を導入した話。

ニフクラとは

なお、親会社富士通本体のクラウドサービスは、結構散々で、自社サービスK5は、サービス撤退(リブランディングのようだが中身は別物)。当てにしていたOracleには裏切られるという感じ。

なぜ導入したの?

クラウドに移行するぜという選択肢に、まず入ってこなさそうなニフクラですが、以下のたった一つの理由で導入が決定

既存のデータセンターから、 ちょろっとした申請だけで、 L2レベルでの拡張(延伸)が できる

今は外部のデータセンター(富士通系列)使ってるんですが、クラウド移行前に、小粒のサービスを2つほどリプレースする必要があり、今更サーバーとか買いたくねえ。という悩みを持っていたけど、これで導入が即決。

いや、これは実際便利だった。ネットワークとかほとんど触らなかったし。

メガクラウドとの違い

比較するのは可哀想だが、一言でいうと、「各サービスの制約が強いのに価格が割高」。

そりゃ、規模が違うから価格で敵わんわなぁ。という感じ。
じゃ、なんで選ばれるんだろ?
うーん。メガクラウドほどの機能はいらんけど、今どきレンタルサーバーもなぁ。という層にリーチしているのだろうか。

使うところでとにかく一番致命的だなと思ったのは、
「バックアップ系のサービスを使う際に増設ディスクが100GBまでしかサポートしてない」 という点。

補足すると、Windowsだとシステム領域として、Cドライブに80GBが漏れなくついてくる(Linux系 OS:30GB)んだが、これは拡張不可。 で、DBなんか立てようとすると、Eドライブとか新たに切ると思うのですが、これがここでいう増設ディスク。

「カスタマイズイメージ/イメージ配布」 というサーバーのイメージ(要はAMI)を保存するサービスがあるが、これも増設ディスク100GBまで
「サーバーコピー」というサーバーをコピーして、新たなサーバーを複製する機能があるが、これも増設ディスク100GBまで
「バックアップ」という定期バックアップの仕組みがあり、これはさすがに100GB以上使える。ということで、調べてみたら「1.1TB」まで。

ストレージ周りが弱いってのは、営業の人も言ってました。

EBS、S3という盤石のストレージサービスと比較されるのも、辛いだろうけども、和製クラウドとして、頑張っていただきたいです。

"Excelにさよなら"社内のIT資産管理ツールにSnipe-ITを導入した

f:id:ryoben:20190315140948p:plain
Snipe-IT

Excelへの憎しみを生む業務「機器管理」

情シスの仕事のうち、大事だけどくそ面倒臭い仕事のうちの一つ

機器管理

誰がどのPCを使っているのか。 それだけを管理したい。 そこで、まず最初に何を使うって、そらExcelですよね。

ただ、この機器管理の対象は昨今どんどん増えていく状況にあります。
PC、社内携帯(スマホ)、タブレットウェアラブルバイススマートスピーカーなどなど

で、最初はそれでいいんですが、運用を続けていくと、

社員の退職、入社
端末故障による交換
紛失
イベントなどで一時的な用途による貸し出し

なんかの出入りが発生していきますよね。

しかも、携帯電話なんかだと、退職による返却があった後、それをすぐに違う人に払い出すと前の人宛の電話がバンバンかかってきたりして、一定期間寝かす。などの細かい運用が求められます。

だが、しかし、Excelで管理できるのは、 のみ

履歴をExcelで管理しようとするとすぐに限界が来ます。

社内で一人だけがそのExcelを管理しておけば、その人の記憶を頼りに運用が回ることもありますが、複数人で管理したり、管理者が変わったりした時に必ず混乱に陥ります。

じゃぁ、履歴管理もできるツール入れようぜ。

ということで、色々探した挙げ句にたどり着いたのが、今回導入したSnipe-ITです。

Snipe-ITの概要

Say Goobye To Spreadsheets! という謳い文句の通り、今回の要件にビタッっと適合するOSSのツールです。

SaaS型のサービスとしても提供されており、また、OSSなのでソースコードも公開されています。
なので、導入の仕方としては、以下3パターン

No 導入方法 向いてる人 費用
1 (自社やクラウドに)サーバ立ててインストールする 安いのは正義 0 or 1200円/月(AWSでEC2の最安サーバ)
2 SaaSサービスを契約 スキルないけど金はあるしすぐ使いたいんや 4500円/月($39.99)
3 AWSマーケットプレイスでインストール済みイメージ買ってAWSで運用 折衷案 2000円/月(AWS EC2+イメージ使用料)

うちは、導入時に時間があんましなかったので、3番を採用しました。

で、実際使ってみてわかった機能的な部分を紹介します。

Snipe-ITの機能

管理対象

よくあるPCや携帯だけでなく、色んなタイプの機器が管理できるようになっています。

  • 資産(Asset):機器端末 例:PC、携帯
  • 付属品(Accessory):複数台管理していて、Userに1つづつ在庫を割り当てれる 例:マウスやキーボード
  • ライセンス(License):ソフトウェアなどのライセンスの期限管理ができる 例:Office系ソフトやAdobeのソフトなど
  • 消耗品(Consumable):割り当てる度に在庫数が減っていく(在庫管理ができる) 例:紙やインク
  • 構成部品(Component):Userに複数数量を一度に割り当てれる 例:PCのメモリ
  • 人物(User):人や部署。これに対して上記5種類の資産を割り当てることができる

うちが実際使ってるのは、人と資産(Assets)しか使ってません。ライセンスは今後使う予定

履歴管理

  • この機器が誰に使われてきたのかの履歴
  • このユーザーがどの機器を使ってきたのかの履歴

の2方向からの履歴が見れます
また、機器自体にも、修理などのメンテナンスの履歴を登録して別途管理することができます。

カスタムフィールド

こういうWebの管理システムでは当たり前のカスタムフィールドを自由に追加できます。 ただ、注意点なのは、ユーザーに対してカスタムフィールドを追加できません。 資産側にのみ、追加可能です。

何が困るかというと、
今回外部に貸し出している機器については、月でまとめてレンタル料を請求するという業務があるのですが、機器を割り当てている課金対象のユーザーを抜いてそのデータを作りたい。
でも、ユーザー側にはカスタムフィールドが追加できないので、機器側に課金するという項目を追加し、そのフラグを立てた機器をユーザーに割り当てる。
ということをしなくてはならず、ちょっと不便。

機器のステータス管理

デフォルトのステータスの他に自由にステータスを追加できます。
作成したステータスごとに、機器を割り当てできるか/できないかの設定もできます。(紛失 のステータスなら割り当てできないとか)

ユーザー管理

細かい権限管理が可能です。閲覧しかできないユーザーも作成可能です。
なお、機器を割り当てるユーザーに対してログインを許可するかの設定を行う感じなので、実際の社員(機器の利用者)と、システムの利用者が同じユーザーとして管理されます。

レポート(CSV出力)機能

条件を指定して、CSVでデータを抜くのはできます。 ただ、標準の項目のうち、一部にしか条件を指定できません。なので、カスタムフィールドに対しても条件が指定できないため、不便で。
また、よく使う条件を保存する機能もないため、そこもちょっと不便。
検索条件の保存機能は、2017年12月にgithubに要望が上がっているが、まだ実装されてません。
あと、文字コードUTF-8なのでエクセルで開いたら日本語が盛大に文字化けします。これはどっちかってーとエクセル側で読めるようにそろそろなんとかして欲しい。

インポート機能

CSVのインポート機能があるので、Excelからの移行などは、簡単ちん。
ただ、項目の説明が公式サイトでもわかりにくいため、トライ&エラーで仕様を把握するのに最初は苦労した。

API

RESTのAPIがあります。でも、使ってないから、利便性はよくわかん。
標準のCSV出力機能が不便なので検索系のAPIが無いかを見たけど、無さ気。

注意点

SaaSクラウドで使う際の注意点

ユーザーごとにタイムゾーンを設定できません。
なので、SaaSクラウドの際は、UTCで時間が表示されてしまいます。 実際機器管理で時間まで厳密に管理しないのでそこまで業務には影響ないですが、払い出した日がいつかとか調べる時に読み替えが必要になったりするので微妙です。

日本語

日本語の翻訳がじゃっかんクソです。わからなくもないけど、初見で意味がわからない部分があります。 例えば、管理対象についても

資産 :Asset
付属品 :Accesary
ライセンス : License
消耗品 :Consumable
構成部品 :Component
人物 :User

と翻訳されてますが、このシステムの根幹をなすオブジェクトに対してこんな感じで訳されると色んな画面で表示された際に意味がわかりにくい。
いっそのこと、英語をそのままカタカナにした方が、スッと入ってくる気がしてます。
あと、表記の揺れもあったりします。
外部の翻訳サービスの「crowdin.com」を使って翻訳しており、そこに対して修正案を投げることもできるので、投げてみたりもしましたが、反映されるのいつやねんって感じです。
自分でサーバ立ててる場合は、日本語ファイルを直接触って変更することも可能です。
うちの場合は、バージョンアップとかした際にそこらへんの移行も面倒なので現状は我慢して使っています。

マニュアルの情報量が少ない

インポート機能のところでも書きましたが、公式マニュアル(英語)の情報量が少なくトライ&エラーで調べながら機能を理解する必要があります。
インポートの機能を調べる際は、最終的にphpのソースを読むとこまでいきました。

総合評価

おおむねExcelに比べれば200%まし。機能的にもコスパ的にも満足です。
ただ、サポートがちょっとね。という感じなので私みたいに、Excelへの怒りゲージがMAXになった際にその怒りパワーで初期導入を乗り切って貰えれば良いかと思います。