Cloudera Managerのメトリクス可視化クエリ言語tsqueryとチャートビルダー

Cloudera Manager には豊富なチャート機能が付属していて、運用や障害解析を楽にしてくれる。

チャート機能を使った運用については、下記の記事などが詳しい。

- http://www.slideshare.net/Cloudera_jp/troubleshooting-using-cloudera-manager-cwt2015
- http://qiita.com/brfrn169/items/43e2069e141cfa9536ec


![C5-チャートの一例.png](https://qiita-image-store.s3.amazonaws.com/0/17749/638df0a2-575c-bbab-44ec-c843a4483293.png)

このチャート、実は全てSQLライクなクエリ言語「tsquery」で作成されている。
このtsqueryを使うと、Cloudera Manager 上であらゆるチャートを自分で作成することが可能だ。

チャートビルダーページを開くには、トップメニューから **チャート** → **チャートビルダー** を選択すればよい。


![CM58-チャートビルダー.png](https://qiita-image-store.s3.amazonaws.com/0/17749/a2d36d59-5d46-d56a-a846-d97ba6d3a84c.png)

tsquery の使用方法を覚えるには、右上の **?** をクリックしてヘルプ + チュートリアルを見るのが簡単だ。

![CM58-チャートビルダーのヘルプ.png](https://qiita-image-store.s3.amazonaws.com/0/17749/e8537e13-132a-d054-9275-71d57d87e83b.png)

チュートリアルの各クエリの下の **お試しください** をクリックすれば、チャートビルダーが構築できる様々なチャートの例を見ることができる。

以下、チュートリアルに沿って例文を紹介していく。
参考としてtsqueryの例文を掲載しているが、自分で一からクエリを記述する場合はチャートタイプなどを適切に選択しないと同じクエリを使っても同一のチャートを得られるわけではないことに注意すること。

# チュートリアルの紹介

## 単一行チャート

以下の例は、サービスモニタ (Cloudera Manager の監視プロセスの一つ) のファイルディスクリプタの数をチャート化して表示する。

```select fd_open where category = ROLE and roleType = SERVICEMONITOR
```

![CM58-チャートビルダーのサンプル1.png](https://qiita-image-store.s3.amazonaws.com/0/17749/7e280616-bd5e-5446-6ffb-3e8f7a78e91c.png)

メトリクスの種類は、ヘルプにある **測定値のリスト** をクリックすれば確認できる。

![CM58-チャートビルダー-測定値のリスト.png](https://qiita-image-store.s3.amazonaws.com/0/17749/692b108f-1d63-e0d7-f7c6-75e7d226c9d9.png)

## 複数行チャート

以下の例は、サービスモニタとホストモニタ (これも CM 監視プロセスの一つ) のファイルディスクリプタの数を、同じチャートにまとめて表示する。

```select fd_open where category = ROLE and (roleType = SERVICEMONITOR or roleType = HOSTMONITOR)
```

![CM58-チャートビルダーのサンプル2.png](https://qiita-image-store.s3.amazonaws.com/0/17749/33078c60-713c-8681-5a44-aeed50143f52.png)


## 複数のチャート

以下の例は、全ホストの1分 / 5分 / 15分のロードアベレージをホスト毎のチャートとして表示する。これは、「ロードアベレージが最も高いホストはどれか？」という質問に回答するのに役に立つ。

```select load_1, load_5, load_15 where category = HOST
```

![CM58-チャートビルダーのサンプル3.png](https://qiita-image-store.s3.amazonaws.com/0/17749/2dcca9fb-c4c3-1201-7c4c-e22f92436da4.png)

## 積み上げチャート

以下の例は、Cloudera 管理サービス(先述のサービスモニタやホストモニタなど)のCPU使用量を積み上げチャートとして表示する。
これにより、個々のロールのCPU使用率及び合計CPU使用率を簡単に確認することができる。

```select cpu_system_rate + cpu_user_rate where category=ROLE and serviceType = MGMT
```

![CM58-チャートビルダーのサンプル4.png](https://qiita-image-store.s3.amazonaws.com/0/17749/591e454c-fede-ed8c-5b2a-442c9cb518d8.png)


## 積み上げチャートと折れ線チャート

以下の例は、サービスモニタの最大許容メモリと現在のヒープサイズ両方を表示している。
最大許容メモリは折れ線(このチャートでは事実上の直線)、現在のヒープサイズは面グラフとして表示するため、メモリを後どれくらい使うことができるのかを明確に確認することができる。

```select jvm_max_memory_mb, jvm_heap_used_mb where category = ROLE and roleType = SERVICEMONITOR
```

![CM58-チャートビルダーのサンプル5.png](https://qiita-image-store.s3.amazonaws.com/0/17749/87d17827-3994-1d69-c70e-c852ab2a8a4b.png)


## ヒストグラム

以下の例は、ロールごとのGCの数をヒストグラムの形で集計表示する。

```select sum(integral(jvm_gc_rate)) where category = ROLE
```

![CM58-チャートビルダーのサンプル6.png](https://qiita-image-store.s3.amazonaws.com/0/17749/77356063-a466-6869-b43e-a1a68aebb956.png)


## ヒートマップ

以下の例は、全ディスクデバイスの瞬間的なディスク使用量をヒートマップとして表示する。

```select last(utilization) where category = DISK and logicalPartition = false
```

![CM58-チャートビルダーのサンプル7.png](https://qiita-image-store.s3.amazonaws.com/0/17749/ae752c4b-5283-f11b-30ca-74b171d4046a.png)


# ドキュメント

http://www.cloudera.com/documentation/enterprise/latest/topics/cm_dg_tsquery.html