今回は運用で役立つツール、Isilon Data Insights Connectorについてご紹介します。

Isilon Data Insights Connectorは、ひとことで言うとIsilonの性能を可視化するツールでInfluxDB + Grafanaをベースに動作します。

Isilonでは標準ツールとしてInsightIQを提供しておりますので、一般的な用途(例えば、ファイルサーバ、データレイクなど社内の情報基盤用途)であれば、InsightIQで十分ですが、サービス基盤となるとストレージ以外のインフラやアプリケーションなど統合的に監視したいというニーズが出てくると思います。

Isilon Data Insights Connector(Grafana)であればIsilonに限らず統合的に監視できて、きめ細かなカスタマイズが出来ますので多くの監視に関するニーズを比較的簡単に満たすことが出来ます。

Isilon Data Insights ConnectorとInsightIQを比較した場合、それぞれの良さがありますので、その点についても解説いたします。

code_isilon.png

                                                            http://codedellemc.com/isilon

 

 

Isilon Data Insights Connector

Isilon Data Insights Connectorは、API経由で性能情報を取得するためのPythonスクリプトとGrafanaで使えるダッシュボードを提供します。

isi_data_insights_d.pyを実行するとデーモンプロセスとして動作し、OneFS API(RESTベースのPlatformAPI)経由で各メトリックを定期的に取得し結果をInfluxDBに格納します。なお、取得間隔はデフォルトでは30秒ですがコンフィグで変更可能です。

IDIC.JPG.jpg

                                        Isilon Data Insights Connector Cluster Detail画面

 

 

Isilon Data Insights Connectorインストール

インストールにあたりLinuxマシンを1台用意します。ハードウェア要件はありませんが、1CPU/メモリ4GB程度あると快適です。また、ディストリビューションの指定はありませんがCentOS7系(Python2.7)がおすすめです。

なお、Isilon Data Insights Connectorを実行するにあたりAPIを実行できる権限を持っているユーザがいればIsilon側の設定は特にありません。

 

 

下記ステップでGrafana、InfluxDB、Isilon Data Insights Connectorをインストールしていき、コンフィグ(isi_data_insights_d.cfg)を編集し実行する流れとなります。

 

1.gitパッケージをインストールします。

[root@cent ~]# yum -y install git

 

2.インストールにあたり任意のディレクトリに移動します。(私は/opt配下にインストールしました)

[root@cent ~]# cd /opt

 

3.GitHubからIsilon Data Insights Connectorをクローンします。

[root@cent ~]# git clone https://github.com/Isilon/isilon_data_insights_connector.git

 

4.pip実行のために下記2つのパッケージをインストールします。

[root@cent ~]# yum -y install epel-release python-pip

 

5.インストールしたディレクトリに移動しpip installを実行します。

[root@cent ~]# pip install -r requirements.txt

 

6.example_isi_data_insights_d.cfgをisi_data_insights_d.cfgという名前でコピーします。

[root@cent ~]# cp example_isi_data_insights_d.cfg isi_data_insights_d.cfg

 

