サマリアクションをCSVからODBCに変更する

<< Click to Display Table of Contents >>

マニュアル > 監視システム構築ガイド > 主要機能の構築 > ロギング/トレンドグラフ > トレンドグラフのカスタマイズ >

サマリアクションをCSVからODBCに変更する

概要

標準フレームワークを利用して構築された標準プロジェクトのロギング機能では「サマリ(CSV)」アクションが使用されていますが、サマリ(ODBC)アクションを使用することで、データベース上にODBC経由でログデータを保存する事ができるようになります。

 

p_logger_0273

 

 

ここでは、標準のサマリ機能に対して以下のカスタマイズを行います。

 

カスタマイズ内容

 

データベースを用意する。

ODBCドライバの設定を行う。

サマリ(ODBC)アクションを追加し、設定を行う。

 

画面ライブラリのトレンドグラフ機能は、サマリアクションがODBCであっても、CSVの場合と全く同じように動作します。従って、標準のサマリ機能をCSV形式からデータベースに変更したい場合は、サマリアクションを「サマリ(ODBC)」に変更して設定を行うのみで、画面側はそのまま利用することができます。

 

尚、ここでは例として、SQLServer2017を用いたデータベースの設定例について紹介します。

 

 

hint

対応可能なデータベースの種類、バージョンなどの最新情報については、弊社ホームページのFAQ「対応しているデータベース製品は何ですか?」にも掲載されています。

 

 

サンプルのダウンロード

このページで紹介されている作成例には、サンプルが用意されています。

 

サンプルは以下からダウンロードすることができます。

 

 

 

作業手順

■サマリデータ用のデータベースの準備

 

まず、サマリデータを格納するためのデータベースを1つ用意してください。データベースの名称は自由に付与することができますが、今回は例として、「SUMMARYDB」という名称のデータベースが作成されているものとします。

 

以下は、SQLServer Management Studioのオブジェクトエクスプローラーで表示した例です。

 

p_logger_0274

 

サマリ(ODBC)アクションでは、必ずしも専用のデータベースを用意する必要はありません。接続先のデータベースには、サマリアクションのロギング・集計データを格納するテーブル以外の他のテーブルが混在する環境であっても特に問題はありません。

 

 

■サマリデータ用のテーブルの準備

 

サマリ(ODBC)アクションでは、データの格納に必要となる各種テーブル群は初回のオンライン実行時に自動的に生成される仕組みとなっています。従って、テーブルを手動で作成する必要はありません。

 

 

■サマリ(ODBC)アクションの設定

 

続いて、Panel Serverにサマリ(ODBC)アクションの追加を行い、データベースに接続するための設定を行います。ここでは例として、Windows10環境でSQL Server 2017のデータベースと接続するための設定について紹介します。

 

尚、標準プロジェクトのサーバ設定ファイルでは、標準フレームワークにデフォルトで含まれている「Summary」という名称のサマリ(CSV)アクションが登録された状態となっており、本アクションはイベントのSummaryフォルダ内に設定されている定刻期イベント「Log」から定周期で呼び出されるように設定されています。

 

p_logger_0275

 

そこで、ここで紹介する作業手順では、もともと登録されていた「Summary」アクションを削除して、新たにサマリ(ODBC)アクションを「Summary」という名称で追加することで、その他のイベントやクライアント側の設定はそのまま変更せずに利用することとします。

 

 

1.「Summary」アクションを削除する

 

Panel Serverの左ツリーから、ActionのSummaryを右クリックし、メニューから「削除」を選択してください。

確認画面が表示されるので、「はい」を選択してください。

 

p_logger_0276

 

以下は、アクションの「Summary」が削除された状態です。

 

p_logger_0277

 

 

2.サマリ(ODBC)アクションを追加する

 

Panel Serverの左ツリーからActionを右クリックし、追加/アクションを選択してください。

 

アクションの追加画面が表示されるので、「サマリ(ODBC)」を選択してOKをクリックします。

 

