agent

agent

简化NGINX实例管理与监控

NGINX Agent作为NGINX实例的配套工具,支持远程配置管理、性能指标收集和事件通知。它通过gRPC和REST接口与Linux工具协同工作,适用于各种Linux发行版和部署环境。NGINX Agent具备日志轮转功能,支持Docker镜像构建,为管理大规模NGINX部署提供了灵活高效的解决方案。

NGINX Agent配置管理指标收集事件通知API接口Github开源项目

GitHub go.mod Go 版本 GitHub 发布版本 GitHub 许可证 欢迎贡献 Slack

NGINX Agent 横幅

NGINX Agent 是 NGINX 开源版或 NGINX Plus 实例的配套守护程序。它可以实现:

  • 远程管理 NGINX 配置
  • 收集和报告实时 NGINX 性能和操作系统指标
  • NGINX 事件通知

Grafana 仪表板显示 NGINX Agent 报告的指标 Grafana 仪表板显示 NGINX Agent 报告的指标

目录

工作原理

NGINX Agent 作为一个伴随进程运行在运行 NGINX 的系统上。它为配置管理和从 NGINX 进程和操作系统收集指标提供 gRPC 和 REST 接口。NGINX Agent 使用常见的 Linux 工具实现远程与 NGINX 交互,并解锁构建复杂监控和控制系统的能力,可以管理大量 NGINX 实例。

NGINX Agent 工作原理

配置管理

NGINX Agent 提供 API 接口用于提交更新的配置文件。收到新文件后,它会检查 nginx -V 的输出以确定现有配置的位置。然后使用 nginx -t 验证新配置,在应用之前通过向 NGINX 主进程发送 HUP 信号。

收集指标

NGINX Agent 与 NGINX 进程信息交互并解析 NGINX 日志以计算和报告指标。与 NGINX Plus 交互时,NGINX Agent 从 NGINX Plus API 获取相关信息。报告的指标可以被 Prometheus 聚合并使用 Grafana 等工具可视化。

NGINX Agent 保持与 NGINX Plus API 的连接开放,并根据收集间隔进行查询。这个连接会在指标中报告,根据报告阶段的不同,该连接可能显示为空闲或活跃。

NGINX 开源版

当与 NGINX 开源版实例一起运行时,NGINX Agent 要求打开 NGINX 访问和错误日志,并包含所有默认变量。

NGINX Plus

为了使 NGINX Agent 能够与 NGINX Plus 实例正常工作,需要在该实例的 nginx.conf 中配置 API。详情请参阅实例指标概览。一旦 NGINX Plus 配置了 /api/ 端点,NGINX Agent 将在启动时自动使用它。

事件通知

NGINX Agent 允许 gRPC 连接的控制系统为特定事件注册监听器。当 NGINX Agent 发送相关系统信号时,控制机制会被调用。通知的来源可以是 NGINX 实例或 NGINX Agent 本身。以下是当前支持的事件列表:

事件描述
AGENT_START_MESSAGENGINX Agent 进程启动
AGENT_STOP_MESSAGENGINX Agent 进程停止
NGINX_FOUND_MESSAGE系统上检测到 NGINX 主进程
NGINX_STOP_MESSAGENGINX 主进程停止
NGINX_RELOAD_SUCCESS_MESSAGENGINX 主进程成功重新加载
NGINX_RELOAD_FAILED_MESSAGENGINX 主进程重新加载失败
NGINX_WORKER_START_MESSAGE新的 NGINX 工作进程启动
NGINX_WORKER_STOP_MESSAGENGINX 工作进程停止
CONFIG_APPLY_SUCCESS_MESSAGE成功应用新的 NGINX 配置
CONFIG_APPLY_FAILURE_MESSAGE应用新的 NGINX 配置失败
CONFIG_ROLLBACK_SUCCESS_MESSAGE成功回滚 NGINX 配置
CONFIG_ROLLBACK_FAILURE_MESSAGE回滚 NGINX 配置失败

安装

安装 NGINX

NGINX Agent 直接与安装在同一系统上的 NGINX 服务器进程交互。如果您还没有安装,请按照以下步骤安装 NGINX 开源版NGINX Plus。安装完成后,确保 NGINX 实例正在运行。

从软件包文件安装 NGINX Agent

要在您的系统上安装 NGINX Agent,请前往 Releases 下载最新的适用于您的操作系统发行版和 CPU 架构的软件包。

使用系统的包管理器安装软件包。以下是一些示例:

Debian、Ubuntu 和其他使用 dpkg 包管理器的发行版。

sudo dpkg -i nginx-agent-<agent-version>.deb

RHEL、CentOS RHEL、Amazon Linux、Oracle Linux 和其他使用 yum 包管理器的发行版

sudo yum localinstall nginx-agent-<agent-version>.rpm

RHEL 和其他使用 rpm 包管理器的发行版

sudo rpm -i nginx-agent-<agent-version>.rpm

Alpine Linux

sudo apk add nginx-agent-<agent-version>.apk

FreeBSD

sudo pkg add nginx-agent-<agent-version>.pkg

启动和启用开机自启

要在使用 systemd 的系统上启动 NGINX Agent,运行以下命令:

sudo systemctl start nginx-agent

要启用 NGINX Agent 在开机时自动启动,运行以下命令:

sudo systemctl enable nginx-agent

在 Alpine Linux 上,使用以下命令启动代理:

sudo service nginx-agent start

要在 Alpine Linux 上启用代理在开机时自动启动,运行以下命令:

sudo rc-update add nginx-agent default

日志记录

NGINX Agent 使用格式化的日志文件来收集指标。扩展日志格式和实例数量也会增加 NGINX Agent 日志文件的大小。我们建议为 /var/log/nginx-agent 添加一个单独的分区。如果没有日志轮转或存储在单独的分区上,日志文件可能会占用所有可用磁盘空间,导致系统对某些服务无响应。

日志轮转

默认情况下,NGINX Agent 使用 logrotate 每天轮转日志,配置如下:

/var/log/nginx-agent/*.log { # 每天轮转日志文件 daily # 如果日志文件大小超过 5M,则进行轮转 size 5M # 创建副本后截断原始日志文件 copytruncate # 删除超过 10 天的轮转日志 maxage 10 # 日志文件轮转 10 次后被删除 rotate 10 # 压缩旧的日志文件 compress # 如果日志文件丢失,将继续处理下一个文件,不发出错误消息 missingok # 如果日志为空,则不进行轮转 notifempty }

如果需要更改默认配置,可以在此处更新文件:/etc/logrotate.d/nginx-agent

有关 logrotate 配置的更多详细信息,请参阅 Logrotate 配置选项

构建 Docker 镜像

要构建包含最新 NGINX Agent、最新主线版本的 NGINX OSS 和最新 Alpine 的镜像,运行以下命令:

make official-oss-image

要构建包含最新 NGINX Agent、最新稳定版本的 NGINX OSS 和最新 Alpine 的镜像,运行以下命令:

make official-oss-stable-image

有关如何运行 NGINX Agent 容器以及如何构建使用 NGINX Plus 而不是 NGINX OSS 的镜像的更多信息,请参阅 Docker 镜像

NGINX Agent 入门

按照以下步骤配置和运行 NGINX Agent 以及一个模拟接口("控制平面"),NGINX Agent 将向其报告。

安装 NGINX

按照安装部分的步骤下载、安装和运行 NGINX。

克隆 NGINX Agent 仓库

使用您喜欢的方法,将 NGINX Agent 仓库克隆到您的开发目录中。如需额外帮助,请参阅 克隆 GitHub 仓库

安装 Go

NGINX Agent 和模拟控制平面是用 Go 编写的。需要 Go 1.22 或更高版本才能从源代码目录构建和运行任一应用程序。您可以从官方网站下载 Go

启动 gRPC 模拟控制平面

通过在 agent 源代码根目录运行以下命令来启动模拟控制平面:

go run sdk/examples/server.go

# 命令输出
INFO[0000] http listening at 54790 # 模拟控制平面端口
INFO[0000] gRPC listening at 54789 # NGINX Agent 将报告的 gRPC 控制平面端口

NGINX Agent 设置

如果 /etc/nginx-agent/ 目录不存在,请创建它,并从项目根目录将 nginx-agent.conf 文件复制到其中。

sudo mkdir /etc/nginx-agent
sudo cp <project_root_directory>/nginx-agent.conf /etc/nginx-agent/

/etc/nginx-agent/ 目录中创建 agent-dynamic.conf 文件,这是 NGINX Agent 运行所必需的。

sudo touch /var/lib/nginx-agent/agent-dynamic.conf

启用 gRPC 接口

将以下设置添加到 /etc/nginx-agent/nginx-agent.conf

server: host: 127.0.0.1 # 模拟控制平面主机 grpcPort: 54789 # 模拟控制平面 gRPC 端口 # gRPC TLS 选项 - 不建议在生产环境中禁用 TLS tls: enable: false skip_verify: true

有关更多信息,请参阅 Agent 协议定义和文档

启用 REST 接口

可以通过验证 /etc/nginx-agent/nginx-agent.conf 文件中是否存在以下行来公开 NGINX Agent REST 接口:

api: # 设置 API 地址以允许远程管理 host: 127.0.0.1 # 将此值设置为安全的端口号以防止信息泄露 port: 8038 # REST TLS 参数 cert: "<TLS-CERTIFICATE>.crt" key: "<PRIVATE-KEY>.key"

模拟控制平面可以使用 gRPC 或 REST 协议与 NGINX Agent 通信。

启动 Swagger UI

Swagger UI 需要安装 goswagger。有关安装 goswagger 的其他帮助,请参阅 goswagger 安装说明

要启动 REST 接口的 Swagger UI,运行以下命令:

make launch-swagger-ui

打开 Web 浏览器,在 http://localhost:8082/docs 查看 Swagger UI。

扩展

扩展是一段代码,对 NGINX Agent 负责的主要功能不是至关重要的。这通常超出了管理 NGINX 配置和报告 NGINX 指标的范围。

要启用扩展,必须将其添加到 /etc/nginx-agent/nginx-agent.conf 中的扩展列表中。 以下是启用高级指标扩展的示例:

extensions: - advanced-metrics

启动 NGINX Agent

如果已经运行,重新启动 NGINX Agent 以应用新配置。或者,如果 NGINX Agent 未运行,您可以从源代码根目录运行它。

打开另一个终端窗口并启动 NGINX Agent。从 agent 源代码根目录发出以下命令。

sudo make run

# 命令输出片段
WARN[0000] Log level is info
INFO[0000] setting displayName to XXX
INFO[0000] NGINX Agent at with pid 12345, clientID=XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX name=XXX
INFO[0000] NginxBinary initializing
INFO[0000] Commander initializing
INFO[0000] Comms initializing
INFO[0000] OneTimeRegistration initializing
INFO[0000] Registering XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX
INFO[0000] Metrics initializing
INFO[0000] MetricsThrottle initializing
INFO[0000] DataPlaneStatus initializing
INFO[0000] MetricsThrottle waiting for report ready
INFO[0000] Metrics waiting for handshake to be completed
INFO[0000] ProcessWatcher initializing
INFO[0000] Extensions initializing
INFO[0000] FileWatcher initializing
INFO[0000] FileWatchThrottle initializing
INFO[0001] Events initializing
INFO[0001] OneTimeRegistration completed

打开 Web 浏览器,在 http://localhost:54790 查看模拟控制平面。Web 界面将显示以下链接:

  • registered - 显示数据平面的注册信息
  • nginxes - 列出数据平面上的 NGINX 实例
  • configs - 显示发送到管理平面的 NGINX 配置的 protobuf 负载
  • configs/chunked - 显示发送到管理平面的拆分负载
  • configs/raw - 显示实际配置,如同它存在于数据平面上
  • metrics - 显示发送到管理平面的指标缓冲区(类似于将在 REST API 中返回的内容)

有关更多 NGINX Agent 用例,请参考 https://github.com/nginx/agent/tree/main/sdk/examples

开发环境设置

选择操作系统

虽然大多数Linux或FreeBSD操作系统都可以用于为NGINX Agent项目做贡献,但以下步骤是为Ubuntu设计的。Ubuntu预装了构建和运行NGINX Agent所需的大多数库,是NGINX Agent开发的推荐平台。

安装NGINX

按照安装部分的步骤下载并安装NGINX。安装完成后,确保NGINX实例正在运行。

克隆NGINX Agent仓库

按照NGINX Agent入门部分的步骤克隆NGINX Agent仓库

安装先决条件包

根据操作系统发行版,可能需要安装以下包以构建NGINX Agent。

切换到NGINX Agent源目录:

cd <开发目录路径>/agent

安装Make:

sudo apt install make

NGINX Agent是用Go编写的。您可以下载Go并按照同一页面上的安装说明操作,或者运行:

sudo apt install golang-go

安装Protoc:

sudo apt install -y protobuf-compiler

安装NGINX Agent工具和依赖项:

在开始开发NGINX Agent之前,务必下载并安装NGINX Agent所需的必要工具和依赖项。您可以通过运行以下make命令来完成此操作:

make install-tools

从源代码构建NGINX Agent

运行以下命令来构建和运行NGINX Agent:

make build
sudo make run

NGINX Agent技术规格

支持的发行版

NGINX Agent可以在大多数环境中运行。有关支持的发行版列表,请参阅NGINX技术规格指南。

支持的部署环境

NGINX Agent可以部署在以下环境中:

  • 裸机
  • 容器
  • 公有云:AWS、Google Cloud Platform和Microsoft Azure
  • 虚拟机

支持的NGINX版本

NGINX Agent可与所有受支持的NGINX开源版本和NGINX Plus版本配合使用。

规模建议

NGINX Agent的最低系统规模建议:

CPU内存网络存储
1个CPU核心1 GB RAM1 GbE NIC20 GB

社区

贡献

通过贡献参与项目!请查看我们的贡献指南了解详情。

更新日志

查看我们的发布页面以跟踪更新。

许可证

Apache许可证,版本2.0

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多