rbmhtechnology / eventuate-tools Goto Github PK
View Code? Open in Web Editor NEWTools to support eventuate based applications.
License: Apache License 2.0
Tools to support eventuate based applications.
License: Apache License 2.0
From @magnusart on July 23, 2015 7:39
Based on the discussion on Gitter I'd like to discuss the design of a tool that would allow team members to query and view event logs for support issues, debugging and testing purposes.
Event log payloads are not available directly by querying Cassandra or other storages since all event log payloads are serialized into binary blobs. Trying to make sense of these blobs without proper deserialization support becomes an exercise in frustration. With a hex editor you can discern some tidbits of information.
Is there is a way to deserialize java serialization, proto buf or thrift into a human readable format without knowing anything about the data apart from the protocol before hand?
I'm not familiar enough with the formats to judge above, but I'm guessing it is not possible and that we need to have the data model available to deserialize with field labels visible.
I'm leaning towards a desktop application, since it is very convenient to not rely on a server to be up to be able to troubleshoot. But if we cannot solve generic deserialization then a server application would be the most obvious choice.
Copied from original issue: RBMHTechnology/eventuate#88
The ReplicationEndpointGauge
returns a structured object (ReplicationEndpointMetrics
), however spring-boot for example only supports gauges returning simple numbers. So there should be an alternative set of gauges that just return numbers. As the replication partners are not necessarily know in advance this set has to adapt at runtime and thus cannot be implemented as dropwizrd's MetricSet
.
From @krasserm on September 14, 2015 12:55
Copied from original issue: RBMHTechnology/eventuate#110
The actors involved in health monitoring de-register all health checks when stopped. This is fine, if they are stopped on purpose for example through a corresponding stopMonitoring
call. However if they are stopped prematurely for example through unexpected termination of the ActorSystem they should rather report all monitored item as unhealthy with an unknown status. One can see unexpected ActorSystem termination for example when Eventuate's cassandra extension cannot access the database at event log startup.
An eventuate application should be enabled to expose metrics about the replication state. In particular the following numbers should be exposed per replication endpoint and per log:
Initial implementation is based on dropwizard's metrics library, but support for other metrics libraries can follow.
please:
eventuate -> v 0.8.1
kamon -> v 0.6.5 (both 2.11 and 2.12)
From @krasserm on September 14, 2015 12:7
An Eventuate application version 1 is replicated across multiple locations and shall be upgraded to version 2. In the following description, a single local event log per location is assumed. This can be easily extended to multiple event logs. Depending on version compatibility, several scenarios can be distinguished.
Version 2 is backwards compatible to version 1 and version 1 is forward compatible to version 2. In this case, locations can be upgraded incrementally with the following procedure at each location.
Update: this section is obsolete with RBMHTechnology/eventuate#218 and the procedure described in the previous section can be applied.
Version 2 is backwards compatible to version 1 but version 1 is not forward compatible to version 2. In this case, locations can also be upgraded incrementally with the following procedure at each location.
Version 2 is not backwards compatible to version 1. This scenario may arise after a more complex log migration and locations should be upgraded with the following procedure.
Copied from original issue: RBMHTechnology/eventuate#107
Currently LogViewer allows to select a range of events based on the event's sequence numbers. This should be extended to support content based filtering, i.e. select only those events that match a given criterion.
Note that content based filtering is applied client-side, i.e. all events are retrieved from the source log, but only those that match the criterion are printed.
Eventuate tries to establish a replication connection on activation of an ReplicationEndpoint
. Un/Available
messages for this replication connection are emitted after the connection is successfully established. This makes current replication health reporting appear only after the initial connection is established. If the connection cannot be established replication health is not reported at all. As a connection that cannot be established can be considered unhealthy it should be reported accordingly.
Currently the log-viewer uses a hard-coded timeout of 15s when reading events from a remote log. It should instead use eventuate.log.replication.remote-read-timeout
From @krasserm on September 14, 2015 13:4
Copied from original issue: RBMHTechnology/eventuate#111
From @krasserm on September 14, 2015 14:21
Export events and their metadata (schema, ...) for long-term storage (on HDFS, for example).
Copied from original issue: RBMHTechnology/eventuate#112
Currently the PersistenceHealthMonitor will only create a Health.Result
for an event-log if the status of the event-log's CircuitBreaker has changed.
This means that even if an application is up and running and event log persistence is working with e.g. a Cassandra backend the status will not be exposed as being up nor done. A <prefix>.persistence-of.<log-id>
simply is not present.
I would have expected an <prefix>.persistence-of.<log-id>
entry in any case reflecting the current status.
In the first step the tool simply prints a string representation of a selection of DurableEvents to stdout. The application writing the log must be running for this and the log viewer tool must have access to the class definitions of the event's payload and corresponding serializers. This tool is the first step for a more sophisticated tool as described in eventuate issue #88
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.