管理 RTM - 高级配置和性能调优

本文详细介绍了 IBM Spectrum LSF RTM (RTM) 的高级配置选项和性能调优技术,旨在帮助管理员更好地监控集群并优化 RTM 性能。

控制 LSF 集群

RTM 提供了控制 LSF 集群、主机、队列和作业的功能,前提是您已启用 RTM 对 LSF 集群的控制权限。RTM 通过在 LSF 管理主机上启动 LSF 命令来实现对集群的控制。

可控制的组件和操作:

  • 集群级组件:
    • mbatchd (管理批处理守护进程): 启动、重启或关闭。
    • LIM (负载信息管理器): 启动、重启或关闭。
    • RES (资源执行服务器): 启动、重启或关闭。
    • 运行 badmin reconfig: 动态重新配置 LSF。
    • 运行 lsadmin reconfig: 重启集群中所有主机上的 LIM。
  • 主机:
    • 打开或关闭 LSF 集群中的主机。
  • 队列:
    • 打开队列
    • 关闭队列
    • 激活队列
    • 取消激活队列
    • 将所有作业从一个队列切换到另一个队列
  • 作业:
    • btop: 将挂起作业相对于队列中的第一个作业移动。
    • bbot: 将挂起作业相对于队列中的最后一个作业移动。
    • bswitch: 将未完成的作业从一个队列切换到另一个队列。
    • bresume: 恢复挂起的作业。
    • brun: 强制作业立即运行。
    • bstop: 挂起未完成的作业。
    • bkill: 发送信号以终止未完成的作业。
    • 强制终止 (Force kill): 使用 bkill -r 命令强制终止作业。
    • 信号终止 (Signal kill): 使用 bkill -s 命令发送特定信号以终止作业。

在 LSF 集群上运行 Grid 控制命令

可以通过 RTM 控制台在 LSF 集群上运行 LSF 命令。

前提条件:

  • 必须已在 LSF 集群上启用了 Grid 控制。

步骤:

  1. 在 RTM 控制台中,点击 Console 标签页。
  2. 在 Grid Management 部分,点击 Clusters。
  3. 点击您想要配置的集群的 Cluster Name 链接。
  4. 配置集群设置。如果 Grid 控制需要更多信息,请在显示的字段中指定详细信息。
  5. 点击 Save。

结果:

  • 可以在“查看 LSF 集群和作业信息”部分查看集群的状态。

强制执行集群操作控制注释

RTM 可以为以下操作强制要求输入注释:

  • 按主机 (By Host)
  • 按队列 (By Queue)
  • 集群 (Cluster)

您必须设置 Mandatory Cluster Action Control Comments 选项,以允许您的 Grid 管理员在提交主机、队列或集群的控制操作(如启动/重启/关闭、打开/关闭)之前输入注释。

设置强制集群操作控制注释

步骤:

  1. 点击 Console 标签页。
  2. 在 Configuration 部分,点击 Grid Settings。
  3. 点击 General 标签页。
  4. 在 Cluster Control Settings 下,选中 Mandatory Cluster Action Control Comments 复选框。
  5. 点击 Save。

对主机、队列或集群的集群操作控制添加注释

步骤:

  1. 点击 Grid 标签页。
  2. 在 Job Info 部分,点击 By Host, By Queue, 或 By Cluster。
  3. 选中您想要执行操作的一个或多个主机名对应的复选框。
  4. 从列表中选择一个操作。
  5. 点击 Go。将显示一个确认对话框。
  6. 在文本框中输入您的注释。如果设置了强制集群操作注释,您必须输入注释才能继续提交。
  7. 点击 Yes。

为集群配置空闲作业检测

关于此任务:

  • 空闲作业是按集群在 Cluster Edit 页面上配置的,并非全局配置。
  • 可以排除特定队列(例如,提交到交互式队列的作业)不参与空闲作业计算。
  • 注意: 全新安装 RTM 10.2 后,任何先前的空闲作业设置都将失效,您必须重新配置它们。

步骤:

  1. 点击 Console 标签页。
  2. 在 Grid Management 部分,点击 Clusters。
  3. 点击您想要设置空闲作业检测的集群的 Cluster Name。
  4. 如果您想在集群中搜索空闲作业,请选中 Enable Idle Job Detection 复选框。
  5. 您可以选择为以下字段设置值:
    • Email Notification Type (邮件通知类型)
    • Minimum Runtime (最小运行时间)
    • Floating Window (浮动窗口)
    • CPU Time Threshold (CPU 时间阈值)
    • Include Job Types (包含的作业类型)
    • Job Commands (作业命令)
    • Idle Jobs Exclude Queues (空闲作业排除队列)
  6. 点击 Save。

配置空闲作业检测 (Grid 设置)