p_logger_0278

 

 

アクション「A01」が追加されました。

 

p_logger_0279

 

 

3.サマリ(ODBC)アクションの設定を行う

 

A01のプロパティを表示し、各種設定を行います。

 

p_logger_0280

 

左記は、「基本設定」タブです。

 

名前を「A01」から「Summary」に変更します。

 

サマリフォルダに以下を設定します。

 

server_data\summary

 

サマリマスタに以下を設定します。

 

server\summary\master.txt

 

 

 

p_logger_0281

 

左記は、「ODBC設定」タブです。

 

データソースには、あらかじめ用意しておいたデータベース「SUMMARYDB」に接続するためのODBCデータソースを設定してください。尚、データソースの設定手順は、各DBMSとも共通的な操作により行うことができます。ODBC設定については、アクションの共通設定の「ODBC設定」の記述を参照してください。

 

 

 

 

 

 

 

4.サマリマスタを編集する

 

続いて、「サマリマスタ」を編集し、サマリODBCのために必要な設定項目を追記します。

 

対象のプロジェクトの「master.txt」をメモ帳などで開き、編集を行ってください。

 

(プロジェクトフォルダ)\server\summary\master.txt

 

 

共通プロパティ設定(COMMON)の編集

 

まず、共通プロパティ設定(COMMON)のセクションを、以下のように編集してください。

 

以下の1行を追加する。

 

OdbcDatabaseType=SQLSERVER

 

(編集例)

;共通プロパティセクション ([COMMON])

[COMMON]

DaysOfHoldingData=3660

OdbcDatabaseType=SQLSERVER

 

 

 

hint

OdbcDatabaseTypeには、接続するDBMSの種類により適切なタイプを指定してください。今回はSQLServerと接続するため「SQLSERVER」としています。OdbcDatabaseTypeに指定可能なタイプについては「共通プロパティセクション」の記述を参照してください。

 

 

 

ルートログ定義(RAW)の編集

 

続いて、ルートログ定義(RAW)のセクションを、以下のように編集してください。

 

以下の3行を削除する。

 

CsvFileName=DB\RAW\SMR_RAW_.csv

CsvFileMaxFields=1000

CsvFileFlushCount=1

 

以下の2行を追加する。

 

OdbcTable=RAW

OdbcMaxFields=500

 

(編集例)

;ルートログセクション ([RAW]など)

[RAW]

TagFieldMaster=..\..\server\summary\fieldmaster_tag.csv

TagFieldIndex=DB\index_tag.txt

CalculationFieldMaster=..\..\server\summary\fieldmaster_calculation.csv

CalculationFieldIndex=DB\index_calculation.txt

TimeRangeType=TYPE2

OdbcTable=RAW

OdbcMaxFields=500

 

 

 

集計ログ定義(DAY)の編集

 

続いて、集計ログ定義(DAY)のセクションを、以下のように編集してください。

 

以下の2行を削除する。

 

CsvFileName=DB\DAY\SMR_DAY_.csv

CsvFileUnit=DAY

 

以下の1行を追加する。

 

OdbcTable=DAY

 

(編集例)

;集計ログセクション ([RAW::DAY]、[DAY::MONTH]など)

[RAW::DAY]

SummaryUnit=1HOUR

SummaryType=[SummaryType1]

SummaryParam=[SummaryParam1]

CalculationType=[Expression]

TimeRangeType=TYPE2

DecimalNum=[DecimalNum1]

ODBCTable=DAY

SummaryASync=T

ReportLayoutMaster=..\..\server\summary\layoutmaster.xls

ReportLayoutMasterSheet=DAY

ReportOutputSheetName=日報_

ReportTitleHeader=日報_

ReportExcelCellFormatType=formatednum2

ReportTitleDateFormat=@[%H時]

 

 

 

集計ログ定義(MONTH)の編集

 

続いて、集計ログ定義(MONTH)のセクションを、以下のように編集してください。

 

