本日は、「Exmentの活用法ご紹介」ということで、
IoTログ管理」のデモをご紹介します。

Exmentでログ管理を行うメリット

IoT開発者にとって、「ログ管理」や「データ収集」は、非常に重要な要素です。
機器で発生したログや不具合は、どこかに収集しないと、管理者は永遠に内容を知ることが出来なくなってしまいます。
ログはそれほど重要な要素です。

しかしIoT開発者にとって、ログやデータ収集の仕組みに、そこまで時間はかけたくないはずです。
なぜならば、IoT開発者はIoT機器の開発そのものにリソースをかけたくて、
ログ収集の仕組みには、決して時間もリソースもかけたくないはずです。

「まずはログ収集の仕組みが欲しい!」という方には、Exmentはまさに最適な選択肢です!

なぜならExmentでは、標準でREST API機能を搭載しています。
IoT機器で不具合が発生した場合に、REST通信を行うことによって、Exmentにログデータを保持しておくことができます。

データを管理するためのテーブルや列は、画面上からかんたんに作成することできます!
そのため、「この項目も管理したい」と急に必要になったときでも、わざわざコーディングを行わなくても、管理項目を増やすことが出来ます。

デモ環境説明

まずは、今回のIoTログ管理用に作成した、デモ環境をご紹介します!

今回は2サイトを用いて、デモを行います。

(1)Exment

まずはログの受け口になる、Exmentサイトの環境情報です。
URL: https://exment.net/modelcase/iotlog
ログインID : demouser
パスワード: demouser

上記のサイトにアクセスすると、下記のキャプチャのようなサイトが表示されます。

発生したログ情報と、そのグラフが表示されます。

デモ環境テーブル構成

今回構築したデモ環境では、以下のようなテーブル構成をしております。

  1. 「S001 実行成功」や「E001 端末接続失敗」など、扱うログの種類を管理するテーブル『ログコードマスター』
  2. 「Raspberry Pi 3」や「Cent OS」など、ハードウェア情報を管理する『ハードウェアマスター』
  3. 上記ハードウェア情報と、端末機器毎に発行されるシリアル番号を管理する『ハード – シリアル情報』
  4. 1~3の情報をもとに、実際発生したログ情報を管理する『ログ履歴』

今回はこれらのテーブルを管理します。

(2)ログ送信用ページ

Exment単体では意味がなく、Exmentにログを送信する仕組みが必要です。
今回はWebサイトを使用します。以下のサイトにアクセスを行ってください。
https://exment.work/modelcase/iot_api/
※デモ環境では、IoT製品を準備することは難しいので、今回はWebページのリンクで代用しております。 (実際には、IoT機器から送信される想定です)

このページから、「ログ送信」以下のリンクをクリックします。IoTで実際に処理が発生したと想定し、ログ情報をExmentに送信します。

すると、Exmentの「ログ履歴」のデータに、先ほどクリックしたログ情報が追加されます!

※ダッシュボード下に表示されているグラフも、更新を行うことで、形や件数が変化します。

このように、Exmentを用いることで、シンプルながら十分使えるシステムを構築することができるのです。

デモ環境と同様の環境構築方法

ここからは、これまでに解説した環境を、どのように開発・構築することが出来るか、解説します。
※これより、開発者向けの内容になります。ご了承ください。

(1)Exment

まずは、ログ管理のためのExmentサイトを構築します。

・マニュアルの「クイックスタート」と「初期設定」ページを見ながら、環境構築を完了させます。

・ログ管理用のテンプレートをインポートします。
※テンプレートはこちらよりダウンロードを行ってください。

これにより、デモ環境と同様の「ログコードマスター」や「ログ履歴」などのテーブルが作成されます。

・データの登録を行います。
1から手動で作成しても問題ございませんし、デモ環境と同様のデータを登録したい場合は、こちらよりxlsxファイル一式をダウンロードし、データのインポートを行ってください。
※ファイルはzip形式でダウンロードされます。解凍後、各データ画面から、中のxlsxファイルをアップロードしてください。

・APIの利用するための設定を行います。
マニュアルの「API」ページを参照しながら、設定を行ってください。 ※認証方法は「2. Password Grant Token」を選択ください。
最終的に、APIのClient IDとClient Tokenが取得されます。このClient IDとClient Tokenはメモをしておいてください。

(2)API呼び出し側の実装
※このページでは、API呼び出し側の実装として、Laravel(PHPのフレームワーク)のWebサイトを採用しております。
実際にIoTでREST APIを実装する場合は、内容を置き換えてください。

・アクセストークンを取得します。
(1)の最後で取得した、Client IDとClient Token、ならびにユーザーのIDとパスワードを使用し、以下の値をExmentのサイトにPOSTします。

http(s)://(ExmentのURL)/admin/oauth/token POST
grant_type: password
client_id: (コマンド実施時にコピーしたClient ID)
client_secret: (コマンド実施時にコピーしたClient Secret)
username: (ログインするユーザーIDまたはメールアドレス)
password: (ログインするユーザーパスワード)
scope: me value_write

正常に完了すると、以下の値が返却されます。このaccess_tokenを、後続処理で使用します。

{
“token_type”: “Bearer”,
“expires_in”: 31622400,
“access_token”: “eyJ0eXAiOiJKV1Q…..”,
“refresh_token”: “def50200e5f5eb458…..”
}

・ExmentのAPIを実行します。以下の内容を、ExmentにPOSTしてください。

{
“value”: {
“logcode”: “(ログコード)”,
“hardware”: “(シリアルNo)”,
“occurrence_datetime”: “実行日時の文字列”
},
“findKeys”: {
“logcode”:”log_code”,
“hardware”:”serial_no”
}
}

例:

{
“value”: {
“logcode”: “S001”,
“hardware”: “1234567890”,
“occurrence_datetime”: “2019/05/20 01:01:01”
},
“findKeys”: {
“logcode”:”log_code”,
“hardware”:”serial_no”
}
}

・正常に完了すれば、以下のような値が返却されます。

{
“id”: 14,
“suuid”: “428dd5ba6a17432c2f04”,
“parent_type”: null,
“parent_id”: null,
“value”: {
“logcode”: 1,
“hardware”: 3,
“occurrence_datetime”: “2019/05/20 01:01:01”
},
“created_at”: “2019-05-20 05:44:42”,
“updated_at”: “2019-05-20 05:44:42”,
“deleted_at”: null,
“deleted_user_id”: null,
“created_user_id”: null,
“updated_user_id”: null,
“label”: “#14 S001 成功”
}

これで、APIの送信は完了です。
Exmentのサイトに遷移し、正常にログ履歴が追加されていることを確認してください。

まとめ

このように、Exmentを用いることで、かんたんにログ管理の仕組みを追加することができます。
もちろん、今回弊社でご提案したテーブル構成でなくても、皆様が想定したテーブル構成を一から構築することによって、柔軟な管理を行うことが出来ます。

IoT開発に集中したいエンジニアの皆様!ぜひExmentをご利用ください。

インストール手順

以下のサイトに従って、インストールを行ってください。
インストール手順

無料でお問い合わせはこちら

こちらよりお気軽にお問い合わせください。
お問い合わせ

記事担当

佐藤