6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

New Relic 使ってみた情報をシェアしよう! by New RelicAdvent Calendar 2022

Day 4

New Relic・Pixieを使いKubernetesを可視化する

Last updated at Posted at 2022-12-03

はじめに

この記事はNew Relic Advent Calendar 2022の4日目の記事です。

New Relic、よく名前は聞くものの使ったことはなく、Advent Calendarをきっかけとしてちょっと触ってみようと思い立ちました。
昨年のアドベントカレンダーで@inductor氏が紹介していたPixieがどんなものか気になるというのもあり、いろいろ見てみようと思います。

試した環境

導入先のKubernetesとして Azure Kubernetes Service(AKS) v1.23.12 を使用しました。

KubernetesにNew Relicを導入する

では早速KubernetesクラスターにNew Relicのエージェントを導入してみましょう。
ブラウザでNew Relicにログインし、Install New Relicから Kubernetes をクリックします。
image.png

Begin installation ボタンをクリックします。
image.png

以下の項目を入力します。

  • We'll send your data to this account: データ送信先のNew Relicアカウントを選択します。1つしかアカウントがなければそのままでOKです。
  • Cluster Name: New Relic上で表示されるKubernetesクラスターの名前を入力します。今回はAKSという名前にしました。
  • Namespace for the integration: New RelicのエージェントがデプロイされるKubernetesのNamespaceを入力します。今回はデフォルトのnewrelicのままとします。

入力が終わったらContinueボタンをクリックします。
image.png

その他の導入オプションを選択する画面が表示されます。
今回はデフォルトのまま進めます。下部のContinueボタンをクリックしましょう。
image.png

次の画面でインストール用の手順が表示されます。

  • New Relic CLIを使ってインストールする(Guided Install)
  • Helm 3でインストールする
  • Manifestを生成する

という3種類の手順があります。今回はHelm 3を選びました。
表示された手順をコピーして実行します。
image.png

"newrelic" has been added to your repositories
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "newrelic" chart repository
Update Complete. ⎈Happy Helming!⎈
namespace/newrelic created
NAME: newrelic-bundle
LAST DEPLOYED: Sat Dec  3 17:19:10 2022
NAMESPACE: newrelic
STATUS: deployed
REVISION: 1
TEST SUITE: None

デプロイされたPodの起動状態を確認してみましょう。

kubectl get pod -n newrelic

全てRunningCompletedになっていれば大丈夫です。

NAME                                                      READY   STATUS      RESTARTS      AGE
kelvin-655b8fdccd-cw9l8                                   1/1     Running     0             2m54s
newrelic-bundle-kube-state-metrics-547fc6d94f-fx7vt       1/1     Running     0             4m21s
newrelic-bundle-newrelic-pixie-fq8mg                      0/1     Completed   0             4m21s
newrelic-bundle-newrelic-prometheus-agent-0               1/1     Running     0             4m21s
newrelic-bundle-nri-kube-events-f8ffcd4db-vfgvt           2/2     Running     0             4m21s
newrelic-bundle-nri-metadata-injection-7f9d67967f-c8xw8   1/1     Running     0             4m21s
newrelic-bundle-nrk8s-ksm-8448567987-tcx6v                2/2     Running     0             4m21s
newrelic-bundle-nrk8s-kubelet-6sk84                       2/2     Running     0             4m21s
newrelic-bundle-nrk8s-kubelet-gdksv                       2/2     Running     0             4m21s
newrelic-bundle-nrk8s-kubelet-xd9gm                       2/2     Running     0             4m21s
pl-nats-0                                                 1/1     Running     0             3m3s
vizier-cloud-connector-fd69bb6cd-ksw6r                    1/1     Running     0             2m54s
vizier-metadata-0                                         1/1     Running     0             2m54s
vizier-pem-nl9mc                                          1/1     Running     0             2m54s
vizier-pem-tsb4f                                          1/1     Running     0             2m54s
vizier-pem-v8nj2                                          1/1     Running     0             2m54s
vizier-query-broker-5c5cc5c684-fcfrl                      1/1     Running     2 (53s ago)   2m54s

New Relicの画面に戻り、Continueボタンをクリックしましょう。
image.png

少し待つとWe are successfully receiving data from your cluster. 🎉と表示されます。

image.png

これでNew Relicの導入は完了です。
Kubernetes cluster explorerのボタンをクリックすると、以下のようなKubernetesを可視化した画面が表示されます。
オシャレですね。カッコいい。
image.png

New RelicでKubernetes用のダッシュボード定義があらかじめ準備されており、ポチポチクリックするだけでKubernetesクラスターの概況をサクッと表示することができます。便利。
image.png

Pixie

PixieCNCFのSandbox Projectとなっているモニタリングツールです。
eBPFを用いた情報収集が特徴で、アプリケーションに手を入れずとも色んな情報を取得することができます。
デフォルトの設定でNew Relicをインストールすると、Pixieも一緒に導入されます。前項で実行したHelmのコマンド内でも--set pixel-chart.enabled=trueというオプションが指定されていました。表示部分もNew RelicのGUIに統合されています。

Pixieでどういった情報を見ることができるか、いくつかピックアップしてご紹介します。

HTTPリクエストの可視化

Kubernetesのサービスに対するリクエストを可視化することができます。
image.png

リクエスト数やエラーレート、レイテンシのグラフ表示も可能です。
image.png

サービス単位だけじゃなく、Pod単位に掘り下げて表示することもできます。
image.png

フレームグラフ

Podの画面ではパフォーマンスのフレームグラフまで表示できます。
image.png

上記のPodはDockerオフィシャルのnginxをそのままデプロイしたもので、Pod側には何も手を加えていません。
プログラム内にエージェントを仕込むことなくこれらの情報が取得できるということですね。

SQLの可視化

インバウンドのリクエストだけでなく、RDBMSに対して発行したSQLの情報を取得することもできます。
以下のように発行したSQLごとのSQL文・レスポンスデータ・レイテンシーを一覧表示できます。
image.png

特定のSQLのレイテンシーの推移をP50/P90/P99のパーセンタイルでグラフ表示することも可能です。
image.png

本機能の対象となるRDBMSはPostgreSQLとMySQLの2つです。

下記の一覧を見る限り、RDBMS以外にもRedis/Kafka/Cassandraの情報取得にも対応しているようです。

おわりに

New Relic(とPixie)を導入するだけで、Kubernetesの様々な情報が簡単に可視化できました。アプリケーションに手を入れずとも情報が取れるというのは便利ですね。

ところで解決できなかった問題が一点。
このページにある図の内容からするとOpenSSLで暗号化された通信内容の取得にも対応してるのかなと思ったのですが、PostgreSQLへの接続時にSSLを無効化しないと情報が取れず…。
設定とか環境の問題かと思いつつアドベントカレンダーの日程的にここでタイムアップ。どなたか詳しい方がツッコミ入れてくれると信じてこのまま投稿します…。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?