以下の2行を削除する。

 

CsvFileName=DB\MONTH\SMR_MONTH_.csv

CsvFileUnit=MONTH

 

以下の1行を追加する。

 

OdbcTable=MONTH

 

(編集例)

[DAY::MONTH]

SummaryUnit=1DAY

SummaryType=[SummaryType2]

SummaryParam=[SummaryParam2]

CalculationType=[SummaryType1]

DecimalNum=[DecimalNum1]

ODBCTable=MONTH

ReportLayoutMaster=..\..\server\summary\layoutmaster.xls

ReportLayoutMasterSheet=MONTH

ReportOutputSheetName=月報_

ReportTitleHeader=月報_

ReportExcelCellFormatType=formatednum2

ReportTitleDateFormat=@[%m月%d日(%a)]

 

 

 

集計ログ定義(YEAR)の編集

 

続いて、集計ログ定義(YEAR)のセクションを、以下のように編集してください。

 

以下の2行を削除する。

 

CsvFileName=DB\YEAR\SMR_YEAR_.csv

CsvFileUnit=YEAR

 

以下の1行を追加する。

 

OdbcTable=YEAR

 

(編集例)

[MONTH::YEAR]

SummaryUnit=1MONTH

SummaryType=[SummaryType2]

SummaryParam=[SummaryParam2]

CalculationType=[SummaryType1]

DecimalNum=[DecimalNum1]

ODBCTable=YEAR

ReportLayoutMaster=..\..\server\summary\layoutmaster.xls

ReportLayoutMasterSheet=YEAR

ReportOutputSheetName=年報_

ReportTitleHeader=年報_

ReportExcelCellFormatType=formatednum2

ReportTitleDateFormat=@[%#m月]

 

 

以上で設定作業は完了です。master.txtを上書き保存してください。

 

 

動作確認

それでは、動作を確認してみましょう。

 

Panel Serverの画面上部にあるオンライン(黄矢印)をクリックしてください。

 

続いて、Panel Editorの画面上部にあるブラウザ実行アイコン(緑矢印)をクリックし、Panel Browserを呼び出します。  

 

Panel Browserが起動しました。

 

p_logger_0282

 

SQLServerのManagement StudioでSUMMARYDBのテーブルを表示してみると、以下のようにサマリアクションの各テーブルが自動生成されていることが確認できます。

 

p_logger_0283

 

Panel Serverから、サマリアクションのロギング対象となっているタグのうち「U01.F01.D0000」の値を任意の数値に変更します(ここでは例として「250」と入力します)。

 

すると、トレンドグラフに数値が反映されました。

 

p_logger_0284

 

尚、SQL Server側の「RAW1」テーブルのデータを参照すると、値を編集した時刻のレコード以降に、以下のようなデータが保存されていることを確認することができます。

 

p_logger_0285

 

補足説明

■テーブルの自動分割について

 

サマリ(ODBC)アクションによってデータベース上に自動生成されるテーブルは、サマリマスタに定義した「OdbcMaxFields」パラメータのフィールド数で自動的に分割されます。例えば、タグフィールドマスタに定義されているフィールドの数が900件登録されているものとして、OdbcMaxFieldsに250と定義されている場合、生成されるテーブルは4テーブルとなります。

 

また、生成されるテーブルの名称は、サマリマスタに「OdbcTable」として定義された名称に対して、生成されたテーブルの分割数が付与された名称となります。例えば、ルートログ定義のOdbcTableに「RAW」と定義した場合、自動生成されたテーブルの名称は、「RAW1」「RAW2」・・・のような名称となります。

 

 

hint

OdbcMaxFieldsに定義可能なフィールド数の上限は、接続するデータベースの種類、バージョン等により異なります。また、あまりに多い列数を定義すると、ロギング・集計のパフォーマンスが低下する場合があります。どの程度の列数とするべきか迷う場合は、500列程度から試してみてください。