- 概述
- 要求
- 部署模板
- 手动:准备安装
- 手动:准备安装
- 步骤 2:为离线安装配置符合 OCI 的注册表
- 步骤 3:配置外部对象存储
- 步骤 4:配置 High Availability Add-on
- 步骤 5:配置 SQL 数据库
- 步骤 7:配置 DNS
- 步骤 8:配置磁盘
- 步骤 9:配置内核和操作系统级别设置
- 步骤 10:配置节点端口
- 步骤 11:应用其他设置
- 步骤 12:验证并安装所需的 RPM 包
- 步骤 13:生成 cluster_config.json
- Cluster_config.json 示例
- 常规配置
- 配置文件配置
- 证书配置
- 数据库配置
- 外部对象存储配置
- 预签名 URL 配置
- ArgoCD 配置
- Kerberos 身份验证配置
- 符合 OCI 的外部注册表配置
- Disaster Recovery:主动/被动和主动/主动配置
- High Availability Add-on 配置
- 特定于 Orchestrator 的配置
- Insights 特定配置
- Process Mining 特定配置
- Document Understanding 特定配置
- Automation Suite Robot 特定配置
- 监控配置
- 可选:配置代理服务器
- 可选:在多节点 HA 就绪生产集群中启用区域故障恢复
- 可选:传递自定义 resolv.conf
- 可选:提高容错能力
- 添加具有 GPU 支持的专用代理节点
- 为 Automation Suite Robot 添加专用代理节点
- 步骤 15:为离线安装配置临时 Docker 注册表
- 步骤 16:验证安装的先决条件
- 正在运行 uipathctl
- 手动:执行安装
- 安装后
- 集群管理
- 监控和警示
- 迁移和升级
- 特定于产品的配置
- 最佳实践和维护
- 故障排除
- 如何在安装过程中对服务进行故障排除
- 如何减少 NFS 备份目录的权限
- 如何卸载集群
- 如何清理离线工件以改善磁盘空间
- 如何清除 Redis 数据
- 如何启用 Istio 日志记录
- 如何手动清理日志
- 将 Ceph 退出只读模式
- 如何清理存储在 sf-logs 存储桶中的旧日志
- 如何禁用 AI Center 的流日志
- 如何对失败的 Automation Suite 安装进行调试
- 如何在升级后从旧安装程序中删除映像
- 如何禁用 TX 校验和卸载
- 如何手动将 ArgoCD 日志级别设置为 Info
- 如何扩展 AI Center 存储
- 如何为外部注册表生成已编码的 pull_secret_value
- 如何解决 TLS 1.2 中的弱密码问题
- 如何查看 TLS 版本
- 如何使用证书
- 如何计划 Ceph 备份和还原数据
- 如何使用集群内对象存储 (Ceph) 收集 DU 使用情况数据
- 如何在离线环境中安装 RKE2 SELinux
- 如何清理 NFS 服务器上的旧差异备份
- 如何在已启用 FIPS 的集群中部署 Insights
- 如何迁移到 cgroup v2
- 如何在虚拟机重新启动后恢复 Kerberos 身份验证
- 如何将本地 Docker 映像推送到集群内注册表
- 如何从备份中排除存储桶
- 无法获取沙盒映像
- Pod 未显示在 ArgoCD 用户界面中
- Redis 探测器失败
- RKE2 服务器无法启动
- ArgoCD 在首次安装后进入“进行中”状态
- 处于 CrashLoopBackOff 状态的 ArgoCD 存储库服务器 Pod
- 手动 ArgoCD 网络策略缓解措施 (MHSA-47m3-95c7-g2g8)
- 监控仪表板中缺少 Ceph-rook 指标
- 诊断性运行状况检查期间报告的错误不匹配
- 为 uipathctl 创建的工作负载配置资源请求和限制
- 无正常的上游问题
- 杀毒软件阻止了 Redis 启动
- 无法在启用 TLS 证书验证的情况下启动 AI Center 和 Document Understanding Pod
- Fluentd 不会在 IPv6 环境中导出日志
- Studio 桌面版无法加载 Integration Service 连接器和活动
- 运行诊断工具
- 使用 Automation Suite 支持捆绑包
- 探索日志
Automation Suite 中 Orchestrator 的 NLog 配置选项和支持的日志记录扩展程序。
添加 NLog 扩展程序
Orchestrator 默认加载以下扩展程序,因此您无需将其包含在文件夹或 NLog 配置中:
NLog.Targets.ElasticSearchUiPath.Orchestrator.Logs.ElasticsearchMicrosoft.ApplicationInsights.NLogTargetNLog.Extensions.AzureEventHub
在此设置中,只能使用与 Linux 兼容的扩展程序,因此请确保您选择的 NLog 扩展程序遵守此规则。
要使扩展程序可用,必须将其上传到集群存储。 uipathctl命令行工具可以通过uipathctl config orchestrator upload命令执行此操作:
./bin/uipathctl config orchestrator upload --nlog-extensions-directory /path/to/extensions/directory
./bin/uipathctl config orchestrator upload --nlog-extensions-directory /path/to/extensions/directory
如果在集群级别使用外部存储配置,则必须通过包含 --is-external-storage 参数来指明这一点。
高级 NLog 配置
创建高级 NLog 配置
-
创建包含以下标准部分的
nlog.config.json文件:扩展程序、目标和规则。扩展程序部分是一个项目数组,通过
assemblyFile和程序集的路径指定扩展程序集。如果加载了自定义 nlog 插件(如添加 NLog 扩展程序部分中所述),则将在
extensions部分中引用这些插件。 -
在
nlog.config.json文件中配置目标和规则。 -
使用
uipathctl命令行工具应用nlog.config.json文件:./bin/uipathctl config orchestrator update-config --nlog-config nlog.custom.json./bin/uipathctl config orchestrator update-config --nlog-config nlog.custom.json重要提示:此操作将覆盖现有的自定义 NLog 配置。您可以使用以下命令来检查现有配置:
./bin/uipathctl config orchestrator get-config --nlog-config./bin/uipathctl config orchestrator get-config --nlog-config将日志写入 Azure Blob 的
nlog.config.json文件示例:{ "NLog": { "extensions": [ { "assemblyFile": "NLog.Extensions.AzureBlobStorage.dll" } ], "targets": { "azureBlob": { "type": "AzureBlobStorage", "connectionString": "DefaultEndpointsProtocol=https;AccountName=test;AccountKey=key;EndpointSuffix=core.windows.net", "container": "orchestratorlogs", "blobName": "${date:format=yyyy-MM-dd hh.mm}", "layout": { "type": "JsonLayout", "includeAllProperties": true, "Attributes": [ {"name": "ts","layout": "${longdate}"}, {"name": "level","layout": "${level:upperCase=true}"}, {"name": "logger","layout": "${logger}"}, {"name": "message","layout": "${message}"}, {"name": "exception","layout": "${onexception:${ui-pretty-exception}}"} ] } } }, "rules": { "70_Final": { "writeTo": "stdout,azureBlob" } } } }{ "NLog": { "extensions": [ { "assemblyFile": "NLog.Extensions.AzureBlobStorage.dll" } ], "targets": { "azureBlob": { "type": "AzureBlobStorage", "connectionString": "DefaultEndpointsProtocol=https;AccountName=test;AccountKey=key;EndpointSuffix=core.windows.net", "container": "orchestratorlogs", "blobName": "${date:format=yyyy-MM-dd hh.mm}", "layout": { "type": "JsonLayout", "includeAllProperties": true, "Attributes": [ {"name": "ts","layout": "${longdate}"}, {"name": "level","layout": "${level:upperCase=true}"}, {"name": "logger","layout": "${logger}"}, {"name": "message","layout": "${message}"}, {"name": "exception","layout": "${onexception:${ui-pretty-exception}}"} ] } } }, "rules": { "70_Final": { "writeTo": "stdout,azureBlob" } } } }将机器人日志写入 Splunk 的
nlog.config.json文件示例:{ "Nlog": { "extensions": [ { "assemblyFile": "NLog.Targets.Splunk.dll" }, { "assembly": "UiPath.Orchestrator.Logs.DatabaseBulk.NLogTarget" } ], "targets": { "Splunk": { "type": "AsyncWrapper", "overflowAction": "Discard", "queueLimit": 10000, "batchSize": 200, "timeToSleepBetweenBatches": 1, "target": { "type": "SplunkHttpEventCollector", "serverUrl": "http://splunk.example.com", "token": "splunk-token", "channel": "", "source": "${logger}", "sourceType": "_json", "index": "uipath", "retriesOnError": "0", "batchSizeBytes": "0", "batchSizeCount": "0", "includeEventProperties": "true", "includePositionalParameters": "true", "includeMdlc": "true", "maxConnectionsPerServer": "10", "ignoreSslErrors": "false", "useProxy": "false", "proxyUrl": "", "proxyPassword": "" } } }, "rules": { "20_Robot_Primary": { "writeTo": "Splunk,database,insightsRobotLogs" } } } }{ "Nlog": { "extensions": [ { "assemblyFile": "NLog.Targets.Splunk.dll" }, { "assembly": "UiPath.Orchestrator.Logs.DatabaseBulk.NLogTarget" } ], "targets": { "Splunk": { "type": "AsyncWrapper", "overflowAction": "Discard", "queueLimit": 10000, "batchSize": 200, "timeToSleepBetweenBatches": 1, "target": { "type": "SplunkHttpEventCollector", "serverUrl": "http://splunk.example.com", "token": "splunk-token", "channel": "", "source": "${logger}", "sourceType": "_json", "index": "uipath", "retriesOnError": "0", "batchSizeBytes": "0", "batchSizeCount": "0", "includeEventProperties": "true", "includePositionalParameters": "true", "includeMdlc": "true", "maxConnectionsPerServer": "10", "ignoreSslErrors": "false", "useProxy": "false", "proxyUrl": "", "proxyPassword": "" } } }, "rules": { "20_Robot_Primary": { "writeTo": "Splunk,database,insightsRobotLogs" } } } }
调整 Splunk queueLimit 大小
队列会在速度下降期间吸收 Splunk 积压。根据峰值吞吐量,而不是平均值:
queueLimit = peak_logs_per_sec × acceptable_backlog_seconds
queueLimit = peak_logs_per_sec × acceptable_backlog_seconds
| 部署 | 峰值速率 | 积压容错 | 队列限制 |
|---|---|---|---|
| 小 | 约每秒 10 个日志 | 60 秒 | 600 |
| 中 | 约 35 个日志/秒 | 300 秒 | 10000 |
| 大 | 约 200 个日志/秒 | 60 秒 | 12000 |
Splunk 目标的最佳实践
- 将
overflowAction: Discard用于次要目标。Splunk 等外部日志目标通常是分析或可观察性目标,Orchestrator 数据库是事实来源。如果外部目标无法跟上进度,与阻止应用程序线程相比,删除其副本更好。 - 为不可接受丢失的目标保留
overflowAction: Block。Block可防止事件丢失,但不能防止阻止。当队列在持续负载下变满时,它将还原为与BufferingWrapper相同的线程阻止行为。仅当外部目标符合合规性或审核要求时才使用它,并且会适当调整queueLimit大小以匹配峰值吞吐量。 - 始终将
database与任何外部目标一起保留在writeTo规则中。这可确保无论外部目标的可用性或性能如何,机器人日志都不会永久丢失。 - 关闭前刷新。
AsyncWrapper将事件保存在内存队列中。确保在正常关闭时刷新 NLog 目标,以避免在流程退出时丢失队列尾部。
更新 NLog 高级配置
更新 NLog 配置所需的uipathctl命令为:
./bin/uipathctl config orchestrator get-config --nlog-config- 以键值对 json 文件的形式导出当前配置,以供编辑。./bin/uipathctl config orchestrator update-config --nlog-config nlog.config.json- 使用您的更改更新配置。
-
使用以下命令将当前自定义 NLog 配置导出至 json 文件:
./bin/uipathctl config orchestrator get-config --nlog-config > nlog.config.json./bin/uipathctl config orchestrator get-config --nlog-config > nlog.config.json -
根据需要编辑导出的
nlog.config.json文件。 您可以添加、删除或更改其任何设置。备注:每次需要进行更改时,都必须重新导出文件,因为更新会覆盖所有 NLog 设置。
-
使用以下命令更新 NLog 配置:
./bin/uipathctl config orchestrator update-config --nlog-config nlog.config.json orchestrator config updated./bin/uipathctl config orchestrator update-config --nlog-config nlog.config.json orchestrator config updated