3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NewRelicでクローズドなAWSの監視をする

Posted at

はじめに

NewRelic Advend Callenderの記事を書く前に調査を始めたところ、
もっと参考になる記事がサーバワークスさんで作成されていたので、詳細を知りたい方は、末尾の参考文献をチェックしてみてください

社内ネットワークにNewRelicを入れる苦しみ

NewRelicは導入が簡単なツールですが、1つ不満がありました。
それは、インターネットとの接続が必須である点です。

私の所属している会社の社内ネットワークは、AWSとDirectConnectで閉域接続しています。
AWSの上にEC2が数百台稼働していますが、AWSからインターネットには直接出られず、必ずオンプレ側に設けた、プロキシサーバ+Firewallを経由して、インターネットに出ることが求められます。

そのため、下記のような問題が生じています。

  1. EC2にNewRelicInfraAgentを入れるとき、毎回社内プロキシの設定が必要
  2. EC2のDockerの上に、NewRelicのPrivateLocationを作ろうとしても、社内プロキシを超えれない

とくに後者が問題で、NewRelicの外形検査機能(Synthetics)を利用して、社内ネットワークの中のサーバを監視するためには、PrivateLocationが必須なのですが、この問題のために、NewRelicの外形検査機能がずっと利用できませんでした。

解決方法として

公式ページにも記載がありますが、NewRelicとAWSの間では、AWS PrivateLinkの機能を使って、閉域で接続する機能が提供されています。しかし現時点(2024/12/16)では、下記のような問題があります。

NewRelic公式の情報
https://docs.newrelic.com/jp/docs/data-apis/custom-data/aws-privatelink/

  • 北米とEUのAWSリージョンでしか直接利用はできない。
    Newrelic社がそもそも北米とECでしかPrivateLinkを提供していません。そのため、日本などのAWSで閉域接続するためには、TransitGateway(TGW)や、VPCPeeringなどを間に介した複雑な設定が必要です。

  • 作るものが多くて、自宅で簡単に試すということが難しい
    PriavteLink, Route53, EC2, VPC, InternetGateway, NAT Gatewayなどなど、作るものが多く、土日などにスクラップビルドを行って、実装を検証するということが難しいです。

  • CloudFormationテンプレートなど公開されているものもあるが、試すと動作しない
    NewRelicの公式サイトの記事をもとに、CloudFormationテンプレートを公開してくれている方もいるのですが、構築して終わり、となっており、実際に閉域での動作検証をされている事例が見られない
    (実際試してみると、複数のはまりポイントがある)

今回試すこと

  • なるべく手間をかけずに
  • 繰り返し実験できるように、スクラップ&ビルドができる方法で
  • AWS上にNewRelicのプライベート接続環境を作って
  • 実際に疎通を検証する

1.Amazon Q DeveloperでCloudFormation Templateを作る

スクラッチビルドできるようにするには、CloudFormationテンプレートを用意するのが常套手段ですが、
そもそもCloudFormationのJSON/YAML記法は癖が強く、自分で書くのは大変です。
幸い、AWS Management Consoleから、Amazon Q Developerを起動することで、
チャットの中で生成AIに指示をすることで、半自動で、CloudFormationのテンプレートを作成することが可能です

※自動生成されたCfnテンプレートを多少整理してまとめたものを置いておきます。
https://drive.google.com/file/d/1xJPLRWoLDU9IogD_12DiGoSltBsrGMEw/view?usp=sharing

vpcを作る指示
please generate cfn code to create 
- region : us-east 
- az : us-east-1a 
- 1 vpc 
- 1 public subnet 10.0.100.0/24 named "public subnet1" 
- 1 private subnet 10.0.200.0/24 named "private subnet1" 
- 1 private subnet 10.0.201.0/24 named "private subnet for newrelic endpoint" 

うれしいことに、Publicサブネットを指定すると、自動的にInternetGatewayまで作るように、Cfnコードが生成されました。

