自动注册代理

代理自动注册省略了从 NOM UI 手动获取令牌信息,如 手动注册代理 中所述。相反,提供 NOM 服务器的最小配置以允许代理连接并自动注册。授权通过双向身份验证授予。

自动注册代理在自动化环境中很有用,例如 Neo4j 实例的 Kubernetes 集群,其中实例是动态创建和管理的。

运行代理

要运行自动注册代理,需要提供一个额外的命令行选项 -s,它是 --self-register 的缩写。

作为服务运行

以服务模式运行代理意味着代理进程在后台运行并监控实例。代理生命周期由操作系统服务管理器处理。最佳实践是以服务模式运行代理。

Linux (systemd)

服务安装

agent service -s install

设置参数

运行以下命令以编辑服务

systemctl edit neo4j-ops-manager-agent.service

通过设置 Environment 或 EnvironmentFile 选项设置环境变量。例如,使用 Environment 选项,覆盖文件可能如下所示

[Service]
Environment="CONFIG_SERVER_GRPC_ADDRESS=<server grpc address>"
Environment="CONFIG_SERVER_HTTP_ADDRESS=<server http address>"
Environment="CONFIG_TLS_TRUSTED_CERTS=</path/to/trusted/certs/pem/file>"
Environment="CONFIG_LOG_FILE=</path/to/nom-agent/log.txt>"
Environment="CONFIG_INSTANCE_1_NAME=<instance name>"
Environment="CONFIG_INSTANCE_1_BOLT_URI=<bolt uri of the local instance>"
Environment="CONFIG_INSTANCE_1_BOLT_USERNAME=<local instance user name>"
Environment="CONFIG_INSTANCE_1_BOLT_PASSWORD=<local instance password>"
Environment="CONFIG_INSTANCE_1_QUERY_LOG_PORT=<an available port>"
Environment="CONFIG_INSTANCE_1_LOG_CONFIG_PATH=<path to server-logs.xml>"
Environment="CONFIG_TLS_CLIENT_CERT=<path to agent TLS cert>"
Environment="CONFIG_TLS_CLIENT_KEY=<path to agent TLS key>"

请参考选项的完整列表 此处

启动和停止

要启动服务

systemctl start neo4j-ops-manager-agent.service

要停止服务

systemctl stop neo4j-ops-manager-agent.service

日志可通过 journalctl 获取,方法是

journalctl -u neo4j-ops-manager-agent

Windows

服务安装

agent service -s install

设置参数

  • 打开注册表编辑器并导航到 HKLM\SYSTEM\CurrentControlSet\Services\neo4j-ops-manager-agent

  • 创建一个名为 EnvironmentREG_MULTI_SZ 类型的键,并在每行添加您的环境变量,例如

    CONFIG_SERVER_GRPC_ADDRESS=<server grpc address>
    CONFIG_SERVER_HTTP_ADDRESS=<server http address>
    CONFIG_TLS_TRUSTED_CERTS=</path/to/the/trusted/certs/pem>
    CONFIG_LOG_FILE=</path/to/nom-agent/log.txt>
    CONFIG_INSTANCE_1_NAME=<instance name>
    CONFIG_INSTANCE_1_BOLT_URI=<bolt uri of the local instance>
    CONFIG_INSTANCE_1_BOLT_USERNAME=<local instance user name>
    CONFIG_INSTANCE_1_BOLT_PASSWORD=<local instance password>
    CONFIG_INSTANCE_1_QUERY_LOG_PORT=<an available port>
    CONFIG_INSTANCE_1_LOG_CONFIG_PATH=<path to server-logs.xml>
    CONFIG_TLS_CLIENT_CERT=<path to agent TLS cert>
    CONFIG_TLS_CLIENT_KEY=<path to agent TLS key>

请参考选项的完整列表 此处

启动和停止

要启动服务

agent service -s start

要卸载服务

agent service -s uninstall

作为控制台应用程序运行

所有 配置 代理的值应在启动代理之前设置为环境变量。

agent console -s

or

agent console --self-register

验证代理设置

确保代理已联系 NOM 服务器、在线且正在正确报告 DBMS。

  1. 返回到全局设置中的代理列表。

    agents
  2. 在列表中找到自动注册的代理。

    • 如果代理不在列表中,请返回到代理正在运行的位置并检查日志。可能是服务器地址配置错误或 TLS 证书未正确指定。

  3. 成功注册后,代理状态将变为 Offline,直到代理接收令牌信息并重新连接到 NOM 服务器。

  4. 等待代理状态变为 Online,这表示代理已成功重新连接到 NOM 服务器。这可能需要几分钟时间。

    agent approved online
  5. 如果代理状态不是 Online,请分别检查服务器日志和代理日志中的错误。

  6. 将鼠标悬停在新增的代理上,从右侧菜单中选择“查看配置”以显示代理配置。检查配置是否符合预期。

  7. 导航到主页(如果此代理是第一个管理 DBMS 中实例的代理,则 DBMS 可能需要几分钟才能出现)。

  8. 选择“警报”选项卡,确保没有针对新代理管理的任何 DBMS 的警报。

代理配置参考

注册配置

变量 描述 示例

CONFIG_SERVER_GRPC_ADDRESS

