Cobol
CobolとAWS連携
データ視覚化自己紹介
名前：・NGUYEN TUAN NGHIA (グエン・トウアン・ギア)
・nghiant1@fsoft.com.vn
役割：・FPTジャパン ソリューションアーキテクト
好みテクノロジー：・AWSのS3, EC2, DB, Batch, Elasticsearch, Lucene
・IoTのraspberry pi , arduino
・Cobol, JP1, JCL, Shell
・その他色々

2

今日の流れAWS EC2構成

テーマ【COBOLとAWS連携データ視覚化】について

COBOLとAWSサー
ビスを使用して、データを図形やグラフィックの形式で表現する

提案内容
システム
構成図
データをS3に保存、EC2のバッチ処理編集、Elasticsearch
DBへ投入の順序に行い、Kibanaツールで視覚化する

AWS S3構成

STEP1 :
S3ストレージの機能ストレージの機能を利用し、システム連携ため、中間ファイルとして保存する。

STEP2:
バッチサーバーの役割で保存されたデー
タ読み込み、フォーマット編集、最終にElasticsearchへ投入を行い。

AWS
Elasticsearch
Kibana構成

STEP3:
Kibanaプラグインが全文検索エンジン「Elasticsearch」と連携して使用するデータ分析/視覚化する1．テーマ：「 CobolとAWS連携データ視覚化
連携データ視覚化」
最近コロナウイルスが世界中に広がり、WHOなどから公開された統計データを基づいてAWSでCobolとElasticsearch/Kibanaを使用して、 データ分析を視覚化する。

4

2. 提案内容① ユーザーCSVデータをAmazon S3にアップロードする。にアップロードする。
② EC2サーバーに, shellスクリプトを配置し、cronを日次に実行する。
を日次に実行する。
shellスクリプトがCSV→JSONフォーマットの変換を行う。
③ ②で変換したデータをElasticsearchへ投入する。
④ Kibanaを使用してダッシュボードにデータを表示する。
を使用してダッシュボードにデータを表示する。
AWS CloudVPC①users②

Amazon S3

Cronデーモン

Amazon EC2③

Amazon ElasticsearchService④InternetKibana
Client5

3. システム構成図

6

4. AWS S3構成
S3サービスとは安くて高い信頼性、容量が無制限。

今回は 単純にファイルの前処理をS3に格納する。
今回は,最初に最初にbucket（fpt-corona-data ）を作成して、パソコンのロカールからデータ（ s3_datarow.csv ）をアップロードして、システム連携の中間ファイルとして保存しておく。
7

5. AWS EC2構成
EC2サービスでは, バッチサーバーの役割で、定期的にScheduleScheduleを起動して、データの変換、Elasticsearchへ投入する。
1．Schedule処理
cronのUNIX系の標準的常駐プログラム（デーモン）で、設定したスケジュールに従って指定された系の標準的常駐プログラム（デーモン）で、設定したスケジュールに従って指定されたJOBプログラムを起動する。MS WindowのScheduleTaskと同様な機能。と同様な機能。
例： 5分1回バッチ処理を実行のCron設定：

上記のcrontabのコマンド作成は： https://crontab-generator.org/generator.org/を使用し、作成してくれた。

8

5. AWS EC2構成（続く）
2. JOBshellスクリプトを使って、S3データコピー、COBOLプログラムでのデータ変換、プログラムでのデータ変換、最後に変換されたデータをElasticsearch投入コマンドの実行順序に一括処理する。
投入コマンドの実行順序に一括処理する。

1. 環境変数など定義

2. S3からEC2へデータコピー
3. COBOLのCSVからJSON変換プログラム呼び出し
4. Elasticsearchデータ投入コマンド実行

9

5. AWS EC2構成（続く）
3. OpenCobol
メインフレームコボルと比べて、OpenCobolにはTRIM機能ようなユーティリティ機能がたくさん設計されている。
機能ようなユーティリティ機能がたくさん設計されている。
今回は、OpenCobolを使用してcsvファイルを読み取り、ElasticsearchElasticsearchのjsonに変換する。
入力 : ec2_datarow.csv

Output: ec2_dataconv.jsonSource code: https://github.com/pkm0306pkm/corona106. AWS ElasticsearchAmazon Elasticsearch Service は無料のオープンソースのソフトウェアで大規模なデータコレクションをインデックス化、管理、検索、視覚化できます。
1.

Index: ドキュメントのコレクションであり。リレーショナルデータベース(RDS)のデータベースと同様。
ドキュメントのコレクションであり。リレーショナルデータベース

2.

Document: JSON形式で定義されたフィールドのコレクションであり。
形式で定義されたフィールドのコレクションであり。

Elasticsearch indexのマッピング定義：
1. index定義

2.フィールド定義

11

6. AWS Elasticsearch （操作）1.

データ一括投入API：

２． データ検索API:

３． その他API（create, update, delete, count…）:
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.html
12

7. Kibana
KibanaはElasticsearch で稼働して、以下の手順にデータを可視化する。
１．Managementタブ: Elasticsearch のデータを操作するため、indexのデータを操作するため、patternを作成する。
２．Visualizeタブ:

インデックスからデータの視覚化を作成する。

３．Dashboardタブ:

リアルタイムでの視覚化のグラフ、およびマップを提供する。

13

8.デモ

14

9. 参考リンク
1. Cron設定
https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html
2. ElasticSearch設定
https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/esservice/latest/developerguide/es-gsg.html
3. Kibana使用
https://www.elastic.co/guide/en/kibana/current/tutorial-visualizing.html
visualizing.html
4. FileBeat, LogStack, Elasticsearch, Kibana
https://medium.com/@quoeamaster/use-case-coronovirus
coronovirus-covid-19-investigation-and-visualisation-withelasticsearch-598df7849e82
5. Cloud9 設定
https://docs.aws.amazon.com/ja_jp/cloud9/latest/user-guide/setting
guide/setting-up.html
6. Corona-19データ: https://www.kaggle.com/sudalairajkumar/novel-corona-virus-2019-dataset/data
https://www.kaggle.com/sudalairajkumar/novel15

ご清聴ありがとう
りがとう ご ざいました