Samza REST服务监视器
Samza REST支持向服务添加监视器的功能。监视器本质上是可以定期运行的任务。它为用户提供了定义于特定单个监视器的配置的能力。这些配置通过 Config 实例注入到监视器实例中。
监视器配置
监视器的所有配置键应带有 monitor.{monitorName} 的前缀。由于每个监视器预期具有唯一的名称,因此这些前缀在监视器配置中提供命名空间。
每个监视器都需要以下配置。
名称 | 默认 | 描述 |
---|---|---|
monitor.monitorName.scheduling.interval.ms | 这定义了名为monitorName的监视器的周期调度间隔(以毫秒为单位)。如果未定义此配置,则默认为60秒。 | |
monitor.monitorName.factory.class | 必需:这应该包含实现MonitorFactory接口的类的完全限定名称。由工厂实施实例化的监视器将被安排定期执行。预期MonitorFactory接口的自定义实现将createMonitor方法中的Config和MetricsRegistry实例注入到Monitors中。 |
例如,两个名为 NMTaskMonitor 和 RMTaskMonitor 的监视器的配置应如下定义:
monitor.RMTaskMonitor.factory.class=org.apache.samza.monitor.RMTaskMonitor
monitor.RMTaskMonitor.scheduling.interval.ms=1000
monitor.RMTaskMonitor.custom.config.key1=configValue1
monitor.NMTaskMonitor.factory.class=org.apache.samza.monitor.NMTaskMonitor
monitor.NMTaskMonitor.scheduling.interval.ms=2000
monitor.NMTaskMonitor.custom.config.key2=configValue2
实施新的监视器
使用应该定期执行的一些行为来实现 Monitor 界面。监视器是在 SAMZA Rest Service 中调用某些方法的 Java 代码,运行一个 bash 脚本来重新启动失败的 NodeManager,或者清除Host Affinity 剩下的旧的 RocksDB sst 文件。
实现 MonitorFactory 接口,用于实例化 Monitor。每个 Monitor 实现都应该有一个关联的 MonitorFactory 实现,它负责实例化监视器。
向 Samza REST服务添加新的监视器
将 MonitorFactory 实现的完全限定类名添加到 monitor.monitorName.factory.classservice config 中的属性中。将配置密钥 monitor.monitorName.scheduling.interval.ms 设置为调度间隔(以毫秒为单位)。
配置密钥 monitor.monitorName.scheduling.interval.ms 定义方法的周期调度间隔,单位为 monitor()毫秒。
从监视器报告指标
Samza REST服务允许用户从其显示器创建和报告指标。对度量系统的报告指标由度量报告器封装,该指标应在 samza-rest 配置文件中定义。Samza REST服务中度量报告员的配置与Samza Jobs的配置相同。
更多建议: