■ はじめに
Sumo LogicにLinuxにあるALLIGATEのログを自動的に取り込む方法を説明します。
■ 準備するもの
- パソコン(Linux)
- ALLIGATEの組織管理権限のあるユーザのユーザIDとパスワード
- Sumo Logicのアカウント情報
■ ログの取得について
ここでのログの取得については、ALLIGATE WEBアプリ向けAPIを実行して取得する想定となります。
また、ALLIGATE WEBアプリ向けAPIを使用する場合は、ログの取得、ログの加工、ログの保存までを、お客様で構築する必要がございます。
【対象のAPI】
- 照合ログ取得API
- 操作ログ取得API
※ALLIGATE WEBアプリ向けAPIをご利用になる場合は、以下の問い合わせから申し込みください。
https://support.alligate.me/hc/ja/requests/new
■ ログの加工について
Sumo Logicで取り込める形式にログを加工する必要があります。
※ALLIGATE WEBアプリ向けAPIにてログを取得する場合の説明となります。
ログ取得APIの成功レスポンスのイメージ:
{
"message": "Success",
"statementId": "03ed6935-17d3-4093-ad8f-eba02f6cb94b",
"startRecord": 1,
"endRecord": 3,
"maxRecords": 3,
"logs": [
{
"timestamp": 1592350985,
"userId": "allighanako",
"userName": "アリゲ花子",
"userFurigana": "ありげ はなこ",
"deviceId": "1000000000000001",
"deviceType": 1,
"gateId": "gateid202003",
"gateName": "東京_事務所入口",
"accessLogId": "000",
"logLabel": "NFCカードが認証されました",
"errorId": "",
"sequenceNo": 10,
"voltage": 12.03,
"location": null
},
{
"timestamp": 1592350638,
"userId": "allighanako",
"userName": "アリゲ花子",
"userFurigana": "ありげ はなこ",
"deviceId": "2000000000000002",
"deviceType": 1,
"gateId": "gateid202003",
"gateName": "東京_事務所入口",
"accessLogId": "000",
"logLabel": "NFCカードが認証されました",
"errorId": "",
"sequenceNo": 9,
"voltage": 12.03,
"location": null
},
{
"timestamp": 1592350635,
"userId": "alligkousaku",
"userName": "アリゲ耕作",
"userFurigana": "ありげ こうさく",
"deviceId": "0000000000000000",
"deviceType": 1,
"gateId": "gateid202003",
"gateName": "東京_事務所入口",
"accessLogId": "000",
"logLabel": "NFCカードが認証されました",
"errorId": "0000",
"sequenceNo": 8,
"voltage": 12.03,
"location": null
}
]
}
ログ取得APIの成功レスポンスから「logs」を取り出し、配列の各要素を1行にまとめてください。
{"timestamp":1592350985,"userId":"allighanako","userName":"アリゲ花子","userFurigana":"ありげ はなこ","deviceId":"1000000000000001","deviceType":1,"gateId":"gateid202003","gateName":"東京_事務所入口","accessLogId":"000","logLabel":"NFCカードが認証されました","errorId":"","sequenceNo":10,"voltage":12.03,location:null}
{"timestamp":1592350638,"userId":"allighanako","userName":"アリゲ花子","userFurigana":"ありげ はなこ","deviceId":"2000000000000002","deviceType":1,"gateId":"gateid202003","gateName":"東京_事務所入口","accessLogId":"000","logLabel":"NFCカードが認証されました","errorId":"","sequenceNo":9,"voltage":12.03,location:null}
{"timestamp":1592350635,"userId":"alligkousaku","userName":"アリゲ耕作","userFurigana":"ありげ こうさく","deviceId":"0000000000000000","deviceType":1,"gateId":"gateid202003","gateName":"東京_事務所入口","accessLogId":"000","logLabel":"NFCカードが認証されました","errorId":"0000","sequenceNo":8,"voltage":12.03,location:null}
ログを保存する時の拡張子と文字コードは、下記の通りです。
拡張子:json
文字コード:UTF-8(BOMなし)
■ Sumo Logicアプリにログイン
Sumo Logicアプリにログインしてください。
以降の説明は、Sumo Logicでの操作となります
■ ログを自動的に表示する設定
Sumo Logに取り込んだログは、通常Messageというフィールドにすべて格納されます。
この設定をすると、ログを検索したときに自動的にALLIGATEのフィールドが表示されます。
※ALLIGATE WEBアプリ向けAPIにてログを取得する場合の説明となります。
「Manage Data」⇒「Logs」をクリックしてください。
「Field Extraction Rule」をクリックしてください。
「+ Add Rule」をクリックしてください。
Rule Nameに下記を入力してください。
照合ログの場合:「access_logs_json」
操作ログの場合:「owner_logs_json」
Scopeに下記を入力してください。
照合ログの場合:「_sourceCategory=alligate/accesslog/json」
操作ログの場合:「_sourceCategory=alligate/ownerlog/json」
Parse Expressionに下記を入力してください。
照合ログの場合:
json "timestamp", "userId", "userName", "userFurigana", "deviceId", "deviceType", "gateId", "gateName", "accessLogId", "logLabel", "errorId", "sequenceNo", "voltage", "location" as unixTime, userId, userName, furigana, deviceId, deviceType, gateId, gateName, logId, logLabel, errorId, sequenceNo, voltage, location
| formatDate(toLong(unixTime*1000), "yyyy/MM/dd HH:mm:ss") as timestamp
| parseDate(timestamp, "yyyy/MM/dd HH:mm:ss", "Asia/Tokyo") as longTimestamp
操作ログの場合:
json "timestamp","userId","name","logType","logMessage" as unixtime, userId, name, logType, message
| concat(message, ":") as logmessage
| concat("msg=", replace(logmessage, ":", ":")) as logmessage
| parse field=logmessage "msg=*:" as logmessage
| formatDate(toLong(unixTime*1000), "yyyy/MM/dd HH:mm:ss") as timestamp
| parseDate(timestamp, "yyyy/MM/dd HH:mm:ss", "Asia/Tokyo") as longTimestamp
保存します。「Save」をクリックしてください。
■ ログの自動取り込み設定
ALLIGATEのログを自動で取り込む設定を行います。「Manage Data」をクリックしてください。
「Collection」をクリックしてください。
「Setup Wizard」をクリックしてください。Setup Wizardのダイアログが表示されます。
「Set Up Streaming Date」をクリックしてください。
「Your Custom App」をクリックしてください。
「Local File」をクリックしてください。
「Linux」選択してください。
「Copy」をクリックしてください。
LinuxでSumo Logic Collectorアプリのダウンロードとインストールを行います。
コピーしたコマンドをLinuxで実行してください。
$ wget "https://collectors.jp.sumologic.com/rest/download/linux/64" -O SumoCollector.sh && chmod +x SumoCollector.sh && sudo ./SumoCollector.sh -q -Vsumo.token_and_url=xxxxx
--2020-11-16 05:50:21-- https://collectors.jp.sumologic.com/rest/download/linux/64
Resolving collectors.jp.sumologic.com (collectors.jp.sumologic.com)... xx.xx.xx.xx, xx.xx.xx.xx, xx.xx.xx.xx
Connecting to collectors.jp.sumologic.com (collectors.jp.sumologic.com)|xx.xx.xx.xx|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 74049718 (71M) [application/octet-stream]
Saving to: ‘SumoCollector.sh’
100%[===================================================================================================================================================================================================>] 74,049,718 9.34MB/s in 8.7s
2020-11-16 05:50:31 (8.14 MB/s) - ‘SumoCollector.sh’ saved [74049718/74049718]
Unpacking JRE ...
Starting Installer ...
The installation directory has been set to /opt/SumoCollector.
2020-11-16 05:50:47,537 main WARN The bufferSize is set to 8192 but bufferedIo is false: false
Extracting files...
Finishing installation...
Sumo Logicアプリに戻り、「Next」をクリックしてください。
「Source Category」を入力します。
APIで取得したログ(JSON)を取り込む場合:
照合ログ:alligate/accesslog/json
操作ログ:alligate/ownerlog/json
CSVを取り込む場合:
照合ログ:alligate/accesslog
操作ログ:alligate/ownerlog
ログを取り込むパスを入力します。
APIで取得したログ(JSON)を取り込む場合:[任意のパス]*.json
CSVを取り込む場合:[任意のパス]*.csv
次に「Add to List」をクリックしてください。
「Next」をクリックしてください。
設定か開始されます。最大15分くらい時間がかかります。
設定が完了しました。「Exit Setup Wizard」をクリックしてください。