SlideShare a Scribd company logo
1 of 13
Azure Logic Appsを使って
入退室管理をしてみる
- JAZUG 6周年総会 LT -
yoshimasa.katakura
自己紹介
Copyright© 2016, Y.Katakura All Rights Reserved.
2
片倉 義昌(かたくら よしまさ)
株式会社pnop 在籍
Azureコンサルティング、導入支援してます
元インフラエンジニア
元Linuxエンジニア
元Cプログラマ
yoshimasa.katakura
Logic Appsが7月末にGAしたの
で今更使ってみた。
Copyright© 2016, Y.Katakura All Rights Reserved.
3
ソーシャル
Azure
オンプレ機器(北品川事務所)
いるもの
Copyright© 2016, Y.Katakura All Rights Reserved.
4
• YAMAHA RTX1210 – 普通のルーター
• YAMAHA WLX202 – ちょっといい無線LAN AP
• Raspberry Pi 2 Model B – Syslogサーバ
• Logic Apps – 色々とよろしくやってくれる仕組みを提供
• Service Bus – オンプレからのメッセージやりとり用
• SQL Database – 入退室の元情報(MACアドレス)を管理
• Slack – 社内ソーシャルに入退室情報を通知
Azure
ながれ
Copyright© 2016, Y.Katakura All Rights Reserved.
5
オンプレ機器
(北品川事務所)
ソーシャル
事務所への入退
室(Wi-fi接続)があ
ると、Service
Busに通知
Logic Appsが
Service Busから
定期的にメッ
セージ取得
SQL DBから接続
端末のMACアド
レスをキーにし
てメッセージテ
キストを取得
メッセージテキ
ストをSlackの該
当チャンネルに
送信
Syslog設定
Copyright© 2016, Y.Katakura All Rights Reserved.
6
raspbian標準のSyslogデーモンである
「syslog-ng」を利用
config設定は右の感じ
【 /etc/syslog-ng/syslog-ng.conf 】
source s_wlx {
udp(port(514));
};
destination d_wlx {
program("python -u /root/wifilog.py" flush_lines(1) flags(no_multi_line));
};
filter f_wlx {
host(192.168.245.XX) and (message(<0105>) or message(<0112>));
};
log {
source(s_wlx);
filter(f_wlx);
destination(d_wlx);
};
簡単にいうと
「無線LAN APから来たsyslogで「<0105>」「<0112>」が含まれていたらPythonコードを実行しなさい」
ということです。
Python側の設定とスクリプト準備
Copyright© 2016, Y.Katakura All Rights Reserved.
7
Pythonは事前にpipでAzure SDKをインストールしておく
# pip install azure
#
これで、Azure SDKがPythonから利用可能になります。
Azure Service Busも以下の感じで使えます。
# 事前準備
from azure.servicebus import ServiceBusService, Message, Queue
# Service Busの利用宣言
bus_service = ServiceBusService(
service_namespace=‘XXXXXXXX',
shared_access_key_name='user',
shared_access_key_value=‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
# Service Busにメッセージ送信
bus_service.send_queue_message('syslog', msg)
一応ソースを貼っておく
Copyright© 2016, Y.Katakura All Rights Reserved.
8
# -*- coding: utf-8 -*-
import fileinput
import sys
import re
import json
from azure.servicebus import ServiceBusService, Message, Queue
bus_service = ServiceBusService(
service_namespace=‘XXXXXXXX',
shared_access_key_name='user',
shared_access_key_value=‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
while True:
line = sys.stdin.readline()
if line == '':
break
tokens = map(str, line.strip().split())
if len(tokens) < 10: # Illogal Data
continue
if tokens[6] == 'STA':
action = 1
macaddr = tokens[7]
if tokens[7] == 'DEAUTH':
action = 0
macaddr = tokens[10]
if macaddr[0] == '(':
macaddr = macaddr[1:18]
else:
macaddr = '00:00:00:00:00:00'
msg = Message(json.dumps({'macaddr': macaddr, 'action': action,
'time': tokens[2]}))
bus_service.send_queue_message('syslog', msg)
syslog-ngから標準入力で受けた
ログの行を解析して、接続/切
断フラグと、クライアント端末
のMACアドレスをJSON形式で
Azure Service Busのキューに送
信する感じの処理
LogicAppsはこんな感じ
Copyright© 2016, Y.Katakura All Rights Reserved.
9
Service Busキューからイベ
ント取得
SQL DBからMACアドレス
をキーとしてレコード取得
条件分岐
アクション種別によって
Slackに送るメッセージを変
える
SQL DBから取得した
メッセージテキストを
Slackに送る
行ID(検索条件):
@{json(string(decodeBase64
(triggerBody().ContentData))).macaddr}
条件式:
@equals(json(string(decodeBase64
(triggerBody().ContentData))).action, 1)
SQL DBのテーブル定義はこんな感じ
Copyright© 2016, Y.Katakura All Rights Reserved.
10
携帯端末固有のMACアドレス毎に入室と退室メッセー
ジを設定している
動かしてみましょう
Copyright© 2016, Y.Katakura All Rights Reserved.
11
まとめ
Copyright© 2015, @yuiashikaga All Rights Reserved.
12
複雑な分岐やエラー処理などを行わなければ、ポータル画面のデザー
ナーでマウスポチポチしてロジックの定義は可能
→今回のケースでは全てデザイナ画面だけでAzure側は作成
なるべくLogic Appsで処理をさせる前段でフィルタを行い、課金を抑
える
→Syslogの設定やPythonスクリプト内の処理で必要なイベントのみ送信する
今回初めてPythonでコーディングをしたけど中々面白かった
→先日のWindows 10 Anniversary UpdateでUbuntuが動くようになったので色々捗り
そう
ご静聴ありがとうございました
Copyright© 2016, Y.Katakura All Rights Reserved.
13

More Related Content

What's hot

初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜Tanaka Yuichi
 
Apache NiFiと 他プロダクトのつなぎ方
Apache NiFiと他プロダクトのつなぎ方Apache NiFiと他プロダクトのつなぎ方
Apache NiFiと 他プロダクトのつなぎ方Sotaro Kimura
 
今更聞けないストリーム処理のあれとかこれ
今更聞けないストリーム処理のあれとかこれ今更聞けないストリーム処理のあれとかこれ
今更聞けないストリーム処理のあれとかこれTatsuro Hisamori
 
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」Kazuki Taniguchi
 
Norikra + Fluentd + Elasticsearch + Kibana リアルタイムストリーミング処理 ログ集計による異常検知
Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知
Norikra + Fluentd + Elasticsearch + Kibana リアルタイムストリーミング処理 ログ集計による異常検知daisuke-a-matsui
 
Strem処理(Spark Streaming + Kinesis)とOffline処理(Hive)の統合
Strem処理(Spark Streaming + Kinesis)とOffline処理(Hive)の統合Strem処理(Spark Streaming + Kinesis)とOffline処理(Hive)の統合
Strem処理(Spark Streaming + Kinesis)とOffline処理(Hive)の統合SmartNews, Inc.
 
Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析Tanaka Yuichi
 
Watson summit 2016_j2_5
Watson summit 2016_j2_5Watson summit 2016_j2_5
Watson summit 2016_j2_5Tanaka Yuichi
 
本当にあったApache Spark障害の話
本当にあったApache Spark障害の話本当にあったApache Spark障害の話
本当にあったApache Spark障害の話x1 ichi
 
PySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphPySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphOshitari_kochi
 
dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料s. kaijima
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境yuichi_komatsu
 
Sparkでレコメンドエンジンを作ってみた
Sparkでレコメンドエンジンを作ってみたSparkでレコメンドエンジンを作ってみた
Sparkでレコメンドエンジンを作ってみたfujita_s
 
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014鉄平 土佐
 
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめBigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめTanaka Yuichi
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのsparkRyuji Tamagawa
 
2015 10 24_spark_osc15tk
2015 10 24_spark_osc15tk2015 10 24_spark_osc15tk
2015 10 24_spark_osc15tkJunichi Noda
 
20190517 Spark+AI Summit2019最新レポート
20190517 Spark+AI Summit2019最新レポート20190517 Spark+AI Summit2019最新レポート
20190517 Spark+AI Summit2019最新レポートRyoma Nagata
 
16.02.08_Hadoop Conferece Japan 2016_データサイエンスにおける一次可視化からのSpark on Elasticsear...
16.02.08_Hadoop Conferece Japan 2016_データサイエンスにおける一次可視化からのSpark on Elasticsear...16.02.08_Hadoop Conferece Japan 2016_データサイエンスにおける一次可視化からのSpark on Elasticsear...
16.02.08_Hadoop Conferece Japan 2016_データサイエンスにおける一次可視化からのSpark on Elasticsear...LINE Corp.
 

What's hot (20)

初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
初めてのSpark streaming 〜kafka+sparkstreamingの紹介〜
 
Apache NiFiと 他プロダクトのつなぎ方
Apache NiFiと他プロダクトのつなぎ方Apache NiFiと他プロダクトのつなぎ方
Apache NiFiと 他プロダクトのつなぎ方
 
今更聞けないストリーム処理のあれとかこれ
今更聞けないストリーム処理のあれとかこれ今更聞けないストリーム処理のあれとかこれ
今更聞けないストリーム処理のあれとかこれ
 
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
 
Norikra + Fluentd + Elasticsearch + Kibana リアルタイムストリーミング処理 ログ集計による異常検知
Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知
Norikra + Fluentd + Elasticsearch + Kibana リアルタイムストリーミング処理 ログ集計による異常検知
 
Strem処理(Spark Streaming + Kinesis)とOffline処理(Hive)の統合
Strem処理(Spark Streaming + Kinesis)とOffline処理(Hive)の統合Strem処理(Spark Streaming + Kinesis)とOffline処理(Hive)の統合
Strem処理(Spark Streaming + Kinesis)とOffline処理(Hive)の統合
 
Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析
 
Watson summit 2016_j2_5
Watson summit 2016_j2_5Watson summit 2016_j2_5
Watson summit 2016_j2_5
 
本当にあったApache Spark障害の話
本当にあったApache Spark障害の話本当にあったApache Spark障害の話
本当にあったApache Spark障害の話
 
PySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphPySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL Graph
 
dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料dots. 7/7 DSWBハンズオン資料
dots. 7/7 DSWBハンズオン資料
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境
 
Sparkでレコメンドエンジンを作ってみた
Sparkでレコメンドエンジンを作ってみたSparkでレコメンドエンジンを作ってみた
Sparkでレコメンドエンジンを作ってみた
 
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
 
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめBigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark
 
2015 10 24_spark_osc15tk
2015 10 24_spark_osc15tk2015 10 24_spark_osc15tk
2015 10 24_spark_osc15tk
 
Ibm data science experience
Ibm data science experienceIbm data science experience
Ibm data science experience
 
20190517 Spark+AI Summit2019最新レポート
20190517 Spark+AI Summit2019最新レポート20190517 Spark+AI Summit2019最新レポート
20190517 Spark+AI Summit2019最新レポート
 
16.02.08_Hadoop Conferece Japan 2016_データサイエンスにおける一次可視化からのSpark on Elasticsear...
16.02.08_Hadoop Conferece Japan 2016_データサイエンスにおける一次可視化からのSpark on Elasticsear...16.02.08_Hadoop Conferece Japan 2016_データサイエンスにおける一次可視化からのSpark on Elasticsear...
16.02.08_Hadoop Conferece Japan 2016_データサイエンスにおける一次可視化からのSpark on Elasticsear...
 

Similar to Jazug6周年lt(片倉義昌)

データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~The Japan DataScientist Society
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Tomoya Hibi
 
hbstudy#6LTyuzorock
hbstudy#6LTyuzorockhbstudy#6LTyuzorock
hbstudy#6LTyuzorockyuzorock
 
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用Sotaro Kimura
 
皆さん!ふくてんが来ましたよ!!
皆さん!ふくてんが来ましたよ!!皆さん!ふくてんが来ましたよ!!
皆さん!ふくてんが来ましたよ!!ru pic
 
平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、Databricksでもやってみましょうか平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、DatabricksでもやってみましょうかRyuichi Tokugami
 
Microsoft AI セミナー - Microsoft AI Platform
Microsoft AI セミナー - Microsoft AI PlatformMicrosoft AI セミナー - Microsoft AI Platform
Microsoft AI セミナー - Microsoft AI PlatformDaiyu Hatakeyama
 
教師なし学習によるMackerelの異常検知機能について 〜設計/運用/評価の観点から〜
教師なし学習によるMackerelの異常検知機能について〜設計/運用/評価の観点から〜教師なし学習によるMackerelの異常検知機能について〜設計/運用/評価の観点から〜
教師なし学習によるMackerelの異常検知機能について 〜設計/運用/評価の観点から〜syou6162
 
もっとサーバーレスを手軽に便利に!Azure Logic Apps
もっとサーバーレスを手軽に便利に!Azure Logic Appsもっとサーバーレスを手軽に便利に!Azure Logic Apps
もっとサーバーレスを手軽に便利に!Azure Logic Apps典子 松本
 
利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤Sotaro Kimura
 
AWSでGPUも安く大量に使い倒せ
AWSでGPUも安く大量に使い倒せ AWSでGPUも安く大量に使い倒せ
AWSでGPUも安く大量に使い倒せ Yasuhiro Matsuo
 
非エンジニアでも安心!ノンコーディングでもココまでできる!LINE × Azure Logic Apps
非エンジニアでも安心!ノンコーディングでもココまでできる!LINE × Azure Logic Apps非エンジニアでも安心!ノンコーディングでもココまでできる!LINE × Azure Logic Apps
非エンジニアでも安心!ノンコーディングでもココまでできる!LINE × Azure Logic Apps典子 松本
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Tatsuya Atsumi
 
正式リリースされた.Net coreに少し触れ合ってみる
正式リリースされた.Net coreに少し触れ合ってみる正式リリースされた.Net coreに少し触れ合ってみる
正式リリースされた.Net coreに少し触れ合ってみるTsukasa Kato
 
FlexPod Day 2016 - Cisco session (Publish edition)
FlexPod Day 2016 - Cisco session (Publish edition)FlexPod Day 2016 - Cisco session (Publish edition)
FlexPod Day 2016 - Cisco session (Publish edition)Takao Setaka
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-LINE Corp.
 
Game Architecture Trends in Tokyo Kansai Social Game Study#5
Game Architecture Trends in Tokyo  Kansai Social Game Study#5Game Architecture Trends in Tokyo  Kansai Social Game Study#5
Game Architecture Trends in Tokyo Kansai Social Game Study#5Yasuhiro Matsuo
 
AWS Lambda + Python資料 ver0.94 20160825
AWS Lambda + Python資料 ver0.94 20160825AWS Lambda + Python資料 ver0.94 20160825
AWS Lambda + Python資料 ver0.94 20160825Yasuharu Suzuki
 

Similar to Jazug6周年lt(片倉義昌) (20)

データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
 
hbstudy#6LTyuzorock
hbstudy#6LTyuzorockhbstudy#6LTyuzorock
hbstudy#6LTyuzorock
 
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
 
皆さん!ふくてんが来ましたよ!!
皆さん!ふくてんが来ましたよ!!皆さん!ふくてんが来ましたよ!!
皆さん!ふくてんが来ましたよ!!
 
平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、Databricksでもやってみましょうか平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、Databricksでもやってみましょうか
 
Microsoft AI セミナー - Microsoft AI Platform
Microsoft AI セミナー - Microsoft AI PlatformMicrosoft AI セミナー - Microsoft AI Platform
Microsoft AI セミナー - Microsoft AI Platform
 
教師なし学習によるMackerelの異常検知機能について 〜設計/運用/評価の観点から〜
教師なし学習によるMackerelの異常検知機能について〜設計/運用/評価の観点から〜教師なし学習によるMackerelの異常検知機能について〜設計/運用/評価の観点から〜
教師なし学習によるMackerelの異常検知機能について 〜設計/運用/評価の観点から〜
 
もっとサーバーレスを手軽に便利に!Azure Logic Apps
もっとサーバーレスを手軽に便利に!Azure Logic Appsもっとサーバーレスを手軽に便利に!Azure Logic Apps
もっとサーバーレスを手軽に便利に!Azure Logic Apps
 
利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤
 
AWSでGPUも安く大量に使い倒せ
AWSでGPUも安く大量に使い倒せ AWSでGPUも安く大量に使い倒せ
AWSでGPUも安く大量に使い倒せ
 
非エンジニアでも安心!ノンコーディングでもココまでできる!LINE × Azure Logic Apps
非エンジニアでも安心!ノンコーディングでもココまでできる!LINE × Azure Logic Apps非エンジニアでも安心!ノンコーディングでもココまでできる!LINE × Azure Logic Apps
非エンジニアでも安心!ノンコーディングでもココまでできる!LINE × Azure Logic Apps
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
 
正式リリースされた.Net coreに少し触れ合ってみる
正式リリースされた.Net coreに少し触れ合ってみる正式リリースされた.Net coreに少し触れ合ってみる
正式リリースされた.Net coreに少し触れ合ってみる
 
FlexPod Day 2016 - Cisco session (Publish edition)
FlexPod Day 2016 - Cisco session (Publish edition)FlexPod Day 2016 - Cisco session (Publish edition)
FlexPod Day 2016 - Cisco session (Publish edition)
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
 
Game Architecture Trends in Tokyo Kansai Social Game Study#5
Game Architecture Trends in Tokyo  Kansai Social Game Study#5Game Architecture Trends in Tokyo  Kansai Social Game Study#5
Game Architecture Trends in Tokyo Kansai Social Game Study#5
 
Zynga
ZyngaZynga
Zynga
 
Aws privte20110406 arai
Aws privte20110406 araiAws privte20110406 arai
Aws privte20110406 arai
 
AWS Lambda + Python資料 ver0.94 20160825
AWS Lambda + Python資料 ver0.94 20160825AWS Lambda + Python資料 ver0.94 20160825
AWS Lambda + Python資料 ver0.94 20160825
 

More from Yoshimasa Katakura

Azure Cognitive Serviceの感情分析を使って自分を見つめ直す
Azure Cognitive Serviceの感情分析を使って自分を見つめ直すAzure Cognitive Serviceの感情分析を使って自分を見つめ直す
Azure Cognitive Serviceの感情分析を使って自分を見つめ直すYoshimasa Katakura
 
Azure bastion ignite the tour @tokyo 2019
Azure bastion   ignite the tour @tokyo 2019Azure bastion   ignite the tour @tokyo 2019
Azure bastion ignite the tour @tokyo 2019Yoshimasa Katakura
 
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~Yoshimasa Katakura
 
Azure Network Security Group(NSG) はじめてのDeep Dive
Azure Network Security Group(NSG) はじめてのDeep DiveAzure Network Security Group(NSG) はじめてのDeep Dive
Azure Network Security Group(NSG) はじめてのDeep DiveYoshimasa Katakura
 
(Fix)Azure Network Security Group(NSG)のおさらい
(Fix)Azure Network Security Group(NSG)のおさらい(Fix)Azure Network Security Group(NSG)のおさらい
(Fix)Azure Network Security Group(NSG)のおさらいYoshimasa Katakura
 
Open Service Broker for Azure(OSBA)をつかう
Open Service Broker for Azure(OSBA)をつかうOpen Service Broker for Azure(OSBA)をつかう
Open Service Broker for Azure(OSBA)をつかうYoshimasa Katakura
 
My drivingではじめるazure IoT
My drivingではじめるazure IoTMy drivingではじめるazure IoT
My drivingではじめるazure IoTYoshimasa Katakura
 

More from Yoshimasa Katakura (8)

Azure Cognitive Serviceの感情分析を使って自分を見つめ直す
Azure Cognitive Serviceの感情分析を使って自分を見つめ直すAzure Cognitive Serviceの感情分析を使って自分を見つめ直す
Azure Cognitive Serviceの感情分析を使って自分を見つめ直す
 
Azure bastion ignite the tour @tokyo 2019
Azure bastion   ignite the tour @tokyo 2019Azure bastion   ignite the tour @tokyo 2019
Azure bastion ignite the tour @tokyo 2019
 
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
 
Azure Network Security Group(NSG) はじめてのDeep Dive
Azure Network Security Group(NSG) はじめてのDeep DiveAzure Network Security Group(NSG) はじめてのDeep Dive
Azure Network Security Group(NSG) はじめてのDeep Dive
 
(Fix)Azure Network Security Group(NSG)のおさらい
(Fix)Azure Network Security Group(NSG)のおさらい(Fix)Azure Network Security Group(NSG)のおさらい
(Fix)Azure Network Security Group(NSG)のおさらい
 
Open Service Broker for Azure(OSBA)をつかう
Open Service Broker for Azure(OSBA)をつかうOpen Service Broker for Azure(OSBA)をつかう
Open Service Broker for Azure(OSBA)をつかう
 
My drivingではじめるazure IoT
My drivingではじめるazure IoTMy drivingではじめるazure IoT
My drivingではじめるazure IoT
 
Jazug7周年LT(片倉義昌)
Jazug7周年LT(片倉義昌)Jazug7周年LT(片倉義昌)
Jazug7周年LT(片倉義昌)
 

Jazug6周年lt(片倉義昌)

  • 1. Azure Logic Appsを使って 入退室管理をしてみる - JAZUG 6周年総会 LT - yoshimasa.katakura
  • 2. 自己紹介 Copyright© 2016, Y.Katakura All Rights Reserved. 2 片倉 義昌(かたくら よしまさ) 株式会社pnop 在籍 Azureコンサルティング、導入支援してます 元インフラエンジニア 元Linuxエンジニア 元Cプログラマ yoshimasa.katakura
  • 4. ソーシャル Azure オンプレ機器(北品川事務所) いるもの Copyright© 2016, Y.Katakura All Rights Reserved. 4 • YAMAHA RTX1210 – 普通のルーター • YAMAHA WLX202 – ちょっといい無線LAN AP • Raspberry Pi 2 Model B – Syslogサーバ • Logic Apps – 色々とよろしくやってくれる仕組みを提供 • Service Bus – オンプレからのメッセージやりとり用 • SQL Database – 入退室の元情報(MACアドレス)を管理 • Slack – 社内ソーシャルに入退室情報を通知
  • 5. Azure ながれ Copyright© 2016, Y.Katakura All Rights Reserved. 5 オンプレ機器 (北品川事務所) ソーシャル 事務所への入退 室(Wi-fi接続)があ ると、Service Busに通知 Logic Appsが Service Busから 定期的にメッ セージ取得 SQL DBから接続 端末のMACアド レスをキーにし てメッセージテ キストを取得 メッセージテキ ストをSlackの該 当チャンネルに 送信
  • 6. Syslog設定 Copyright© 2016, Y.Katakura All Rights Reserved. 6 raspbian標準のSyslogデーモンである 「syslog-ng」を利用 config設定は右の感じ 【 /etc/syslog-ng/syslog-ng.conf 】 source s_wlx { udp(port(514)); }; destination d_wlx { program("python -u /root/wifilog.py" flush_lines(1) flags(no_multi_line)); }; filter f_wlx { host(192.168.245.XX) and (message(<0105>) or message(<0112>)); }; log { source(s_wlx); filter(f_wlx); destination(d_wlx); }; 簡単にいうと 「無線LAN APから来たsyslogで「<0105>」「<0112>」が含まれていたらPythonコードを実行しなさい」 ということです。
  • 7. Python側の設定とスクリプト準備 Copyright© 2016, Y.Katakura All Rights Reserved. 7 Pythonは事前にpipでAzure SDKをインストールしておく # pip install azure # これで、Azure SDKがPythonから利用可能になります。 Azure Service Busも以下の感じで使えます。 # 事前準備 from azure.servicebus import ServiceBusService, Message, Queue # Service Busの利用宣言 bus_service = ServiceBusService( service_namespace=‘XXXXXXXX', shared_access_key_name='user', shared_access_key_value=‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') # Service Busにメッセージ送信 bus_service.send_queue_message('syslog', msg)
  • 8. 一応ソースを貼っておく Copyright© 2016, Y.Katakura All Rights Reserved. 8 # -*- coding: utf-8 -*- import fileinput import sys import re import json from azure.servicebus import ServiceBusService, Message, Queue bus_service = ServiceBusService( service_namespace=‘XXXXXXXX', shared_access_key_name='user', shared_access_key_value=‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') while True: line = sys.stdin.readline() if line == '': break tokens = map(str, line.strip().split()) if len(tokens) < 10: # Illogal Data continue if tokens[6] == 'STA': action = 1 macaddr = tokens[7] if tokens[7] == 'DEAUTH': action = 0 macaddr = tokens[10] if macaddr[0] == '(': macaddr = macaddr[1:18] else: macaddr = '00:00:00:00:00:00' msg = Message(json.dumps({'macaddr': macaddr, 'action': action, 'time': tokens[2]})) bus_service.send_queue_message('syslog', msg) syslog-ngから標準入力で受けた ログの行を解析して、接続/切 断フラグと、クライアント端末 のMACアドレスをJSON形式で Azure Service Busのキューに送 信する感じの処理
  • 9. LogicAppsはこんな感じ Copyright© 2016, Y.Katakura All Rights Reserved. 9 Service Busキューからイベ ント取得 SQL DBからMACアドレス をキーとしてレコード取得 条件分岐 アクション種別によって Slackに送るメッセージを変 える SQL DBから取得した メッセージテキストを Slackに送る 行ID(検索条件): @{json(string(decodeBase64 (triggerBody().ContentData))).macaddr} 条件式: @equals(json(string(decodeBase64 (triggerBody().ContentData))).action, 1)
  • 10. SQL DBのテーブル定義はこんな感じ Copyright© 2016, Y.Katakura All Rights Reserved. 10 携帯端末固有のMACアドレス毎に入室と退室メッセー ジを設定している
  • 12. まとめ Copyright© 2015, @yuiashikaga All Rights Reserved. 12 複雑な分岐やエラー処理などを行わなければ、ポータル画面のデザー ナーでマウスポチポチしてロジックの定義は可能 →今回のケースでは全てデザイナ画面だけでAzure側は作成 なるべくLogic Appsで処理をさせる前段でフィルタを行い、課金を抑 える →Syslogの設定やPythonスクリプト内の処理で必要なイベントのみ送信する 今回初めてPythonでコーディングをしたけど中々面白かった →先日のWindows 10 Anniversary UpdateでUbuntuが動くようになったので色々捗り そう

Editor's Notes

  1. 安いAシリーズでいいCPUにならないのということ
  2. 安いAシリーズでいいCPUにならないのということ
  3. 安いAシリーズでいいCPUにならないのということ