步骤:

  1. 点击 Console 标签页。
  2. 在 Configuration 部分,点击 Grid Settings,然后转到 Idle jobs 标签页。
  3. 设置 Idle Job Detection 字段的值:
    • Filter Name (过滤器名称): 提供过滤器名称以显示图例和作业异常。
    • Email Subject (邮件主题): 使用替换标签 <JOBID>, <INDEXID>, <SUBMITTIME>, <CLUSTERNAME>, <USER>, 和 <CPUSECS> 定义空闲作业邮件主题。
    • Email Message (邮件内容): 使用替换标签 <JOBID>, <SUBMITTIME>, <CLUSTERNAME>, <USER>, 和 <CPUSECS> 定义邮件内容。
    • Legend Background Color (图例背景颜色): 定义图例。如果颜色设置为 None,则禁用此功能。
  4. 点击 Save。

配置内存违规检测

关于此任务:

  • 您可以配置作业的内存设置,以帮助您监控内存使用情况并灵活控制作业。

步骤:

  1. 转到 Console > Configuration > RTM Settings。
  2. 转到 Memory Exceptions 标签页。
  3. 设置 Memory RUSAGE Violations 字段的值:
    • Enable Memory RUSAGE Job Detection: 搜索内存违规作业。
    • Email Summary Reports: 接收邮件摘要报告通知的帐户。
    • Email Schedule: 接收邮件的通知频率。邮件在数据库维护期间每周日发送。
    • Memory Overusage Filter Name: 在作业详情图例中显示的内存过度使用过滤器名称。
    • Memory Overusage Allocation: 在标记作业之前,可接受的高于 RUSAGE 级别的内存使用百分比。
    • Memory Overusage Background Color: 图例颜色。如果颜色设置为 None,则禁用此功能。
    • Memory Underusage Filter Name: 在图例和作业异常过滤器显示中显示的内存使用不足过滤器名称。
    • Memory Underusage Allocation: 在标记作业之前,可接受的低于 RUSAGE 级别的内存使用百分比。
    • Memory Underusage Background Color: 图例和行显示的颜色。如果颜色设置为 None,则禁用此功能。
    • Minimum Run Window: 最小运行时间。
    • Minimum Memory Limit: 作业的最小内存限制。
    • Email Subject: 使用替换标签 <OVERFILTER>/<UNDERFILTER> 和 <CLUSTERNAME> 定义。
    • Email Message: 使用替换标签 <CLUSTERNAME>, <OVERFILTER>, <OVERSHOOT>, <UNDERFILTER>, <UNDERSHOOT>, 和 <REPORTTABLE> 定义。
  4. 点击 Save。

添加或编辑 RTM 监控的 LSF 集群

要添加或编辑 RTM 监控的 LSF 集群,需要按顺序执行以下操作:

  1. 添加或编辑集群。
  2. 将 RTM 主机作为 LSF 客户端添加到 LSF 集群。

添加或编辑集群

可以通过以下任一方法添加或编辑您希望 RTM 监控的任何 LSF 集群:

  • 使用 RTM 控制台添加或编辑集群
  • 使用脚本将集群添加到 RTM

使用 RTM 控制台添加或编辑集群

步骤:

  1. 点击 Console 标签页。
  2. 在 Grid Management 部分,点击 Clusters。
  3. 选择添加或编辑集群:
    • 要添加 LSF 集群,点击 Add。
    • 要编辑现有 LSF 集群,点击您想要编辑的集群的名称。
  4. 指定(或更新)描述您的 LSF 集群所需的字段。至少需要指定以下字段来添加 LSF 集群:Cluster Name, LSF Master LIM Hostname, LSF Master LIM Port, Grid Poller, 和 Primary LSF Administrator Username。
    • 安装位置注意事项:
      • 监控多个独立集群: 为获得最佳性能,请将 RTM 安装在 LSF 客户端主机上。但是,如果您打算监控多个独立集群并且您的 RTM 主机充当 LSF 服务器,请确保集群使用不同的 LIM 端口。
      • 监控 LSF 多集群成员: 当监控 LSF 多集群环境中的两个或多个成员时,必须将 RTM 安装在多集群内任何成员的 LSF 客户端主机上。
    • 对于 Grid Poller 字段,选择适合您的 LSF 集群版本的轮询器。此版本允许选择 Poller for LSF 8。
  5. 点击 Create (或 Save) 来保存您的 LSF 集群设置。

后续操作:

  • 如果您编辑了已在 RTM 控制台中的 LSF 集群,则无需执行其他操作。
  • 如果您向 RTM 控制台添加了 LSF 集群,则必须按照“将 RTM 主机作为 LSF 客户端添加到 LSF 集群”中的说明将 RTM 主机添加到 LSF 集群。

使用脚本将集群添加到 RTM

关于此任务:

  • 使用 grid_add_cluster.php 脚本将 LSF 集群添加到 RTM。

