SignalFxでリソースのモニタリングをやってみる。

#SignalFXとは
realtimeでの各サーバ、マイクロサービスのモニタリング、アプリケーションのトレースなんかをやってくれるツールです。
最近、splunkに買収されたみたいなので、metricsストアに組み込まれていくんですかね、、、

下の図で見ればなんとなくわかりますね。ApplicationのMetrics,Trace、Dockerやk8sのリソースをSingalFx
に集めて、Debug / Tracing /Alert / Visualizationもやってくれるみたいっすね。

アプリケーションのトレーシングは全部取得してくれる(他製品のようにサンプリングではない）、metricsは1秒単位で取得できるらしいので、その辺が強い感じですかね。

https://www.signalfx.com/

<img width="1287" alt="Screen Shot 2019-11-05 at 10.56.31 AM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/da924dd7-0643-c53f-7f92-cad790c32d4c.jpeg">


## どうやってデータを収集してる？
データの収集については、基本はSignalFx smaer Agent(Agentベース)だけど、その他多くのpluginが用意されてるみたいです。AWS,GCP,AzureはもちろんSparkやCassandra,k8sもpluginが用意されてるみたい。


<img width="1680" alt="Screen Shot 2019-11-05 at 10.40.26 AM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/68d8dbfe-970f-1d0d-cd3b-f357cab82906.jpeg">

Timeseriesのデータとmetadataを別々に取得するアーキテクチャーみたいっすね。

<img width="1148" alt="Screen Shot 2019-11-07 at 4.40.19 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/2fa37e43-ecac-1b46-edd4-d90bcddcc735.jpeg">

Traceデータについては、Trace用のデータに入れるみたい。


##とりあえずやってみましょう。

###SingnaFxに登録
ホームページの右上に14dayのFree trailがあるので、こっから登録しましょう。

https://www.signalfx.com/


### Agentのインストール方法
SignalFxにログイン後、menubarのIntegrationから、SingalFx Smart Agentを選択します。

そうすると、インストラクションがでてくるので、その通りに実行します。
今時のモニタリングサービスと一緒ですね。コピペでagentインストール完了です。

<img width="992" alt="Screen Shot 2019-11-05 at 11.11.57 AM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/2fa9f6cf-a74b-485c-02f9-6c58c030bf71.jpeg">


インストール後、起動のチェックをかけます。
statusの他に、config,endpointで情報を取れるみたいです。

```bash
root@ip-172-31-22-149:~# sudo signalfx-agent status
SignalFx Agent version:           4.13.0
Agent uptime:                     26m27s
Observers active:                 host
Active Monitors:                  10
Configured Monitors:              10
Discovered Endpoint Count:        9
Bad Monitor Config:               None
Global Dimensions:                {host: ip-172-31-22-149, AWSUniqueId: i-044c2ea8e77605846_ap-northeast-1_935995623716}
Datapoints sent (last minute):    246
Datapoints failed (last minute):  0
Events Sent (last minute):        6
Trace Spans Sent (last minute):   0

Additional status commands:

signalfx-agent status config - show resolved config in use by agent
signalfx-agent status endpoints - show discovered endpoints
signalfx-agent status monitors - show active monitors
signalfx-agent status all - show everything
root@ip-172-31-22-149:~#
```

また、実際のConfigファイル自体は、yamlで生成されていて、monitorの箇所で、なにをmonitoringするかを定義しています。

```bash
root@ip-172-31-22-149:~# cat /etc/signalfx/agent.yaml
---
# *Required* The access token for the org that you wish to send metrics to.
signalFxAccessToken: {"#from": "/etc/signalfx/token"}
ingestUrl: {"#from": "/etc/signalfx/ingest_url", default: "https://ingest.signalfx.com"}
apiUrl: {"#from": "/etc/signalfx/api_url", default: "https://api.signalfx.com"}
cluster: {"#from": "/etc/signalfx/cluster", optional: true}

intervalSeconds: 10

logging:
  # Valid values are 'debug', 'info', 'warning', and 'error'
  level: info

# observers are what discover running services in the environment
observers:
  - type: host

monitors:
  - {"#from": "/etc/signalfx/monitors/*.yaml", flatten: true, optional: true}
  - type: host-metadata
  - type: collectd/cpu
  - type: collectd/cpufreq
  - type: collectd/df
  - type: collectd/disk
  - type: collectd/interface
  - type: collectd/load
  - type: collectd/memory
  - type: collectd/signalfx-metadata
  - type: collectd/vmem

enableBuiltInFiltering: true
root@ip-172-31-22-149:~#
```

metricsタブには取得する/できるMetricsの一覧が書かれているので、参考にするとよいかも。

<img width="895" alt="Screen Shot 2019-11-05 at 11.18.31 AM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/e6f0b264-d967-56ee-1073-e619436affea.jpeg">


##モニタリングの確認をしてみる
Signal Fxのmenu barにあるInfrastructureからHosts(SmartAgent/collectd)を選択してみると、hostの簡易一覧が表示される。

<img width="1680" alt="Screen Shot 2019-11-05 at 11.20.40 AM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/4839a6a7-c447-0eb3-5c98-eeb2823f1802.jpeg">

### ホストでドリルダウン
基本的に必要な項目は自動で取得できている。

<img width="1660" alt="Screen Shot 2019-11-05 at 11.23.13 AM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/6e75059d-42ca-cbf1-ea36-b2d7516744b7.jpeg">

###リソースでドリルダウン
リソースの文字をチェックすると、さらにドリルダウンできるようになっている。

<img width="1680" alt="Screen Shot 2019-11-05 at 11.30.55 AM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/e1c04dc5-c1eb-8c6a-6c7f-097c5fd86f98.jpeg">

F(x)の箇所を選択すると、集計の方法(sum,avg,medianなどを選択可能)

<img width="480" alt="Screen Shot 2019-11-05 at 11.43.36 AM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/6bb85eb4-f411-6853-d509-661f208f72c2.jpeg">

Visualizationも左上のアイコンをクリックすれば、好きなように変更可能。

<img width="1680" alt="Screen Shot 2019-11-05 at 11.32.33 AM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/5f2049e3-2319-cb6e-2db8-2f28cd38620f.jpeg">

<img width="1680" alt="Screen Shot 2019-11-05 at 11.55.47 AM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/9b0dfb22-b4e3-f1ef-3087-449be8462af4.jpeg">

###Dashboard
defaultのdashboardを確認してみる。左上のDashboard → Infrastructureを選択すると
全体のリソースをまとめた画面が表示される。

<img width="1680" alt="Screen Shot 2019-11-05 at 11.57.02 AM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/f7b21713-d2aa-c101-55b2-18bcc681d47d.jpeg">

###Dashboardを自作してみる
メニューバーの右上にある+のアイコンをクリックして、dashboardをクリック。

<img width="187" alt="Screen Shot 2019-11-05 at 12.04.16 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/d19a0764-780a-826f-0e02-9e184f941fc8.jpeg">

右側にmetrics(Browse Metrics Bar)をクリックして表示したいmetricsをそれぞれ埋め込んでいきます。

<img width="1680" alt="Screen Shot 2019-11-05 at 12.05.30 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/cf6df896-4cf8-a0f7-928f-4fe41c73971b.jpeg">

### Sample Dashboard
サンプルのリアルタイムにデータを取得するdashboardをみてみると、結構レスポンスも早いし、なんかよさそうっすね。

<img width="1680" alt="Screen Shot 2019-11-05 at 1.31.58 PM.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190656/8a8d3e86-b73d-f654-3337-91905c6775fb.jpeg">



##さいごに
まずはこんな感じで基本的な使い方をまとめてみました。
あとで、awsや、その他のミドルウェアとの連携もやってみますねー。