服务器 GRPC 地址

server:9090

CONFIG_SERVER_HTTP_ADDRESS

服务器 HTTP 地址(**应包含协议方案**)

https://server:8080

CONFIG_TLS_TRUSTED_CERTS

PEM 编码的受信任 CA 列表 ()

/path/to/a/pem/file

由于代理-服务器通信需要加密,因此您需要配置代理以使其信任服务器的证书。包含受信任证书列表(PEM 编码)的文件可以通过 CONFIG_TLS_TRUSTED_CERTS 环境变量指定。大多数操作系统默认使用系统范围的受信任证书,但在 Windows 上并非如此。因此,您**必须**在 Windows 上设置此环境变量。

可选配置,用于指定 代理配置文件 的位置

变量 描述 示例 默认

CONFIG_AGENT_CONFIG_PATH

Neo4j 实例主机上的持久性文件路径

"file://path/to/"

如果设置了 NEO4J_CONF,则为 NEO4J_HOME 下的 conf 文件夹,否则为用户主目录下的 .nom 文件夹。

代理配置位置必须是持久性类型。

可以使用这些配置参数可选地指定代理元数据

变量 描述 示例

CONFIG_AGENT_NAME

代理的可选名称,便于在自动注册的代理之间进行区分

home-db-agent

CONFIG_AGENT_DESCRIPTION

代理的可选描述,便于在自动注册的代理之间进行区分

用于监控主数据库的代理

建议在将多个代理自动注册到类似主机上时设置代理名称和描述,因为这会导致 UI 中出现类似名称的代理,从而造成混淆。

双向身份验证的配置

NOM 服务器立即授权使用受信任证书注册的代理。

要启用双向身份验证,需要以下配置

变量 描述 示例

CONFIG_TLS_CLIENT_CERT

用于双向 TLS 的 PEM 编码代理证书

/path/to/a/pem/file

CONFIG_TLS_CLIENT_KEY

用于双向 TLS 的 PEM 编码代理密钥

/path/to/a/pem/file

除了上述配置之外,NOM 服务器还需要配置为信任代理证书,如 此处 所述。CONFIG_TLS_CLIENT_CERT 设置的客户端证书应是 GRPC_SERVER_SECURITY_TRUST_CERT_COLLECTION 文件的一部分。

测试和演示环境中代理的自签名证书可以按照 此处 文档进行生成。一个未绑定到代理主机 IP 的代理证书可用于配置多个代理,这将减少需要维护的代理证书数量。

代理日志记录配置

以下环境变量指定代理的启动配置

变量 描述 示例

CONFIG_LOG_LEVEL

日志级别(debug、info、warn、error)

info

CONFIG_LOG_FILE

日志文件的路径

/var/log/nom-agent/log.txt

监控实例配置

以下环境变量需要设置,以允许代理访问实例。

如果同一代理监控多个 DBMS,请重复并枚举每个 DBMS 的配置,将下面的数字 1 替换为 23 等,以分别表示每个实例。例如,将第一个 DBMS 命名为 CONFIG_INSTANCE_1_NAME,将第二个命名为 CONFIG_INSTANCE_2_NAME,以此类推。

变量 描述 示例

CONFIG_INSTANCE_1_NAME

第一个实例的名称

my-instance-1

CONFIG_INSTANCE_1_BOLT_URI

第一个实例的 Bolt URI,使用 bolt 或 bolt+s 协议

bolt://localhost:7687 或 bolt+s://localhost:7687 或 bolt+ssc://localhost:7687,取决于本地数据库的设置

CONFIG_INSTANCE_1_BOLT_USERNAME

第一个实例的 Bolt 用户名

neo4j

CONFIG_INSTANCE_1_BOLT_PASSWORD

第一个实例的 Bolt 密码

password

您为 CONFIG_INSTANCE_n_NAME 指定的实例名称将用于在 NOM 中识别您的实例。因此,在整个集群中指定唯一名称非常重要。

查询日志收集配置

变量 描述 示例

CONFIG_INSTANCE_1_QUERY_LOG_PORT

代理连接到 Neo4j log4j 附加程序的端口。如果未设置,则查询日志收集功能将被视为已禁用。

9500

CONFIG_INSTANCE_1_LOG_CONFIG_PATH

指向实例 log4j 配置文件 的路径。如果设置,则会自动附加相应的日志附加程序(包括上面指定的端口)。

/var/lib/neo4j/conf/server-logs.xml

CONFIG_INSTANCE_1_QUERY_LOG_MIN_DURATION

要记录的查询的最小持续时间(以毫秒为单位)(可选)

100

CONFIG_INSTANCE_1_QUERY_LOG_MIN_DURATION_FILTER_ERRORS

启用低于最小持续时间(以毫秒为单位)的错误过滤器(可选)

true

CONFIG_INSTANCE_1_QUERY_LOG_DISABLE_OBFUSCATION

禁用查询中的字符串文字混淆(可选)

true

CONFIG_INSTANCE_1_QUERY_LOG_INCLUDE_AGENT

收集并显示来自 NOM 代理的查询(可选)

true

代理应该只监控本地实例,并且不应该配置为连接到远程实例。

请参阅 Neo4j 实例要求,以确保所有实例都满足 NOM 管理要求。