# 拓扑事件检查器
## 简介
拓扑事件检查器提供了在storm拓扑的不同阶段时查看元组的功能。 这可以用于在拓扑运行时检查在拓扑管线中的a spout(喷口)或a bolt(螺栓)处发射的元组,而不用停止或重新部署拓扑。从the spouts(喷口)到the bolts(螺栓)元组的正常流动是不受找开事件记录的影响。
## 启用事件日志记录
注意:首先事件日志记录需要将storm的"topolopy.eventlogger.executors"参数设置成非零的值。 详情请查询 [Configuration](#config) 章节内容。
可以通过在拓扑视图中的拓扑操作下单击“调试”按钮来记录事件。这会记录来自所有spouts(喷口)和bolts(螺栓)的元组以指定的采样百分比在拓扑中。
![](https://img.kancloud.cn/43/e0/43e069668f72a9cb0adb79bc01a9a5ba_2826x526.jpg "Enable Eventlogging")
Figure 1: Enable event logging at topology level.
您还可以通过转到相应的组件页面来启用特定(spout)喷口或(bolt)螺栓级别的事件记录和 单击组件操作下的“调试”。
![](https://img.kancloud.cn/d6/6e/d66e3f2aa177871292b220679a609f57_2828x502.jpg "Enable Eventlogging at component level")
Figure 2: Enable event logging at component level.
## 查看事件日志
Storm "logviewer" 应该运行查看已记录的元组。如果没有运行,则可以从Storm安装目录运行“bin/storm logviewer” 命令启动日志查看器。要查看元组,请从Storm UI中访问特定的spout(喷口)或bolt(螺栓)组件页面,然后单击组件摘要下的“事件”链接(如上图2所示)。
这将打开一个如下所示的视图,您可以在不同的页面之间导航并查看自己已记录的元组。
![](https://img.kancloud.cn/cf/6a/cf6ae8d8f583599bca0a58c19214398e_2862x656.jpg "Viewing logged tuples")
Figure 3: Viewing the logged events.
事件日志中的每一行都包含一个与从特定spout(喷口)/bolt(螺栓)(已逗号分隔的格式)发出的元组相对应的条目。
`Timestamp, Component name, Component task-id, MessageId (in case of anchoring), List of emitted values`
## 禁用事件日志
可以通过在Storm UI中的拓扑或组件操作下单击“停止调试”,在特定组件或拓扑级别上禁用事件日志。
![](https://img.kancloud.cn/d5/4c/d54c925e9dd03e34143c0f928d3bc813_2832x380.jpg "Disable Eventlogging at topology level")
Figure 4: Disable event logging at topology level.
## Configuration
事件记录通过将事件(元组)从每个组件发送到内部事件日志记录工具。默认情况下,Storm不会启动任何事件记录器任务,但可以通过在运行拓扑时设置以下参数(通过在storm.yaml中设置或通过命令传递选项)轻松更改事件记录器任务。
| Parameter | Meaning |
| --- | --- |
| "topology.eventlogger.executors": 0 | No event logger tasks are created (default). |
| "topology.eventlogger.executors": 1 | One event logger task for the topology. |
| "topology.eventlogger.executors": nil | One event logger task per worker. |
## 扩展事件日志
Strom提供了一个“IEventLogger”接口,由事件记录器螺栓用于记录事件。这个默认的实现是FileBasedEventLogger,它将事件记录到一个事件中。日志文件(`logs/workers-artifacts/<topology-id>/<worker-port>/events.log`)。可以添加“IEventLogger”接口的替代实现来扩展事件记录功能(例如,构建搜索索引或将事件记录到数据库中) ```java /** * EventLogger interface for logging the event info to a sink like log file or db * for inspecting the events via UI for debugging. _/ public interface IEventLogger { /_* * Invoked during eventlogger bolt prepare. */ void prepare(Map stormConf, TopologyContext context);
```
/**
* Invoked when the {@link EventLoggerBolt} receives a tuple from the spouts or bolts that has event logging enabled.
*
* @param e the event
*/
void log(EventInfo e);
/**
* Invoked when the event logger bolt is cleaned up
*/
void close();
```
} ```
- Storm 基础
- 概念
- Scheduler(调度器)
- Configuration
- Guaranteeing Message Processing
- 守护进程容错
- 命令行客户端
- Storm UI REST API
- 理解 Storm Topology 的 Parallelism(并行度)
- FAQ
- Layers on Top of Storm
- Storm Trident
- Trident 教程
- Trident API 综述
- Trident State
- Trident Spouts
- Trident RAS API
- Storm SQL
- Storm SQL 集成
- Storm SQL 示例
- Storm SQL 语言参考
- Storm SQL 内部实现
- Flux
- Storm 安装和部署
- 设置Storm集群
- 本地模式
- 疑难解答
- 在生产集群上运行 Topology
- Maven
- 安全地运行 Apache Storm
- CGroup Enforcement
- Pacemaker
- 资源感知调度器 (Resource Aware Scheduler)
- 用于分析 Storm 的各种内部行为的 Metrics
- Windows 用户指南
- Storm 中级
- 序列化
- 常见 Topology 模式
- Clojure DSL
- 使用没有jvm的语言编辑storm
- Distributed RPC
- Transactional Topologies
- Hooks
- Storm Metrics
- Storm 状态管理
- Windowing Support in Core Storm
- Joining Streams in Storm Core
- Storm Distributed Cache API
- Storm 调试
- 动态日志级别设置
- Storm Logs
- 动态员工分析
- 拓扑事件检查器
- Storm 与外部系统, 以及其它库的集成
- Storm Kafka Integration
- Storm Kafka 集成(0.10.x+)
- Storm HBase Integration
- Storm HDFS Integration
- Storm Hive 集成
- Storm Solr 集成
- Storm Cassandra 集成
- Storm JDBC 集成
- Storm JMS 集成
- Storm Redis 集成
- Azue Event Hubs 集成
- Storm Elasticsearch 集成
- Storm MQTT(Message Queuing Telemetry Transport, 消息队列遥测传输) 集成
- Storm MongoDB 集成
- Storm OpenTSDB 集成
- Storm Kinesis 集成
- Storm Druid 集成
- Storm and Kestrel
- Container, Resource Management System Integration
- Storm 高级
- 针对 Storm 定义一个不是 JVM 的 DSL
- 多语言协议
- Storm 内部实现
- 翻译进度