71 lines
4.1 KiB
Plaintext
71 lines
4.1 KiB
Plaintext
LogGraph README
|
|
|
|
1 - About
|
|
LogGraph is an application for viewing and filtering zookeeper logs. It can handle transaction logs and message logs.
|
|
|
|
2 - Compiling
|
|
|
|
Run "ant jar" in src/contrib/loggraph/. This will download all dependencies and compile all the loggraph code.
|
|
|
|
Once compilation has finished, you can run it the the loggraph.sh script in zookeeper-contrib/zookeeper-contrib-loggraph/src/main/resources.
|
|
This will start and embedded web server on your machine.
|
|
Navigate to http://localhost:8182/graph/main.html
|
|
|
|
3 - Usage
|
|
LogGraph presents the user with 4 views,
|
|
|
|
a) Simple log view
|
|
This view simply displays the log text. This isn't very useful without filters (see "Filtering the logs").
|
|
|
|
b) Server view
|
|
The server view shows the interactions between the different servers in an ensemble. The X axis represents time.
|
|
* Exceptions show up as red dots. Hovering your mouse over them will give you more details of the exception
|
|
* The colour of the line represents the election state of the server.
|
|
- orange means LOOKING for leader
|
|
- dark green means the server is the leader
|
|
- light green means the server is following a leader
|
|
- yellow means there isn't enough information to determine the state of the server.
|
|
* The gray arrows denote election messages between servers. Pink dashed arrows are messages that were sent but never delivered.
|
|
|
|
c) Session view
|
|
The session view shows the lifetime of sessions on a server. Use the time filter to narrow down the view. Any more than about 2000 events will take a long time to view in your browser.
|
|
The X axis represents time. Each line is a session. The black dots represent events on the session. You can click on the black dots for more details of the event.
|
|
|
|
d) Stats view
|
|
There is currently only one statistics view, Transactions/minute. Suggestions for other statistic views are very welcome.
|
|
|
|
4 - Filtering the logs
|
|
The logs can be filtered in 2 ways, by time and by content.
|
|
|
|
To filter by time simply move the slider to the desired start time. The time window specifies how many milliseconds after and including the start time will be displayed.
|
|
|
|
Content filtering uses a adhoc filtering language, using prefix notation. The language looks somewhat similar to lisp. A statement in the language takes the form (op arg arg ....). A statement resolves to a boolean value. Statements can be nested.
|
|
|
|
4.1 - Filter arguments
|
|
An argument can be a number, a string or a symbol. A number is any argument which starts with -, + or 0 to 9. If the number starts with 0x it is interpretted as hexidecimal. Otherwise it is interpretted as decimal. If the argument begins with a double-quote, (") it is interpretted as a string. Anything else is interpretted as a symbol.
|
|
|
|
4.2 - Filter symbols
|
|
The possible filter symbols are:
|
|
|
|
client-id : number, the session id of the client who initiated a transaction.
|
|
cxid : number, the cxid of a transaction
|
|
zxid : number, the zxid of a transaction
|
|
operation : string, the operation being performed, for example "setData", "createSession", "closeSession", "error", "create"
|
|
|
|
4.3 - Filter operations
|
|
The possible filter operations are:
|
|
|
|
or : logical or, takes 1 or more arguments which must be other statements.
|
|
and : logical and, takes 1 or more arguments which must be other statements.
|
|
not : logical not, takes 1 argument which must be another statement.
|
|
xor : exclusive or, takes 1 or more arguments which must be other statements.
|
|
= : equals, takes 1 or more arguments, which must all be equal to each other to return true.
|
|
> : greater than, takes 1 or more arguments, to return true the 1st argument must be greater than the 2nd argument which must be greater than the 3rd argument and so on...
|
|
< : less than, takes 1 or more arguments, to return true the 1st argument must be less than the 2nd argument which must be less than the 3rd argument and so on...
|
|
|
|
4.3 - Filter examples
|
|
Give me all the setData operations with session id 0xdeadbeef or 0xcafeb33r but not with zxid 0x12341234 ->
|
|
|
|
(and (= operation "setData") (or (= client-id 0xdeadbeef) (= client-id 0xcafeb33r)) (not (= zxid 0x12341234)))
|
|
|