7. isi_data_insights_d.cfgファイルを編集します。監視したいIsilonクラスタ名もしくはIPアドレスをclusters:(24行目あたりにあります)の後に入力します。複数のIsilonクラスタを登録する場合はスペースで区切って入力します。(例ではfs01.isilon.local、iq31.isilon.local、iq41.isilon.localの3つのクラスタを登録しています。

# Use the optional True or False on the end to specify whether the cluster's

# SSL certificate should be verified. If it is omitted then the default is

# False (i.e. don't verify SSL cert).

clusters:fs01.isilon.local iq31.isilon.local iq41.isilon.local

 

 

 

# Specifies the active list of stat groups to query, each stat group name

# specified here should have a corresponding section in the config file.

 

8. /etc/yum.repos.d/influxdb.repoファイルを作成します。

[influxdb]

name = InfluxDB Repository - RHEL \$releasever

baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable

enabled = 1

gpgcheck = 1

gpgkey = https://repos.influxdata.com/influxdb.key

 

9.influxdbをインストールします。

[root@cent ~]# yum install -y influxdb

[root@cent ~]# service influxdb start

 

10. /etc/yum.repos.d/grafana.repoファイルを作成します。

[grafana]

name=grafana

baseurl=https://packagecloud.io/grafana/stable/el/6/$basearch

repo_gpgcheck=1

enabled=1

gpgcheck=1

gpgkey=https://packagecloud.io/gpg.keyhttps://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana

sslverify=1

sslcacert=/etc/pki/tls/certs/ca-bundle.crt

 

11.influxdbをインストールします。

[root@cent ~]# yum install -y grafana

[root@cent ~]# service grafana-server start

 

 

Isilon Data Insights Connectorの起動

isi_data_insights_d.pyを実行します。登録したIsilonクラスタ毎にプロンプトが表示されますのでAPIを実行する権限のあるユーザおよびパスワード、SSL接続の有無を入力します。

[root@cent isilon_data_insights_connector]# ./isi_data_insights_d.py start

 

 

Please provide the username used to access fs01.isilon.local via PAPI: root

Password:

Verify SSL cert [y/n]: n

Configured fs01.isilon.local as version 7 cluster, using SDK isi_sdk_7_2.

Please provide the username used to access iq41.isilon.local via PAPI: root

Password:

Verify SSL cert [y/n]: n

Configured iq41.isilon.local as version 8 cluster, using SDK isi_sdk_8_0.

Please provide the username used to access iq31.isilon.local via PAPI: root

Password:

Verify SSL cert [y/n]: n

Configured iq31.isilon.local as version 8 cluster, using SDK isi_sdk_8_0.

Computing update intervals for stat group: cluster_cpu_stats.

Computing update intervals for stat group: cluster_network_traffic_stats.

Computing update intervals for stat group: cluster_client_activity_stats.

Computing update intervals for stat group: cluster_health_stats.

Computing update intervals for stat group: ifs_space_stats.

Computing update intervals for stat group: ifs_rate_stats.

Computing update intervals for stat group: node_load_stats.

Computing update intervals for stat group: node_disk_stats.

Computing update intervals for stat group: node_net_stats.

Computing update intervals for stat group: cluster_disk_rate_stats.

Computing update intervals for stat group: cluster_proto_stats.

Computing update intervals for stat group: cache_stats.

Computing update intervals for stat group: heat_total_stats.

Configured stat set:

        Clusters: [iq31, iq41, fs01]

        Update Interval: 300

        Stat Keys: set(['ifs.percent.free', 'ifs.bytes.free', 'ifs.bytes.used', 'ifs.bytes.avail', 'ifs.bytes.total', 'ifs.percent.avail', 'ifs.percent.used'])

Configured stat set:

        Clusters: [iq31, iq41, fs01]

        Update Interval: 30

        Stat Keys: set(['cluster.protostats.lsass_out.total', 'cluster.cpu.idle.avg', 'node.open.files', 'node.disk.iosched.queue.avg', 'node.disk.xfers.in.rate.avg', 'node.clientstats.connected.ftp', 'node.disk.bytes.out.rate.avg', 'cluster.net.ext.bytes.out.rate', 'node.clientstats.active.smb2', 'cluster.protostats.siq', 'cluster.protostats.ftp', 'cluster.protostats.irp.total', 'ifs.ops.out.rate', 'node.clientstats.connected.cifs', 'node.net.ext.bytes.in.rate', 'cluster.net.ext.packets.out.rate', 'node.net.int.errors.in.rate', 'node.ifs.heat.rename.total', 'node.net.ext.errors.in.rate', 'ifs.bytes.out.rate', 'node.disk.access.latency.avg', 'cluster.protostats.irp', 'node.load.5min', 'node.memory.used', 'cluster.protostats.nlm.total', 'node.clientstats.active.hdfs', 'node.clientstats.connected.nlm', 'node.net.int.errors.out.rate', 'cluster.protostats.nfs4.total', 'cluster.protostats.nlm', 'node.ifs.heat.read.total', 'node.clientstats.active.nlm', 'cluster.health', 'cluster.disk.bytes.out.rate', 'cluster.disk.bytes.in.rate', 'node.ifs.heat.link.total', 'cluster.protostats.papi.total', 'node.ifs.heat.setattr.total', 'cluster.protostats.smb2.total', 'cluster.protostats.jobd', 'cluster.net.ext.packets.in.rate', 'cluster.protostats.lsass_out', 'cluster.protostats.hdfs.total', 'node.clientstats.connected.hdfs', 'node.disk.xfer.size.out.avg', 'cluster.disk.xfers.in.rate', 'node.clientstats.active.nfs4', 'node.disk.busy.avg', 'node.clientstats.active.ftp', 'node.ifs.heat.deadlocked.total', 'cluster.protostats.nfs4', 'node.clientstats.connected.papi', 'node.ifs.cache', 'cluster.protostats.lsass_in.total', 'node.ifs.heat.lock.total', 'cluster.net.ext.errors.out.rate', 'node.clientstats.connected.siq', 'node.clientstats.active.lsass_out', 'node.ifs.heat.write.total', 'node.net.ext.bytes.out.rate', 'node.clientstats.active.cifs', 'cluster.protostats.nfs', 'cluster.node.count.all', 'node.load.15min', 'node.disk.xfer.size.in.avg', 'cluster.protostats.cifs', 'node.clientstats.active.nfs', 'cluster.net.ext.bytes.in.rate', 'cluster.protostats.nfs.total', 'node.ifs.heat.getattr.total', 'node.ifs.heat.unlink.total', 'cluster.protostats.http', 'node.ifs.heat.blocked.total', 'node.clientstats.active.jobd', 'cluster.protostats.hdfs', 'cluster.protostats.cifs.total', 'cluster.protostats.siq.total', 'node.clientstats.active.http', 'node.load.1min', 'cluster.node.count.down', 'node.disk.iosched.latency.avg', 'cluster.cpu.intr.avg', 'ifs.ops.in.rate', 'cluster.protostats.lsass_in', 'node.memory.cache', 'cluster.cpu.user.avg', 'node.disk.access.slow.avg', 'cluster.disk.xfers.out.rate', 'node.disk.xfers.out.rate.avg', 'cluster.protostats.http.total', 'cluster.disk.xfers.rate', 'node.clientstats.active.siq', 'node.net.int.bytes.in.rate', 'cluster.net.ext.errors.in.rate', 'cluster.protostats.ftp.total', 'cluster.cpu.sys.avg', 'node.ifs.heat.contended.total', 'cluster.protostats.jobd.total', 'node.net.int.bytes.out.rate', 'node.ifs.heat.lookup.total', 'node.net.ext.errors.out.rate', 'cluster.protostats.smb2', 'node.clientstats.active.papi', 'node.clientstats.connected.http', 'ifs.bytes.in.rate', 'node.clientstats.connected.nfs', 'cluster.protostats.papi', 'node.memory.free', 'node.cpu.throttling', 'node.disk.bytes.in.rate.avg'])

 

 

ダッシュボードのセットアップ

次に、Grafanaのダッシュボードをセットアップしていきます。

1.Grafana(https://hostname:3000)にアクセスします。ログイン/パスワードは、admin/adminです。

grafana.JPG.jpg

 

2.ログイン後、データソースの登録を実施します。

datasource.JPG.jpg

 

3.ダッシュボードの取得

Isilon Data Insight Connectorで使用したいダッシュボードを取得します。

ダッシュボードはJSONファイル形式で提供されており、Isilon Data Insight ConnectorのGitHubもしくは、Grafana Labsから入手可能です。(インストールしたディレクトリ内にも含まれております。)

2018年1月1日現在、Isilon Data Insight Connectorで使用可能なダッシュボードは下記6つとなります。

・HDFS - DataNodes (Isilon)

・HDFS - Home (Isilon)

・Isilon Data Insights Cluster Capacity Utilization Table

・Isilon Data Insights Cluster Detail

・Isilon Data Insights Cluster Summary

・Isilon Data Insights Protocol Detail

 

なお、Grafana LabsにはIsilon用のダッシュボードが7つ存在しますが、CDH with IsilonはClouderaの状態を監視するためのダッシュボードとなり別途Cloude Managerとの連携が必要となります。

grafanalabs.png

                                             https://grafana.com/dashboards?search=isilon

 

 

4.ダッシュボードの登録

上記、3.で取得したダッシュボードをGrafanaメニューの「Dashboards」の「Import」から登録します。

JSON.JPG.jpg

 

 

Isilon Data Insight Connector使用方法

Grafanaの画面左側(下記画面の赤い丸)から表示したいダッシュボードを選択します。

次に、画面右側(下記画面の黄色い丸)表示期間や更新間隔を選択します。

dashboards_ranges.JPG.jpg


下記では、Isilon Data Insights Cluster SummaryとIsilon Data Insights Protocol Detailの2つのダッシュボードをご紹介したいと思います。

 

Isilon Data Insights Cluster Summary

監視している複数のIsilonクラスタの正常性および性能概要を表示します。

・クラスタの状態

・CPU使用率

・使用容量

・NFSスループット、ops、レイテンシ

・SMBスループット、ops、レイテンシ

・IsilonクラスタのWebUIへのリンクや、詳細なダッシュボードへのリンク機能(詳細なダッシュボードへのリンクは、Isilon Data Insights Cluster DetailをImportしている必要があります。)

cluster_summary.png

                                     

 

Isilon Data Insights Protocol Detail

監視しているIsilonクラスタをプロトコル別に表示します。

・クラスタの状態

・プロトコル別クライアント接続数

・プロトコル別オペレーション数とCPU使用率

・プロトコル別オペレーション

・プロトコル別オペレーション数、スループット(Read/Write別)、レイテンシ(平均、最大)など

・IsilonクラスタのWebUIへのリンクや、詳細なダッシュボードへのリンク機能

protocol_detail.JPG.jpg



Grafanaを使用すると比較的簡単にダッシュボードが作成できます。難しいと思われる場合は既存のダッシュボードをEditして、どのようなMetricsになっているか確認してみてください。是非、オリジナルのダッシュボードを作成頂ければと思います!

edit.JPG.jpg

 


InsightIQ

最後に、InsightIQについてご紹介します。(簡単にではございますが。)

InsightIQは、Isilonの性能情報とファイルシステムの情報を収集しグラフィカルに表示/分析するソフトウェアです。

OneFS web administration interface(IsilonのWebツール)同様、非常にシンプルなインターフェースなので専門知識がなくても簡単に使用することができます。

InsightIQのインストールについては割愛しますが、インストール自体は非常に簡単でVMwareのOVAもしくは、Linux RPM形式で提供しています。なお、InsightIQはIsilonクラスタをお持ちであれば無償でご利用いただけます。

IIQ_Dashb.JPG.jpg

 

 

Isilon Data Insights Connectorは性能分析がメインですが、InsightIQは性能分析だけでなく非常に強力なファイル分析機能が実装されています。

 

例えば、社内のファイルサーバでは性能以外にも、どのくらい容量が使用されているか、昨日や1週間前と比べてどの部門や誰が多く容量を消費したか、30日間アクセスが無いファイルは全体のうちどれくらい存在するか、また、ファイルサイズ毎、拡張子毎にファイル数をカウントすることもできますし、あと何ヶ月で容量が枯渇するかといったキャパシティ予測も可能です。

 

また、定期的にレポートを生成してメールで自動送信したり、結果をCSVでエクスポートすることもできます。

IIQ_forecast.JPG.jpg

特に、このようなファイル分析は、従来のファイルストレージでは可視化するために3rd Partyのソフトウェアが別途必要でしたが、Isilonはファイル単位でデータを保護するというアーキテクチャの特性から、Isilon自体がファイルに関する情報を持っていますので別途3rd Partyソフトウェアを用意する必要がありません。


 

IIQ_perf.JPG.jpg

 

 

まとめ

Isilon Data Insights ConnectorとInsightIQの比較は下記のとおりです。

Data Insight ConnectorInsightIQ
主な機能性能分析

性能分析

容量分析(容量予測、クォータ、重複排除など)

カスタマイズ

ダッシュボード、グラフ、各種項目に至るまで細かな
カスタマイズが可能

Performance Reportの

カスタマイズが可能

結果をCSVへエクスポート可能

費用無償無償
サポートコミュニティサポートEMCサポート

 

 

 

参考情報

Isilon Data Insights Connector GitHub https://github.com/Isilon/isilon_data_insights_connector

Keith Anderson's Blog https://community.emc.com/blogs/keith/2017/01/26/isilon-data-insights-connector--do-it-yourself-isilon-monitoring

Isilon InsightIQ https://japan.emc.com/collateral/software/data-sheet/h8317-ds-isilon-insightiq.pdf

 

 

バックナンバー

IsilonianTech 第1回 Isilonとオープンソース ~REX-Ray編~

IsilonianTech 第2回 Isilonとオープンソース ~OpenStack Manila編~

IsilonianTech 第3回 Isilonとオープンソース ~Isilon Data Insights Connector~

IsilonianTech 第4回 Software Defined Storage ~IsilonSD Edge~

IsilonianTech 第5回 Isilonとオープンソース ~Isilon-POSH~

IsilonianTech 第6回 Isilonとオープンソース ~Elastic Stack編~

IsilonianTech 第7回 Isilonとデータアナリティクス ~Cloudera編~

IsilonianTech 第8回 Elastic Cloud Storage (ECS) ~ECS Community Edition~

IsilonianTech 第9回 ISILON + ECS = UNLIMITED ~Isilon CloudPools~



安井 謙治

EMCジャパン株式会社

アイシロン事業本部 SE部