NGINX Sprint 2022で、私たちは、NGINXオープンソースプロジェクトの管理方法とコミュニティとの連携方法を刷新することをお約束しました。その一環として、個々のNGINXデプロイメントを管理し、可観測性と設定APIを提供するコンパニオンソフトウェアのデーモン「NGINX Agent」を近日リリースすると発表しました。このたび、その約束を果たし、Apache 2ライセンスの下でNGINX Agentを公開できることをうれしく思います。
F5 NGINXは、アプリケーションのデプロイと管理のあらゆる側面に対応するエコシステムの構築を目指しています。NGINX Agentは、開発チームとプラットフォーム運用チームに、NGINXインスタンスの構成、監視、管理のためのきめ細かな制御機能と追加機能を提供することで、このビジョンの実現において重要な役割を果たします。
NGINX Agentの機能
NGINX Agentは、NGINX Open SourceまたはNGINX Plusインスタンスとともにデプロイできる軽量デーモンです。特に、NGINX Agentでは、NGINX Open Sourceでは提供されていない次のような機能を利用できます。
- NGINXインスタンスのレポートと監視
NGINX Agentは、インフラストラクチャの問題の検出、調査、修正に使用できる拡張メトリクスセットにより、NGINX Open SourceおよびNGINX Plusインスタンスの可視性を高めます。オペレーティングシステムのメトリクスに加え、NGINX AgentはNGINXのアクセスログとエラーログからメトリクスを自動的に収集します。NGINX Plusインスタンスの場合は、RESTful NGINX Plus APIからもメトリクスを収集します。また、NGINX Agentは、NGINXインスタンスで発生する主要なイベント群についてもレポートします。これにより、NGINXインスタンスのパフォーマンス、健全性、使用状況を詳細に把握できます。この情報は、Prometheus形式でエクスポートし、Grafanaなどのサードパーティ製ツールで可視化できます。 - NGINX構成のリモート管理
NGINX Agentは、NGINXインスタンスにNGINX構成をリモートで適用するためのHTTP(REST)およびHTTP/2(gRPC)インターフェースを提供します。APIを介してインスタンスの構成をリモートで管理することもできます。NGINX構成の自動化とリモート展開により、特に多数のインスタンスを管理する場合に、運用上の負担を大幅に軽減し、時間を節約できます。 - 管理プレーンの統合
ビジネスの規模が拡大するにつれて、インフラストラクチャの導入と管理は複雑になります。NGINXコミュニティが、スケーリングとデリバリーに関する課題を率直に共有してくださることを嬉しく思います。NGINX Agentのロードマップは、こうした課題への対応を目指しています。NGINX Agentを使用すると、NGINXインスタンスと連携する独自の管理ソリューションと、エンタープライズグレードのデータプレーン管理機能を備えたNGINX Management Suiteの両方を通じて、お客さまの環境内のNGINXを制御、管理する高度なメカニズムを開発できます。
NGINX Agentの仕組み
NGINX AgentはNGINXインスタンスと並行して動作し、コントロールプレーンと管理プレーンの両方からインスタンスをリモート操作するためのRESTおよびgRPCインターフェースを提供します。これにより、高度な監視機能と自動化機能を構築できます。

NGINX Agentをオープンソース化する理由
NGINX Agentをオープンソース化する目的はいくつかあります。
NGINX Open Sourceを補完
コミュニティがNGINX Open Sourceをより多くのユースケースで、はるかに柔軟に活用できるようにしたいと考えています。NGINX Agentをオープンソース化することで、NGINX Open Sourceに現在不足している一部の機能を補えるほか、NGINX Open Sourceを拡張し、コミュニティへ機能をより迅速に提供するためのまったく新しい道が開かれます。NGINX Open Sourceインスタンスと併せてインストールすることで、RESTまたはgRPCインターフェースを使用してNGINXの設定を管理したり、NGINXのイベントやメトリクスから高度な可視化を作成したりできます。
透明性を重視する
業界をリードするオープンソースソフトウェアをコミュニティに提供し、ビジネスを支える拡張性とレジリエンスに優れたインフラストラクチャの構築を可能にしていることを、私たちは誇りに思っています。この成功を支える中核的な柱の1つが、オープンソースコミュニティからNGINXソフトウェアに寄せられる信頼です。NGINX Agentの設計では、NGINXインフラストラクチャ内でどのデータをどのように扱うかについて、完全なオープン性と透明性を確保することを理念としています。コミュニティに対して徹底した透明性を保ち、皆さまに喜ばれる機能を提供することが、オープンソースのビジョンを実現するうえで重要な原動力になると考えています。
NGINXを開発者にとって使いやすく
Sprintで掲げたもう1つの約束である「開発者エクスペリエンスの最適化」に沿って、NGINX Agentは、より多くのユーザーにNGINXを魅力的だと感じていただけるような制御機能と各種機能を提供し、NGINX製品の価値を実感するまでの時間を短縮します。NGINX Agentはきめ細かな制御機能を提供するため、開発者は自社環境でのNGINXの管理、デプロイ、設定について適切に判断できます。F5は、開発者が現在利用している環境に対応できるよう、コントロールプレーンと管理プレーンでNGINX製品群と連携するか、独自のプレーンを導入できるようにすることを目指しています。
NGINX Agentを使い始める
NGINX Agentは当初、NGINX Management Suite Instance Managerが環境内のすべてのNGINXインスタンスを検出するために使用するエージェントとして開発されました。今後もこの機能を担いますが、バージョン2.17.0でオープンソース化したことで、より幅広いNGINXオープンソースコミュニティに役立つ独立したプロジェクトとして歩み始めました。こうした経緯から、NGINX Agentには今後もさまざまな改善が必要だと考えています。まずはGitHubのNGINX Agentリポジトリにアクセスし、貢献方法、提案の方法、問題の報告方法をご確認ください。
関連するブログ記事
チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。
AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。
JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。
F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。
NGINX PlusによるAWS Auto Scalingグループの負荷分散
新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります