注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。
Agent Manager 在其安装的服务器上被称为 "bootvisor"。
本页面包含如何配置代理日志的信息,描述了几个代理配置的常见问题,并提供调试指南。
描述的步骤必须在通过SSH进入安装代理的主机后执行。
在探讨其他故障排除主题之前,我们建议首先检查./var/diagnostic/launch.yml
以确认代理是否成功连接到Foundry。如果连接不成功,请按照字段enhancedMessage
中描述的说明进行操作。
curl -s https://<your domain name>/magritte-coordinator/api/ping > /dev/null && echo pass || echo fail
。
pass
。在这种情况下,你应该:
echo $http_proxy
来验证是否正在使用代理。curl: (6) Could not resolve host: ...
。在这种情况下,很可能有东西阻止了连接(例如防火墙或代理),你应该联系你的Palantir代表。<agent-manager-install-location>/var/log/startup.log
文件的内容。
如果看到以下错误:Caused by: java.net.BindException: {} Address already in use
,这意味着已经有一个进程在Agent Manager尝试绑定的端口上运行。
<agent-manager-directory>/var/conf/install.yml
文件的内容并寻找port
参数来完成(例如,port: 1234
- 这里1234是端口)。注意,如果没有定义端口参数,Agent Manager将使用默认端口7032。ps aux | grep $(lsof -i:<PORT> |awk 'NR>1 {print $2}' |sort -n |uniq)
,其中<PORT>
是Agent Manager尝试绑定的端口。
com.palantir.magritte.bootvisor.BootvisorApplication
,这意味着另一个Agent Manager已经在运行。要修复BindException
错误,你需要为Agent Manager找到一个新的端口,该端口当前未被使用。
lsof -i :<PORT>
,其中<PORT>
是选择的端口号。找到可用端口后,你需要在存储于<agent-manager-directory>/var/conf/install.yml
的配置中添加(或更新)port
参数。
以下是一个设置了端口为7032
的Agent Manager配置片段:
Copied!1... 2port: 7032 3auto-start-agent: true
保存上述配置后,通过运行<agent-manager-root>/service/bin/init.sh stop && <agent-manager-root>/service/bin/init.sh start
重启Agent Manager。
检查<agent-manager-directory>/var/data/processes/<latest-bootstrapper-directory>/var/log/startup.log
文件的内容。
如果看到以下错误:Caused by: java.net.BindException: {} Address already in use
,这意味着已经有一个进程在Bootstrapper尝试绑定的端口上运行。
port
参数下定义(例如,port: 1234
- 这里1234是端口)。注意,Bootstrapper的默认端口是7002。ps aux | grep $(lsof -i:$PORT |awk 'NR>1 {print $2}' |sort -n |uniq)
,其中$PORT
是Bootstrapper尝试绑定的端口。
com.palantir.magritte.bootstrapper.MagritteBootstrapperApplication
,这意味着另一个Bootstrapper已经在运行。要修复BindException
错误,你需要为Bootstrapper找到一个新的端口,该端口当前未被使用。
lsof -i :<PORT>
,其中<PORT>
是选择的端口号。找到可用端口后,你需要在Bootstrapper的配置中设置port
参数。这可以通过导航到Data Connection应用程序中的代理概览页面来完成。从那里选择高级配置按钮,最后导航到"Bootstrapper"选项卡。
以下是一个设置了端口为7002
的Bootstrapper配置片段:
Copied!1server: 2 adminConnectors: 3 ... 4 port: 7002 #这是端口值
更新配置后,你将需要保存更改并重启代理以使其生效。
通常,这种情况是由运行的另一个"幽灵"实例的代理引起的,你需要找到并关闭它。
要查找并终止旧进程,请按照以下步骤操作:
<agent-manager-install-location>/service/bin/init.sh stop
停止Agent Manager。<agent-manager-install-location>/var/data/processes/index.json
文件。for folder in $(ls -d <agent-manager-root>/var/data/processes/*/); do $folder/service/bin/init.sh stop; done
以关闭旧进程。<agent-manager-install-location>/service/bin/init.sh start
)。在安装代理的主机上手动启动代理(而不是通过Data Connection)可能导致创建"幽灵"进程。
通常当代理进程显示为"不健康"时,是因为它已崩溃或被操作系统或其他软件(例如防病毒软件)关闭。
操作系统可能关闭进程的原因有很多,但最常见的是操作系统没有足够的内存来运行它,这被称为OOM(内存不足)杀死。
要检查任何代理或Explorer子进程是否被操作系统OOM杀死,你可以运行以下命令:grep "exited with return code 137" -r <agent-manager-directory> --include=*.log
。这将搜索Agent Manager目录内的所有日志文件,查找包含'exited with return code 137'的条目(返回代码137表示一个进程被OOM杀死)。
以下是上述命令产生的示例输出,显示代理子进程被OOM杀死。:./var/data/processes/bootstrapper~<>/var/log/magritte-bootstrapper.log:ERROR [timestamp] com.palantir.magritte.bootstrapper.ProcessMonitor: magritte-agent exited with return code 137
。如果看到类似的输出,你应按照以下步骤调整堆大小。
你也可以通过运行以下命令检查操作系统日志中的OOM kill条目:dmesg -T | egrep -i 'killed process
。此命令将搜索内核环缓冲区中的'killed process'日志条目,这表示一个进程被OOM杀死。
OOM杀死的进程的实际日志条目如下所示:
[timestamp] Out of memory: Killed process 9423 (java) total-vm:2928192kB, anon-rss:108604kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:1232kB oom_score_adj:0
(java)
的条目可以忽略,因为它们与代理无关。在更改任何堆分配之前,你应首先:
free -h
。在一个6 GB的系统上,输出可能类似于以下内容:Copied!1 total used free shared buff/cache available 2Mem: 5.8Gi 961Mi 2.8Gi 9.0Mi 2.1Gi 4.6Gi 3# 内存(Mem)总量为5.8GiB,其中已用961MiB,空闲2.8GiB,共享9.0MiB,缓冲/缓存2.1GiB,可用4.6GiB 4 5Swap: 1.0Gi 0B 1.0Gi 6# 交换分区(Swap)总量为1.0GiB,已用0B,空闲1.0GiB
在free
命令生成的输出中,available
列显示了可以用于启动新应用程序的内存量。为了确定可以分配给代理的内存量,我们建议您停止代理并在系统负载正常到高的情况下运行free -h
。可用值将告诉您可以用于所有代理进程的最大内存量。我们建议尽可能保留大约2 - 4GB的缓冲区,以考虑系统上其他进程需要更多内存,以及代理进程的堆外内存使用。请注意,并非所有版本的free
都显示可用列,因此您可能需要检查系统上版本的文档以找到等效信息。
确定分配给以下每个子进程的内存量:Agent Manager、Bootstrapper、agent和Explorer。
要找出分配给agent和Explorer子进程的内存量,您应导航到Data Connection中的代理配置页面,选择高级配置按钮,并选择“Bootstrapper”选项卡。在这里,您将看到每个子进程都有自己的配置块;在每个块中,您应看到一个jvmHeapSize
参数,该参数定义了分配给相关进程的内存量。
默认情况下,Bootstrapper子进程被分配512mb
的内存。这可以通过首先导航到<agent-manager-directory>/var/data/processes/
目录来确认;从那里,您需要运行ls -lrt
以找到最近创建的bootstrapper~<uuid>
目录。一旦进入最近创建的bootstrapper~<uuid>
目录,您可以查看./var/conf/launcher-custom.yml
文件的内容。这里的Xmx
值是分配给Bootstrapper的内存量。
默认情况下,Agent Manager子进程也被分配512mb
的内存。这可以通过查看文件<agent-manager-directory>/var/conf/launcher-custom.yml
的内容来确认。这里的Xmx
值是分配给Agent Manager的内存量。
安装在Windows机器上的代理不使用launcher-custom.yml
文件,因此默认情况下,Java将为Agent Manager和Bootstrapper进程分配系统可用内存的25%。要解决此问题,您需要手动设置Agent Manager和Bootstrapper的堆大小,可以通过以下步骤完成:
setx -m JAVA_HOME "{BOOTVISOR_INSTALL_DIR}\jdk\{JDK_VERSION}-win_x64\"
setx -m MAGRITTE_BOOTVISOR_WIN_OPTS "-Xmx512M -Xms512M"
setx -m MAGRITTE_BOOTSTRAPPER_OPTS "-Xmx512M -Xms512M"
.\service\bin\magritte-bootvisor-win
一旦确定了主机可用的内存量以及分配给上述每个子进程的内存量,您应该决定是减少分配给上述进程的内存量还是增加主机的可用内存量。
是否可以安全地减少代理进程使用的内存量将取决于您的代理设置(例如,最大并发同步数和文件上传并行性)、正在同步的数据类型以及代理上的典型负载。减少堆大小会降低操作系统终止进程的可能性,但增加Java进程耗尽堆空间的可能性。您可能需要测试不同的值以找到适合的值。如果需要调整此值的帮助,请联系您的Palantir代表。
要减少分配给一个(或多个)子进程的内存量,请执行以下操作:
jvmHeapSize
参数。Copied!1agent: 2 .... 3 jvmHeapSize: 3g #这是jvm堆大小值
默认堆分配
默认情况下,代理需要大约3gb的内存,分配如下:
Java进程也使用一定量的堆外内存;因此,我们建议您确保至少有≥4gb的内存空闲。
导致代理下载失败的两个主要原因是网络连接和过期链接。
如果您可以连接到Foundry但得到无效的tar.gz
文件或下载时出现错误消息,您可能有一个过期或无效的链接。
用户必须是项目的编辑者才能在该项目中创建代理,但必须是项目的所有者才能管理该项目中的代理。这意味着用户可以创建代理,但无法生成下载链接或对代理执行其他管理任务。有关代理权限的更多信息,请查看我们的权限参考文档。
TLSv.1.0和TLSv1.1不被Palantir支持,因为它们是过时且不安全的协议。Data Connection代理使用的Amazon Corretto构建的OpenJDK默认情况下通过java.security
文件中的jdk.tls.disabledAlgorithms
安全属性明确禁用TLSv1.0和TLSv1.1。
尝试连接到仅支持TLSv1.0和TLSv1.1的数据源系统将失败,并出现各种错误,包括Error: The server selected protocol version TLS10 is not accepted by client preferences
。
我们强烈不建议使用已弃用的TLS版本。Palantir对与其使用相关的安全风险不承担责任。
如果有临时支持TLSv1.0和TLSv1.1的关键需求,请执行以下步骤:
Bootstrapper
选项卡。agent
和explorer
配置块中添加tlsProtocols
条目,并后跟要启用的协议。确保还包括TLSv1.2,以免使用它的来源中断。例如:Copied!1agent: 2 tlsProtocols: 3 - TLSv1 # TLS版本1.0 4 - TLSv1.1 # TLS版本1.1 5 - TLSv1.2 # TLS版本1.2 6... 7explorer: 8 tlsProtocols: 9 - TLSv1 # TLS版本1.0 10 - TLSv1.1 # TLS版本1.1 11 - TLSv1.2 # TLS版本1.2 12...
在此YAML配置中,tlsProtocols
字段列出了支持的TLS协议版本。一般建议仅使用TLSv1.2及以上的版本,因为TLSv1和TLSv1.1被认为不再安全。
通过此配置,代理将在代理升级和重启时继续支持TLSv1.0和TLSv1.1。一旦数据源迁移到新的TLS版本,请还原对高级代理配置所做的所有更改。
要调整代理在其主机上的日志存储设置,请按照以下步骤操作:
您的新配置现在应已生效。
这些文件将保留在磁盘上,直到Bootvisor清理旧的进程文件夹(30天或10个旧文件夹触发清理)。这些文件是加密的,解密它们的密钥仅存在于已终止的进程的内存中。