步骤:

  1. 从命令行转到 Cacti 安装目录的 plugins/grid 子目录。
  2. 使用 php 运行 grid_add_cluster.php 脚本:
    1
    
    php -q grid_add_cluster.php --type=0 --pollerid=lsf_type --cluster_name=cluster_name_text --cluster_env=lsf_envdir_path
    

    其中:

    • lsf_type: 代表集群中运行的 LSF 版本的整数 Poller ID。注意: Poller ID 不一定按顺序排列。最好使用 RTM 控制台 (Console > Clusters > Pollers) 来识别您要使用的 Poller ID。
    • cluster_name_text: 集群的名称。
    • lsf_envdir_path: LSF 集群的 lsf.conf 文件路径。
    • 示例: 添加一个名为 maincluster 的 LSF 10.1 集群,其 lsf.conf 在 /share/lsf/conf,Poller ID 为 9:
      1
      
        php -q grid_add_cluster.php --type=0 --pollerid=9 --cluster_name=maincluster --cluster_env=/share/lsf/conf
      

后续操作:

  • 将 RTM 主机作为 LSF 客户端添加到 LSF 集群。
  • 通过 RTM 控制台 (Clusters) 验证新集群已添加并处于“up”状态。

将 RTM 主机作为 LSF 客户端添加到 LSF 集群

关于此任务:

  • 对于 RTM 监控的任何 LSF 集群,您必须将 RTM 主机作为 LSF 客户端添加到该集群,以便 RTM 访问 LSF 集群数据。

步骤:

  1. 登录到 LSF 管理主机。
  2. 如果 LSF 管理主机无法将 RTM 主机名解析为 IP 地址,请编辑 /etc/hosts 文件并添加 RTM 主机的 IP 地址和主机名。(如果能成功 ping 通 RTM 主机名,则跳过此步)。
  3. 编辑 lsf.cluster.<cluster_name> 文件,并将 RTM 主机添加到 Host 部分。(如果配置了浮动客户端,则无需添加 RTM 主机)。
  4. 重新配置 LIM 并重启 mbatchd 以应用更改:
    1
    2
    
    lsadmin reconfig
    badmin mbdrestart
    
  5. 测试 RTM 主机是否成功添加到 LSF 集群: a. 登录到 RTM 主机。 b. 从 RTM 主机使用 telnet 登录到 LSF 管理主机的 LSF LIM 端口(LSF 8 及以上版本默认为 7869)。 bash telnet <LSF_management_host_IP> 7869 如果能连接到 LSF 管理主机的 IP 地址,则表示添加成功。

结果:

  • RTM 现在可以监控该 LSF 集群了。

后续操作:

  • 如果您希望 RTM 能够监控 LSF 集群中的所有单个主机,请将 LSF 集群中的所有主机添加到 RTM。

Grid Heuristics (JobIQ)

JobIQ 为 LSF 用户提供了一个可定制的视图,用于将其工作负载与 LSF 内部其他用户的工作负载进行比较。它还提供了 RTM 中包含的用户和集群范围数据的多个横截面视图。

  • 功能:
    • 显示您所有作业的信息,并将其与所有其他用户的作业进行比较。
    • 提供关于您的作业运行时间是否比通常更长的洞察。
    • 提供最近两天的作业历史记录视图。
    • 允许直接控制您的作业(重新排队、终止、挂起等)。
    • 按队列和项目确定所有作业的状态(运行、挂起、暂停)。
    • 显示异常退出作业的退出原因。
  • 筛选作业视图:
    • 自定义视图,包括要显示的窗格和要查看的用户。
    • 可以保存设置供下次使用。
    • RTM 管理员可以将 JobIQ 页面设置为用户的默认登录页面。
    • 按常见问题筛选作业视图。
    • 选择用户、集群和队列。
    • 选择要在 JobIQ 仪表板中看到的视图和图表。
    • 限制每个表中显示的信息行数(全部、5、10 或 20 条记录)。
    • 选择视图刷新频率(1-5 分钟或从不)。
  • 查看工作负载历史记录:
    • 查看过去两天的工作负载历史记录。
    • Summary 视图创建 Current Status by Cluster (all Queues) 表,显示所有队列中的挂起、运行和暂停作业,以及每小时完成和退出的作业数、小时吞吐量和 5 分钟吞吐量。
  • 查看跨多个集群的整体工作负载:
    • Daily Throughput by Cluster 表显示当天和前一天完成和退出作业的总数。
    • Average TT Today 显示当天运行的所有作业的平均周转时间(从提交到完成的总分钟数)。
    • Current Status by Queue/Project 表显示:
      • 每个队列的挂起作业数 / 排在您之前的挂起作业数(基于 LSF fairshare 动态优先级)。例如,670 / 230 表示您有 670 个挂起作业,而其他用户在同一队列中有 230 个作业排在您前面。
      • 运行和暂停的作业数 / 其他用户在同一队列中的运行和暂停作业数。
      • 小时吞吐量 (TPut(1Hr)) 和 5 分钟吞吐量 (TPut(5Min)) / 其他用户在同一队列中的吞吐量。
      • Estimate:根据运行时启发式(项目中作业运行时长的第 70 百分位)和吞吐量,估计您的作业何时预期完成。
    • “Stoplight graph” (红绿灯图) 显示多种警告类型(空闲作业、慢速作业、有依赖关系的作业、内存异常)的状态。
      • 如果任何警告类别的红绿灯图显示非绿色状态,将鼠标悬停在图标上可查看完整状态。
      • 点击状态图标可查看该作业的详细信息。
      • Idle Jobs (红色): 运行中的作业未使用任何 CPU 时间。
      • Long Jobs (红色): 作业超出了队列和项目中具有相同资源需求的作业的第 90 百分位。
      • Pend Dpnd (黄色): 作业有依赖关系;(红色): 有无效的作业依赖关系。
      • Mem Use (黄色): 作业使用的内存少于您保留的内存;(红色): 作业使用的内存远多于您保留的内存。
    • 在 Current Status by Queue/Project 表中,点击队列或项目名称可在 Graphs 窗格中查看图表,总结选定时间段内的挂起、运行和完成作业。
    • General 窗格提供多个按队列的高级图表,总结选定时间段内的内存使用和作业吞吐量。
  • 查看工作负载消耗的资源:
    • 查看您的工作负载与其他用户相比所消耗的资源。
    • 在 Current Status by Queue/Project 表中,点击挂起、运行或暂停的作业数量,可显示该状态下的作业列表。
    • 在 Grid Heuristics > View Job Listing 页面,按集群、队列、项目或作业状态筛选作业列表,并将表格导出为 .csv 文件进行进一步分析。
    • 列表中显示每个作业的警告状态:空闲作业、慢速作业、有依赖关系的作业和内存异常。
    • 点击作业列表中的作业 ID 可查看该作业的详细信息。
    • 在作业详细信息视图中,使用 Job Graphs 查看作业资源使用情况的图表(内存消耗、CPU 时间、运行中的进程 ID (PID) 及其随时间的变化)。
    • Hosts Graphs 显示作业的各种基于主机的统计信息。
  • 查看许可证使用情况:
    • Feature Checkouts for User 表允许按用户检查许可证使用情况。
    • Grid Heuristics > View Job Listing 页面也包含一列显示已签出的许可证。
  • 按队列查看挂起原因:
    • View Pending Reasons by Queue for User 表显示每个用户的挂起作业数量及其原因,以及挂起所花费的时间。
  • 查看哪些作业有异常:
    • 选择 Exit Analysis 以获取有关潜在问题作业的洞察。
    • Exit Analysis by Queue/Project 表显示过去一天内具有运行时、空闲或内存异常的作业。
    • 可以深入查看以控制这些作业。
    • 退出分析页面显示退出作业的数量和 LSF 退出原因。
  • 控制您的作业:
    • 在 Grid Heuristics > View Job Listing 页面,使用 Choose an action 菜单控制列表中的任何作业。
    • 在队列中向上或向下移动作业、将作业切换到另一个队列、强制作业立即运行(需相应权限)、挂起、恢复、终止、重新排队或发送信号给作业。

挂起原因 (Pending Reasons)

您可以选择挂起原因级别来理解您的作业为何挂起。这是通过将挂起原因分类,然后仅显示顶级类别中的首要原因来实现的。

  • 未分类挂起原因 (-p0): 获取集群中每个挂起作业的作业 ID、用户和挂起原因。
  • 关键挂起原因 (-p1): 检索作业的关键挂起原因。如果关键挂起原因是基于主机的,则显示关键挂起原因和相应的主机数量。否则,仅显示关键挂起原因。(注意:如果没有除主要原因之外的主机原因,则主要原因将作为作业的关键挂起原因显示)。
  • 候选主机挂起原因 (-p2): 更好地理解作业未运行的原因以及您可以采取的措施。bjobs -p2 选项显示集群中的总主机数和考虑的总数。对于考虑的主机,显示每个主机上的实际原因。对于每个挂起原因,显示给出该原因的主机数量。实际原因消息按从最常见到最不常见的顺序列出。基于主机的挂起原因分为候选主机原因和非候选主机原因,但使用此选项,您只会看到候选主机的原因。候选主机的原因可用于使作业运行。例如,对于原因“作业对保留资源 (mem) 的资源需求未满足”,用户可以选择减少作业的内存需求。

查看 LSF 集群和作业信息

点击 Grid 标签页,并参考左侧的 Grid 菜单栏来查看 LSF 集群和作业信息。

  • 查看集群和主机健康摘要: 转到 Grid 菜单栏的 Dashboards 部分。
  • 控制集群: 转到 Grid 菜单栏的 Management 部分(仅对具有 Cluster Control Management 领域权限的用户可用)。
  • 查看 LSF 作业信息: 转到 Grid 菜单栏的 Job Info 部分。提供按主机、主机组、队列、作业数组、应用程序或组级别的 LSF 作业信息,以及特定作业的详细信息和挂起原因历史。
  • 查看 LSF 用户和用户组信息: 转到 Grid 菜单栏的 User/Group Info 部分。
  • 查看主机和主机组的负载信息: 转到 Grid 菜单栏的 Load Info 部分。
  • 查看 LSF 主机和主机组信息: 转到 Grid 菜单栏的 Host Info 部分。
  • 查看每日统计、FLEXlm 许可证使用和作业参数: 转到 Grid 菜单栏的 Reports 部分。可以筛选特定信息的统计和批处理系统参数。
  • 配置 Grid 标签页设置: 点击 Grid 标签页,然后点击右侧的 Settings 标签页来配置 Grid 标签页中的项目。

