未解決
Community Manager
•
3.1K メッセージ
0
985
IsilonianTech 第3回 Isilonとオープンソース ~Isilon Data Insights Connector~
投稿者 kenji_yasui
オリジナル投稿日: Dec 21, 2017 4:06:57 PM
今回は運用で役立つツール、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を比較した場合、それぞれの良さがありますので、その点についても解説いたします。
Isilon Data Insights Connector
Isilon Data Insights Connectorは、API経由で性能情報を取得するためのPythonスクリプトとGrafanaで使えるダッシュボードを提供します。
isi_data_insights_d.py を実行するとデーモンプロセスとして動作し、OneFS API(RESTベースのPlatformAPI)経由で各メトリックを定期的に取得し結果をInfluxDBに格納します。なお、取得間隔はデフォルト では30秒ですがコンフィグで変更可能です。
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 |
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です。
2.ログイン後、データソースの登録を実施します。
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との連携が必要となります。
https://grafana.com/dashboards?search=isilon
4.ダッシュボードの登録
上記、3.で取得したダッシュボードをGrafanaメニューの「Dashboards」の「Import」から登録します。
Isilon Data Insight Connector使用方法
Grafanaの画面左側(下記画面の赤い丸)から表示したいダッシュボードを選択します。
次に、画面右側(下記画面の黄色い丸)表示期間や更新間隔を選択します。
下記では、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している必要があります。)
Isilon Data Insights Protocol Detail
監視しているIsilonクラスタをプロトコル別に表示します。
・クラスタの状態
・プロトコル別クライアント接続数
・プロトコル別オペレーション数とCPU使用率
・プロトコル別オペレーション
・プロトコル別オペレーション数、スループット(Read/Write別)、レイテンシ(平均、最大)など
・IsilonクラスタのWebUIへのリンクや、詳細なダッシュボードへのリンク機能
Grafanaを使用すると比較的簡単にダッシュボードが作成できます。難しいと思われる場合は既存のダッシュボードをEditして、どのようなMetricsになっているか確認してみてください。是非、オリジナルのダッシュボードを作成頂ければと思います!
InsightIQ
最後に、InsightIQについてご紹介します。(簡単にではございますが。)
InsightIQは、Isilonの性能情報とファイルシステムの情報を収集しグラフィカルに表示/分析するソフトウェアです。
OneFS web administration interface(IsilonのWebツール)同様、非常にシンプルなインターフェースなので専門知識がなくても簡単に使用することができます。
InsightIQのインストールについては割愛しますが、インストール自体は非常に簡単でVMwareのOVAもしくは、Linux RPM形式で提供しています。なお、InsightIQはIsilonクラスタをお持ちであれば無償でご利用いただけます。
Isilon Data Insights Connectorは性能分析がメインですが、InsightIQは性能分析だけでなく非常に強力なファイル分析機能が実装されています。
例 えば、社内のファイルサーバでは性能以外にも、どのくらい容量が使用されているか、昨日や1週間前と比べてどの部門や誰が多く容量を消費したか、30日間 アクセスが無いファイルは全体のうちどれくらい存在するか、また、ファイルサイズ毎、拡張子毎にファイル数をカウントすることもできますし、あと何ヶ月で 容量が枯渇するかといったキャパシティ予測も可能です。
また、定期的にレポートを生成してメールで自動送信したり、結果をCSVでエクスポートすることもできます。
特 に、このようなファイル分析は、従来のファイルストレージでは可視化するために3rd Partyのソフトウェアが別途必要でしたが、Isilonはファイル単位でデータを保護するというアーキテクチャの特性から、Isilon自体がファイ ルに関する情報を持っていますので別途3rd Partyソフトウェアを用意する必要がありません。
まとめ
Isilon Data Insights ConnectorとInsightIQの比較は下記のとおりです。
Data Insight Connector InsightIQ主な機能 | 性能分析 | 性能分析 容量分析(容量予測、クォータ、重複排除など) |
カスタマイズ | ◎ ダッシュボード、グラフ、各種項目に至るまで細かな |
○ Performance Reportの カスタマイズが可能 結果をCSVへエクスポート可能 |
費用 | 無償 | 無償 |
サポート | コミュニティサポート | EMCサポート |
参考情報
Isilon Data Insights Connector GitHub https://github.com/Isilon/isilon_data_insights_connector
Keith Anderson's Blog
Isilon InsightIQ https://www.delltechnologies.com/en-ph/collaterals/unauth/data-sheets/products/storage/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~
IsilonianTech-第10回-Isilonとデータアナリティクス-Isilon-Ambari-Management
IsilonianTech 第11回 OneFS 8.2リリース!
IsilonianTech-第12回-データファーストを支援するソフトウェア-DataIQ
IsilonianTech-第13回-vRealize-Orchestratorプラグイン
安井 謙治
EMCジャパン株式会社
アイシロン事業本部 SE部