KeyPairと、EC2を作る指示
please generate cfn code to create 
- 1 key pair "key-for-ec2"
- define input paramater named "Your IP address" - security group that allow access from / to "Your IP address"
- 1 ec2 t2.small named "bastin" on "public subnet1" and assinged 1 public ip address and using keypair named "key-for-ec2"
- 1 ec2 t2.small named "nrcol1" on "private subnet1" and using keypair named "key-for-ec2"
PrivateLinkを作る指示1
please generate cfn code to create 
- And create following private links (source / destination) on "private subnet for newrelic endpoint" 
collector.newrelic.com / destination: com.amazonaws.vpce.us-east-1.vpce-svc-084f1583d1a7afdaf 
insights-collector.newrelic.com / destination: com.amazonaws.vpce.us-east-1.vpce-svc-0ec0af01ab096419c 
metric-api.newrelic.com / destination: com.amazonaws.vpce.us-east-1.vpce-svc-085e8fb87d5493160 
log-api.newrelic.com / destination: com.amazonaws.vpce.us-east-1.vpce-svc-03408b499252a02a7 
trace-api.newrelic.com / com.amazonaws.vpce.us-east-1.vpce-svc-095f88345b701aaae
PrivateLinkを作る指示2
please generate cfn code to create 
- And create following private links (source / destination) on "private subnet for newrelic endpoint" 
cloud-collector.newrelic.com / com.amazonaws.vpce.us-east-1.vpce-svc-0ba6e1d02e7cbbccb 
infra-api.newrelic.com / com.amazonaws.vpce.us-east-1.vpce-svc-007e743510dc46024 
identity-api.newrelic.com 
infrastructure-command-api.newrelic.com / com.amazonaws.vpce.us-east-1.vpce-svc-05adda8aa9c23eaa3 
otlp.nr-data.net / com.amazonaws.vpce.us-east-1.vpce-svc-07d529b1d0f6d417d 
api.newrelic.com / com.amazonaws.vpce.us-east-1.vpce-svc-05adda8aa9c23eaa3 
synthetics-horde.nr-data.net / com.amazonaws.vpce.us-east-1.vpce-svc-05adda8aa9c23eaa3

※Route53については、最大のはまりポイントなので、手動で作ることを推奨します。

2.CloudFormationでAWSを構築する

Amazon Q Developerで生成したCloud Formation Templateを、CloudFormationで実行して、Route53以外の必要なリソースを作成します。

3.EC2にログインして、NewRelicInfraAgentをインストールする

割愛

4.Route53を設定して、PrivateLink経由の通信に切り替える

この記事の一番の肝です。
Route53を作成するときに、2つだけPrivate Hosted Zoneを作っている記事を見るのですが、これは間違いです。

  • 間違いの例
  1. newrelic.com
  2. nr-data.net

正しくは、下記のように6つのPrivate Hosted Zoneを作成する必要があります。

  • 正しい例
  1. newrelic.com
  2. nr-data.net
  3. api.newrelic.com (この中で api.nwerelic.comへのAレコード登録を追加する)
  4. identity-api.newrelic.com(この中で identity-api.newrelic.comへのAレコード登録を追加する)
  5. infrastructure-command-api.newrelic.com(この中で infrastructure-command-api.newrelic.comへのAレコード登録を追加する)
  6. synthetics-horde.nr-data.net(この中で synthetics-horde.nr-data.netへのAレコード登録を追加する)

※これは、NewRelicさんの公式記事にも、一応記載はあるのですが、あまりにもあっさり書かれていて、わからないと思うので、試そうとすると必ず、はまると思います。

公式記事の抜粋
api.newrelic.com 、 identity-api.newrelic.com 、 infrastructure-command-api.newrelic.com 、およびsynthetics-horde.nr-data.netのエンドポイント サービスには、関連付けられた DNS プライベート名がありません。
これらのサービスへのアクセスを構成するには、各サービス エンドポイントへの PrivateLink 接続を作成します。
上記のホスト名ごとに、対応するプライベート ホスト ゾーン (PHZ) を作成します。

5. Privatelocationを構築する

こちらについては、すいませんが時間が足りませんでした。。。後日別途記事を作れればとおもいます

参考文献

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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?