# 拓撲事件檢查器
## 簡介
拓撲事件檢查器提供了在storm拓撲的不同階段時查看元組的功能。 這可以用于在拓撲運行時檢查在拓撲管線中的a spout(噴口)或a bolt(螺栓)處發射的元組,而不用停止或重新部署拓撲。從the spouts(噴口)到the bolts(螺栓)元組的正常流動是不受找開事件記錄的影響。
## 啟用事件日志記錄
注意:首先事件日志記錄需要將storm的"topolopy.eventlogger.executors"參數設置成非零的值。 詳情請查詢 [Configuration](#config) 章節內容。
可以通過在拓撲視圖中的拓撲操作下單擊“調試”按鈕來記錄事件。這會記錄來自所有spouts(噴口)和bolts(螺栓)的元組以指定的采樣百分比在拓撲中。

Figure 1: Enable event logging at topology level.
您還可以通過轉到相應的組件頁面來啟用特定(spout)噴口或(bolt)螺栓級別的事件記錄和 單擊組件操作下的“調試”。

Figure 2: Enable event logging at component level.
## 查看事件日志
Storm "logviewer" 應該運行查看已記錄的元組。如果沒有運行,則可以從Storm安裝目錄運行“bin/storm logviewer” 命令啟動日志查看器。要查看元組,請從Storm UI中訪問特定的spout(噴口)或bolt(螺栓)組件頁面,然后單擊組件摘要下的“事件”鏈接(如上圖2所示)。
這將打開一個如下所示的視圖,您可以在不同的頁面之間導航并查看自己已記錄的元組。

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中的拓撲或組件操作下單擊“停止調試”,在特定組件或拓撲級別上禁用事件日志。

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 內部實現
- 翻譯進度