(有关 Dashboards, Job Info, User/Group Info, Load Info, Host Info, Reports 各部分的详细信息,请参考 PDF 原文第 76-85 页)

查看集群和主机的时间序列图

时间序列图呈现依赖于时间的集群状态和详细信息,时间是这些折线图的 X 轴。

  • 查看方式:
    • 树视图 (Tree view): 点击 Graphs 标签页,然后点击右侧的 Tree view 标签页。按设备和集群组织访问所有图表。点击根级别名称查看摘要信息,点击树部分查看主机特定信息。使用放大镜查看更详细的信息,使用扳手图标显示 RRD 工具收集的调试信息。
    • 列表视图 (List view): 点击 Graphs 标签页,然后点击右侧的 List view 标签页。选择一个或多个集群名称,然后点击 View。
    • 预览视图 (Preview): 点击 Graphs 标签页,然后点击右侧的 Preview 标签页。可以按主机筛选以限制显示的图表数量。
    • 操作图标: 在查看数据行时,点击 View host job detail 或 View graphs 操作图标可查看特定行(如特定集群、主机或队列)的时间序列图。
  • 配置图表显示设置: 点击 Graphs 标签页,然后点击右侧的 Settings 标签页。可以配置图表外观、默认页面设置、缩略图大小、树/预览/列表视图模式的默认设置以及字体。

查看集群和主机的非时间序列图表

非时间序列图表呈现不依赖于时间的集群和主机统计信息。由于统计信息不具有时间敏感性,RTM 可以使用图形丰富的格式(如饼图和条形图)来呈现这些数据。

步骤:

  1. 点击 Cluster (或 Grid) 标签页。
  2. 在 Dashboards 部分,点击 Statistical。
  3. 在 Cluster Statistics 选择过滤器中,选择您希望以图表形式查看的数据类型。
  4. 如果图表旁边有 Selectable Reports 对话框,可以通过点击报告名称来选择不同的报告类型以查看不同的数据。

为监控 LSF 集群或许可证服务创建图表

RTM 提供了丰富的时序图,为集群和应用程序管理员及团队负责人提供对其环境运行情况的深入了解。RTM 中提供了许多开箱即用的图表,可用于深入了解作业处理方式和资源使用情况。

步骤:

  1. 点击 Console 标签页。
  2. 在 Create 下,点击 New Graphs。
  3. 在 Host 字段中选择您的 LSF 或许可证服务器。
  4. 在 Graph Types 字段中选择图表类别以筛选可用图表类型。
  5. 在 Graph Templates 列底部的 Create 字段中,选择要为 LSF 或许可证服务创建的图表类型。

后续操作:

  • 可以通过点击 Console > Management > Graph Management,然后点击主机或图表的名称来编辑图表。
  • 更多关于图表和图表模板的信息,请参考“图表和图表模板”文档。

调整 RTM (Tuning RTM)

高级用户可以修改 RTM 以满足其需求。

  • 更新 grid_add_cluster.php: 如果您向主机模板添加了图表模板、为数据查询创建了新的图表模板或创建了新的数据查询,则必须更新 grid_add_cluster.php。
  • 更改 Advocate 端口号: 如果默认的 8089 端口被其他应用程序硬编码使用,可以更改 Advocate 端口号。
    1. 在以下文件中搜索 8089 并更改端口号:/etc/init.d/advocate, /opt/advocate/advocate.init, /opt/advocate/command_advocate.py。
    2. 更新 Cacti 数据库:为 advocate_port 设置新端口号的值。
    3. 重启 Advocate 服务。

大型集群的性能调优

将 RRD 文件存储在单独的磁盘上

关于此任务:

  • 为提高性能,将 RRD 文件存储在与数据库不同的单独磁盘上,并创建指向新位置的符号链接。

