この様な場合、New Relicエージェントを用いて、主に2つの方法で、この様な煩わしさを解決することができるようになります。1つ目は、監視対象(エンティティー)にタグづけを行うことです。そして、2つ目は、エンティティーに導入されているエージェント経由でcustom attributeの設定を行うことになります。

この2つの方法ですが、あまり違いが無い様に思えますが、インフラという観点では、うまく使い分けることで、より効果的に固有情報をNew Relic上に設定することができるようになります。例えば、システム構築プロジェクトで、ミドルウェアやDBの接続性を確認するということがあるかと思いますが、ミドルウェアやDBの複数のコンテナイメージを単一サーバ上に展開した確認するといったことがあるかと思います。この場合に、1つのInfrastructureエージェントを導入することで、これらの稼働している複数のコンテナを検出し、コンテナとしてのエンティティとホストのエンティティをNew Relic上に追加します。この際に、エンティティ固有の値は1つ目の手法のタグづけを適用し、全体で共通している情報を2つ目の手法のcustom attributeで設定して頂くといった使い分けを行なって下さい。

 

アプリケーションのcustom attributeについては、こちらのブログをご参照下さい。取得したcustom attributeに対してNRQLを用いた可視化についても触れています。

早速、2つ目の手法であるcustom attributeの設定方法を確認してみましょう。

設定方法は、Infrastructureエージェントの設定ファイルであるnewrelic-infra.ymlファイルに直接反映したい固有情報をcustom_attributes変数を用いて記載頂く形となります。

 

例えば、Infrastructureエージェントを導入すると、以下の内容のnewrelic-infra.ymlファイルが作成されます。

enable_process_metrics: true
status_server_enabled: true
status_server_port: XXXXX
license_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

この内容に対して、以下の様に変更します。custom_attributes:以下の部分が差分となります。

enable_process_metrics: true
status_server_enabled: true
status_server_port: XXXXX
license_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

custom_attributes:
 max_memory_size: 300000000
 my_middle: xyz-billing

custom attributesを設定後、Infrastructureエージェントを再起動することで、設定が反映されます。

以下は、コンテナに関する情報を格納するContainerSampleイベントスペースに追加されたcustom attributeをData explorer上で参照していたものとなります。

取得された値は、NRQLを用いてチャート化することも可能です。補足として、設定した値も文字列として取り込まれているので、numeric()関数を活用してください。

インフラに関するcustom attributeの設定は非常に簡単に行えることがご理解頂けたかと思います。是非、独自の情報を加えて、より効果的なインフラの運用監視を実現して下さい。