0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

New Relic Flexを活用し、LinuxのCPUコアごとの使用率を可視化する

0
Posted at

はじめに

Linuxサーバを運用していて「特定のコアだけに負荷が偏っていないか?」「シングルスレッドプロセスの処理が頭打ちになっていないか」を確認したいシーンは少なくないかと思います。しかし、New Relic の標準 Infrastructure Agent ではコアごとのメトリクスが収集されません。

今回は、エージェントの拡張機能である New Relic Flex を使い、mpstat の出力をパースして New Relic に送り込み、コアごとの時系列グラフを作成する方法をご紹介します。

New Relic Flex とは

New Relic FlexはInfrastructure Agentにバンドルされる形で提供されており、独自のイベントやメトリクスを定期的に収集し、New Relicに送信することができます。設定ファイルのフォーマットに合わせることで、煩雑な処理を書かずに簡単に情報を送信できます。

監視設定

確認環境

Amazon Linux 2
Infrastructure Agent ver. 1.72.8

Flex 設定ファイル

/etc/newrelic-infra/integrations.d/cpu-core-flex.yml を作成し、以下の設定を投入します。

integrations:
  - name: nri-flex
    config:
      name: customCpuCoreMetrics
      apis:
        - name: CpuStats
          commands:
            - run: |
                S_TIME_FORMAT=24h LANG=C mpstat -P ALL 1 1 | awk '/^[0-9]/ && $2 ~ /^[0-9]+$/ {
                  s = sprintf("{\"cpu_id\":\"cpu%s\",\"cpu_usr\":%s,\"cpu_nice\":%s,\"cpu_sys\":%s,\"cpu_iowait\":%s,\"cpu_irq\":%s,\"cpu_soft\":%s,\"cpu_steal\":%s,\"cpu_guest\":%s,\"cpu_gnice\":%s,\"cpu_idle\":%s}", $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12);
                  if (count++) { printf "," }
                  printf s
                }
                BEGIN { printf "[" }
                END { print "]" }'

NRQLで可視化する

設定ファイルにて設定を行いデータが届いたら、NRQLで可視化します。
ポイントは、New RelicのUnit: Percentageに対応させるため、計算結果を / 100 することです。

FROM CpuStatsSample 
SELECT average(100 - cpu_idle) / 100 
FACET cpu_id 
WHERE cpu_id != 'cpuall' 
TIMESERIES

クエリ結果が正しく表示されたら、右列のCustomize this visualizationからUnitを選択し、Percentageを指定しましょう。

cpu_by_core_graph.png

まとめ

標準機能で足りないときは、Flexを使い一工夫することで監視要件を満たすことができるケースもあります。
今回はAmazon Linux 2という限定した環境での対応だったためmpstatを利用しましたが、/proc/配下を参照することでより詳細な情報を得られる場合もあります。実装の手間やデータの取り回しの容易さを天秤にかけつつ、活用いただけますと幸いです。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?