步骤:

  1. 在单独的磁盘上创建目录,例如:mkdir /newDirectory。
  2. 将文件复制到新目录,例如:cp –p /opt/cacti/rra/* /newDirectory。
  3. 备份现有文件并创建符号链接,例如:
    1
    2
    
    mv /opt/cacti/rra /opt/cacti/rra.bak
    ln –s /newDirectory /opt/cacti/rra
    

增加数据库内存

关于此任务:

  • 如果您看到数据库内存不足的错误(通常是数据库错误 1114),请增加分配给数据库的最大内存。

步骤:

  1. 编辑 /etc/my.cnf 文件并增加 max_heap_table_size 的值。
  2. 重启 mysqld 服务:service mysqld restart。

为磁盘 I/O 繁重的系统启用按需 RRD 文件更新

关于此任务:

  • 如果您遇到高磁盘 I/O 等待时间的问题,请启用按需 RRD 文件更新。启用后如果问题仍然存在,可以考虑使用 Spine(Cacti 的附加功能)。

步骤:

  1. 转到 Console > Configuration > RTM Settings。
  2. 选择 Performance 标签页。
  3. 在 On Demand RRD Update Settings 部分,选中 Enable On Demand RRD Updating。
  4. (可选)通过修改 How Often Should Boost Update All RRDs 和 Maximum Records 字段的值来更改 RRD 文件的更新频率。
  5. 点击 Save。

配置并发轮询器进程

步骤:

  1. 转到 Console > Configuration > RTM Settings。
  2. 点击 Poller 标签页。
  3. 在 General 部分,更改 Maximum Concurrent Poller Processes 的值。
  4. 点击 Save。

启用数据库记录分区

关于此任务:

  • 数据库记录分区将较大的 LSF 作业数据表拆分为多个表,并在数据库维护操作期间加快处理速度。如果您每天有大量作业或希望延长保留作业摘要数据的时间,则需要分区。
  • 调整分区大小,使其最多包含约 200 万条记录。调整分区大小时,请考虑主机为数据库提供的内存量(每个作业记录在数据库中占用 4 KB)。
  • 您还可以指定每个分区使用的时间段。增加时间段意味着数据库包含更多用于整体分析的数据,但也会增加删除作业记录对系统的影响。

步骤:

  1. 转到 Console > Configuration > RTM Settings。
  2. 选择 Maint 标签页。
  3. 在 Large System Settings 部分,选中 Enable Record Partitioning 复选框。
  4. 在 Partition Size 字段中指定时间段。
  5. 在 Maximum Partitions 字段中指定要在数据库中保留的最大分区数。当分区表数量达到此数目时,RTM 会在创建新分区表之前删除最旧的分区表。增加分区数量意味着数据库包含更多用于整体分析的数据,但也会增加数据库的大小。
  6. 点击 Save。

配置数据收集频率

关于此任务:

  • 对于大型集群,更改数据收集频率。数据收集频率是为每个 LSF 集群配置的。
  • 如果您在 cacti.log 文件中持续看到类似以下的错误,请降低数据收集频率: ERROR: Run-On/Abended Process Detected for ClusterName:'Large Cluster', ClusterID:'1', Process:'GRIDJOBS', PID:'19749', Attempting to Kill PID

步骤:

  1. 转到 Console > Clusters > Clusters。
  2. 选择您要修改的 LSF 集群的名称。
  3. 点击 Poller 标签页。
  4. 您可以修改以下字段的值:
    • 在 Queue/Host/Load Collection Settings 部分:
      • Collection Frequency and Max Allowed Runtime
    • 在 Job Collection Settings 部分:
      • Minor Collection Frequency, Major Collection Frequency, and Max Allowed Runtime
  5. 点击 Save。

增加 LSF API 超时值

关于此任务:

  • 如果您在 cacti.log 文件中看到指示 LSF API 超时的错误,请增加超时值。

步骤:

  1. 转到 Console > Clusters > Clusters。
  2. 选择您要修改的 LSF 集群的名称。
  3. 点击 Advanced 标签页。
  4. 在 Cluster Connection Timeout Settings 部分,修改以下字段的值:
    • Base Timeout
    • Batch Timeout
    • Batch Job Info Timeout
    • Batch Job Info Retries
  5. 点击 Save。

增强数据库性能

关于此任务:

  • 将 my.cnf 中的 innodb_flush_log_at_trx_commit 设置更改为 2,以每秒而不是每次查询提交时将数据库日志刷新到磁盘。此更改减少了随机磁盘 I/O 量,从而提高了 RTM 的可伸缩性。

步骤:

  1. 编辑 /etc/my.cnf 文件并将 innodb_flush_log_at_trx_commit 的值更改为 2。
  2. 重启 mysqld 服务:service mysqld restart。

维护数据库

以下是您可以采取的维护或优化数据库的操作:

  • 在数据库中设置记录分区
  • 备份和恢复 RTM 系统设置

在数据库中设置记录分区

关于此任务:

  • 在大型数据库中,删除旧的作业记录和其他数据库维护任务可能会对数据库性能产生显著影响。通过启用记录分区可以提高数据库性能。分区将数据库内的表划分为多个较小的表。从较小的表中删除作业记录对活动表的系统性能影响小于从较大的表中删除作业记录。
  • 您可以为 RTM 监控的以下数据库表设置分区(所有以下表都会受到影响):
    • GRID_ARRAYS
    • GRID_JOB_DAILY_STATS
    • GRID_JOBS_FINISHED
    • GRID_JOBS_MEMPERF
    • GRID_JOBS_RUSAGE

步骤:

  1. 点击 Console 标签页。
  2. 在 Configuration 部分,点击 RTM Settings。
  3. 点击 Maint 标签页。
  4. 在 System Maintenance Settings 部分,您可以在 Database Maintenance Time 字段中指定时间,以指示何时必须从数据库中删除旧的数据库记录。所有分区数据始终根据您在该页面部分指定的保留期进行保留。
  5. 向下滚动到页面的 Large System Settings 部分,并确保设置了以下选项:
    • Enable Record Partitioning: 选中此框以在数据库中启用记录分区。如果您每天有大量作业或希望延长保留作业摘要数据的时间,则需要分区。
    • Partition Size: 指定不同分区之间的时间。增加时间段意味着数据库包含更多用于整体分析的数据,但也会增加删除作业记录对系统的影响。
  6. 点击 Save 保存数据库记录分区设置。

结果:

  • 分区表具有数字后缀(_v000, _v001, … _vnnn)。最新的表具有最大的编号。

备份和恢复 RTM 系统设置

RTM 将系统和图表设置保存在 Cacti 数据库中。您可以使用 RTM 控制台备份 Cacti 数据库的操作,以便稍后恢复 RTM 系统。

  • 用途: 如果您更改了 RTM 主机中的配置并希望恢复(例如,错误导入 Cacti 模板导致图表不再更新,或意外从 RTM 控制台删除了集群),可以恢复 RTM 系统和图表设置,并恢复到原始的备份设置。

  • 恢复命令示例: mysql cacti < backup/*.sql

  • 限制:
    • RTM 控制台无法恢复 RTM 监控的集群的所有作业性能数据。RTM 中任何此类数据都可能已过时。
    • 如果要完全备份整个数据库,必须使用 mysqldump 命令。
    • 如果经常使用 mysqldump 命令,则不能使用 MyISAM 表结构。
  • 备份内容:

    • lsfpollerd.conf: 包含凭据的数据库文件。

    • lsf.conf: 与每个集群关联的 lsf.conf 文件。

    • ego.conf (仅适用于 LSF 8.0 集群): 与每个集群关联的 ego.conf 文件。

    • server.key 和 server.crt: 用作 Advocate 的 httpd 认证文件。

      除了以下大型表外,其它Cacti 数据库中的所有表都备份:

      • GRID_ARRAYS, GRID_ARRAYS_FINISHED
      • GRID_JOB_DAILY_STATS, GRID_JOB_INTERVAL_STATS
      • GRID_JOBS, GRID_JOBS_FINISHED
      • GRID_JOBS_JOBHOSTS, GRID_JOBS_JOBHOSTS_FINISHED
      • GRID_JOBS_MEMPERF
      • GRID_JOBS_PENDREASONS, GRID_JOBS_PENDREASONS_FINISHED
      • GRID_JOBS_REQHOSTS, GRID_JOBS_REQHOSTS_FINISHED
      • GRID_JOBS_RUSAGE
      • LIC_DAILY_STATS, LIC_FLEXLM_LOG, LIC_INTERVAL_STATS, LIC_LUM_EVENTS
      • POLLER_OUTPUT, POLLER_OUTPUT_BOOST
      • SYSLOG, SYSLOG_REMOVED
  • 操作:
    • 使用 RTM 控制台备份 RTM 系统
      • 启用自动数据归档

使用 RTM 控制台备份 RTM 系统

关于此任务:

  • 在升级到较新版本的 RTM 之前,必须首先备份现有的 Cacti 数据库。在计划的服务器维护期间备份 Cacti 数据库非常重要,您可以恢复到以前的 RTM 系统和图表设置。

步骤:

  1. 转到 Console > Configuration > RTM Settings。
  2. 点击 Maint 标签页。
  3. 向下滚动到页面的 Database Backups 部分,并确保设置了以下选项:
    • Backup Cacti Database: 选中此框以确保在运行维护脚本时备份 Cacti 数据库。
    • Backup Schedule: 指定备份计划为 Daily 或 Weekly。
    • Weekly Backup Day: 如果选择 Weekly 备份,请指定要进行备份的日期。
    • Backup Generations: 指定要维护的备份文件副本数。
    • Database Backup Location: 如果备份目录尚不存在,请提供位置。(如果目录存在,则在目录字段下方显示消息“[OK: DIR FOUND]”)。
    • Post Backup Command: 提供在 Cacti 数据库和计划备份完成后运行的备份后脚本。确保文件对 RTM 服务帐户既可执行又可读。
  4. 在 Utilities 部分,点击 RTM Utilities。
  5. 在 RTM Utilities 页面的 Database Administration 部分,点击 Force Cacti Backup。页面底部的 Backup Files 表将更新,显示新创建的备份文件、修改日期和文件大小。
  6. 点击备份文件名将其下载到指定位置。
  7. 下载完成后,验证 .tgz 文件包含必要的 SQL 文件、配置文件 (rtm.lic, lsfpollerd.conf, server.crt, server.key) 以及每个集群的 lsf.conf 和 ego.conf(如果适用)。

启用自动数据归档

关于此任务:

  • 启用数据归档可在计划的服务器维护期间将现有的作业和作业相关数据保存到归档数据库。

步骤:

  1. 点击 Console 标签页。
  2. 在 Configuration 部分,点击 RTM Settings。
  3. 点击 Archiving 标签页。
  4. 要启用现有作业和作业相关数据的归档,请选中 Enable Data Archiving 复选框并指定数据归档设置。
  5. 点击 Save 保存数据归档设置。

手动备份或恢复 RTM 数据库 (旧版本)

对于较旧版本的 RTM,您可能需要手动备份数据库。步骤包括:备份网站、备份数据库、备份 RTM 轮询器,然后升级 Cacti 网站和 Grid 插件、升级数据库、升级 RTM 轮询器。

  • 备份网站: 备份 Cacti 目录,通常排除日志和 rra 目录。需要备份 include/global.php(包含数据库连接和插件列表)。如果修改了默认 RTM 轮询器脚本或数据查询,则分别备份 scripts 和 resource 目录。
  • 备份数据库: RTM 提供 database_backup.php 工具备份数据库模式和重要的 Cacti/RTM 配置表,但不包括大型作业历史表。在 Console > Configuration > RTM Settings > Maint 指定备份位置后,运行 php -q database_backup.php。
  • 备份 RTM 轮询器: 备份 RTM 轮询器目录(例如 /opt/rtm 或 /usr/local/grid 下的 bin, lic, lsf* 目录)。
  • 升级 Cacti 网站和 Grid 插件: 注意文件所有权(通常是 cacti:cacti)。将升级包中的 cacti 目录复制到目标位置,并确保 config.php 文件不变。
  • 升级数据库: 运行 php -q database_upgrade.php 来更新数据库模式以适应新功能。
  • 升级 RTM 轮询器: 验证文件权限。将升级包中的 poller 目录复制到轮询器安装位置并设置正确的所有权。

设置远程数据库主机

前提条件:

  • 数据库服务器端口(默认为 3306)在防火墙上已打开。
  • 目标数据库主机满足以下要求:
    • 运行受支持的操作系统。
    • 至少 4 GB RAM 和 40 GB 硬盘空间。
    • 已安装数据库。
    • 数据库主机名和 RTM 主机名可以相互解析。

关于此任务:

  • 默认情况下,RTM 主机充当数据库主机。您可以选择将数据库设置在另一台主机上,以分散 RTM 活动或使用更优化的数据库主机。
  • 重要提示: 请在 RTM 安装的初始设置期间执行这些步骤。如果在 RTM 运行一段时间后执行这些步骤,数据库传输到另一台主机可能需要相当长的时间,在此期间数据库将停机。

步骤:

  1. 手动备份现有 RTM 数据库:

    使用 RTM 控制台备份 (Console > Configuration > RTM Settings > Maint 和 Console > Utilities > RTM Utilities > Force Cacti Backup)。

  2. 准备 RTM 主机进行数据库转换:

    a. 登录 RTM 主机。

    b. 停止所有基本服务:lsfpollerd, licpollerd, crond,并禁用 mysqld 服务。

    c. 创建 SQL 数据库内存转储:

    1
    2
    3
    4
    
    ```sql
    mysqldump cacti > cactidump.sql
    mysqldump mysql time_zone_name > timezone.sql
    ``` ​    
    

    记录当前目录,以便将 SQL 转储文件复制到新的数据库主机。

    d. 修改 RTM 配置文件以引用新的数据库主机。在以下文件中,将 localhost 更改为新的数据库主机名,或将 127.0.0.1 更改为新的数据库 IP 地址:

    1
    2
    3
    4
    5
    6
    
    /RTM_TOP/cacti/include/config.php
    /RTM_TOP/rtm/lsf<version_number>/bin/grid.conf
    /RTM_TOP/rtm/etc/lsfpollerd.conf
    /etc/rsyslog.conf
    /RTM_TOP/cacti/plugins/syslog/config.php
    /RTM_TOP/rtm/etc/lic.conf
    

    e. 更新 RTM 管理主机上的 ODBC 配置文件 (/etc/odbc.ini),指定新的远程数据库服务器信息(Server, Database, UID, PASSWORD, Port 等)。使用 odbcinst -j 查找文件位置。

  3. 设置新的数据库主机

    a. 登录新的数据库主机。

    b. 安装并启动数据库服务(例如 MySQL/MariaDB)。

    c. 创建新的 RTM 数据库:mysqladmin -u root create cacti。

    d. 分配适当的数据库权限,允许 RTM 主机连接:

    1
    2
    3
    4
    
    ```sql
    GRANT ALL ON cacti.* TO cacti@<rtm_host_ip> IDENTIFIED BY 'admin';
    GRANT SELECT ON mysql.time_zone_name TO cacti@<rtm_host_ip> IDENTIFIED BY 'admin';
    ```
    

    e. 备份原始 my.cnf,并将 RTM 主机 <RTM_TOP>/rtm/share 中的 my.cnf.*.innodb 文件复制到新数据库主机的 /etc 目录下。

    f. 将 SQL 数据库转储文件从 RTM 主机复制到新的数据库主机。

    g. 将 SQL 数据库转储文件导入新数据库:

    1
    2
    3
    4
    
    ```bash
    mysql cacti < /tmp/cactidump.sql
    mysql mysql < /tmp/timezone.sql
    ```
    

    h. 重启数据库服务。

  4. 重启服务并验证:

    a. 登录 RTM 主机。

    b. 重启基本服务:crond, rsyslog, lsfpollerd, licpollerd。

    c. 验证数据库设置是否正确,检查 lsfpollerd 和 licpollerd 的状态。如果它们正在运行,则数据库设置正确。