Introduction to Synoptic

Similar documents
Also on the Performance tab, you will find a button labeled Resource Monitor. You can invoke Resource Monitor for additional analysis of the system.

Hypercosm. Studio.

LICENSE4J FLOATING LICENSE SERVER USER GUIDE

Rose & Cylc Introduction

Internet Firewall CSIS Packet Filtering. Internet Firewall. Examples. Spring 2011 CSIS net15 1. Routers can implement packet filtering

CLC Server Command Line Tools USER MANUAL

The BSN Hardware and Software Platform: Enabling Easy Development of Body Sensor Network Applications

Java 7 Recipes. Freddy Guime. vk» (,\['«** g!p#« Carl Dea. Josh Juneau. John O'Conner

Forensic Analysis of Internet Explorer Activity Files

JustClust User Manual

For Introduction to Java Programming, 5E By Y. Daniel Liang

IBM Operational Decision Manager Version 8 Release 5. Getting Started with Business Rules

A Sample OFBiz application implementing remote access via RMI and SOAP Table of contents

How to develop your own app

A QUICK OVERVIEW OF THE OMNeT++ IDE

CA Workload Automation Agent for Databases

Data Networks Project 2: Design Document for Intra-Domain Routing Protocols

Fundamentals of UNIX Lab Networking Commands (Estimated time: 45 min.)

CNT5106C Project Description

List of FTP commands for the Microsoft command-line FTP client

Developing NFC Applications on the Android Platform. The Definitive Resource

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science

Bitrix Site Manager ASP.NET. Installation Guide

To reduce or not to reduce, that is the question

Configuring Backup Settings. Copyright 2009, Oracle. All rights reserved.

HP Data Protector Integration with Autonomy IDOL Server

THE SNMP PROTOCOL THE SNMP REQUEST MIB SATELLAR 2DS/20DS SIMPLE NETWORK MANAGEMENT PROTOCOL SATELLAR MANAGEMENT WITH SNMP GET AND SET SMART RADIO

Integrating VoltDB with Hadoop

Beam Loss Monitor Software Guide

Documentum Developer Program

Job Reference Guide. SLAMD Distributed Load Generation Engine. Version 1.8.2

EMC Documentum Content Services for SAP iviews for Related Content

Rumen. Table of contents

GLBP - Gateway Load Balancing Protocol

Deploying Microsoft Operations Manager with the BIG-IP system and icontrol

Logging and SNMP Trap Notification Of Events. Isonas Access Control System. Release 12 June 2007

Enhanced Connector Applications SupportPac VP01 for IBM WebSphere Business Events 3.0.0

How To Use The Correlog With The Cpl Powerpoint Powerpoint Cpl.Org Powerpoint.Org (Powerpoint) Powerpoint (Powerplst) And Powerpoint 2 (Powerstation) (Powerpoints) (Operations

Pulse Secure Client. Customization Developer Guide. Product Release 5.1. Document Revision 1.0. Published:

COSC 6397 Big Data Analytics. 2 nd homework assignment Pig and Hive. Edgar Gabriel Spring 2015

A Visualization System and Monitoring Tool to Measure Concurrency in MPICH Programs

Hadoop Streaming. Table of contents

Simple Network Management Protocol

Getting Started with the Internet Communications Engine

Visualizing molecular simulations

GTP-32 Control Processor. Overview Operation Web Pages Built-in Diagnostics Event Logs Troubleshooting

I. ADDITIONAL EVALUATION RESULTS. A. Environment

Copyright 2013 Consona Corporation. All rights reserved

MarkLogic Server. Connector for SharePoint Administrator s Guide. MarkLogic 8 February, 2015

Solution White Paper Connect Hadoop to the Enterprise

Version control. HEAD is the name of the latest revision in the repository. It can be used in subversion rather than the latest revision number.

MarkLogic Server. Java Application Developer s Guide. MarkLogic 8 February, Copyright 2015 MarkLogic Corporation. All rights reserved.

A Brief Overview of SONET Technology

Monitoring, Tracing, Debugging (Under Construction)

$ftp = Net::FTP->new("some.host.name", Debug => 0) or die "Cannot connect to some.host.name: $@";

RGK60 RGK50 RGAM10 RGAM20 RGAM4 Generator set control units

Oracle EXAM - 1Z Oracle Weblogic Server 11g: System Administration I. Buy Full Product.

Hands On Activities: TCP/IP Network Monitoring and Management

Magento Search Extension TECHNICAL DOCUMENTATION

1 Introduction. 2 An Interpreter. 2.1 Handling Source Code

Monitoring Replication

Migrating to vcloud Automation Center 6.1

Using the Push Notifications Extension Part 1: Certificates and Setup

IDS 561 Big data analytics Assignment 1

Figure 1. perfsonar architecture. 1 This work was supported by the EC IST-EMANICS Network of Excellence (#26854).

Avaya ExpertNet Lite Assessment Tool

Emerald. Network Collector Version 4.0. Emerald Management Suite IEA Software, Inc.

NAT TCP SIP ALG Support

Release Notes for Epilog for Windows Release Notes for Epilog for Windows v1.7/v1.8

How to test and debug an ASP.NET application

Understanding Task Scheduler FIGURE Task Scheduler. The error reporting screen.

UML-based Test Generation and Execution

Introduction to Software Testing Chapter 8.1 Building Testing Tools Instrumentation. Chapter 8 Outline

TREK HOSC PAYLOAD ETHERNET GATEWAY (HPEG) USER GUIDE

Online Backup Client 3.9 Manual

Network Security EDA /2012. Laboratory assignment 4. Revision A/576, :13:02Z

File S1: Supplementary Information of CloudDOE

Ankush Cluster Manager - Hadoop2 Technology User Guide

Using IPM to Measure Network Performance

Windows PowerShell Cookbook

CSE 473 Introduction to Computer Networks. Exam 2 Solutions. Your name: 10/31/2013

OSKAR Example Revision: 8

ProxiBlue Dynamic Category Products

IBM WebSphere Adapter for PeopleSoft Enterprise Quick Start Tutorials

Interactive Reporting er Manual

SUDT AccessPort TM Advanced Terminal / Monitor / Debugger Version 1.37 User Manual

Exam 1 Review Questions

Lab 0: Preparing your laptop for the course OS X

Smoking and any food or drinks are not permitted in the Applications Lab!

Using the Query Analyzer

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science

Comparing RTOS to Infinite Loop Designs

HP Business Process Monitor

Audit Trail Administration

USER GUIDE MANTRA WEB EXTRACTOR.

Prepare the environment Practical Part 1.1

Transcription:

Introduction to Synoptic 1 Introduction Synoptic is a tool that summarizes log files. More exactly, Synoptic takes a set of log files, and some rules that tell it how to interpret lines in those logs, and outputs a summary that concisely and accurately captures the important properties of lines in the logs. Synoptic summaries are directed graphs. Synoptic is especially intended for use with distributed systems logs, which is one of the reason we would like for you apply it to logs of systems you build for this class. This document describes features of the 490H framework that integrate with Synoptic. It is assumed that you are using framework version v0.2 (you can test for this by passing it the -v option). 2 Installation 1. Synoptic depends on a tool called dot, which you can install as part of the Graphviz suite: http://www.graphviz.org/. This writeup assumes that the dot command is installed in /usr/bin/dot. 2. As of this writing, the latest release of Synoptic is version 0.0.3. You can download it (synoptic-0.0.3.tar.gz) here: http://code.google.com/p/synoptic/downloads/list 3. You also need to download a supporting set of files specific to 490H. This includes files containing Synoptic command line arguments for processing logs generated by the 490H framework code, as well as some sample logs that will be used as examples in this writeup. You can download the archive with these files (490h-0.0.3.tar.gz) from the above link. 4. Unpack the release archive into some directory. This writeup assumes that that you ve unpacked things into /synoptic/. 5. Unpack the supporting files archive into /synoptic/. 6. The Synoptic release you unpacked is a set of jars. Synoptic is written in Java and its current interface is the command line. From within /synoptic/, execute the following command to show the help screen, as a test of your installation: java -jar synoptic.jar -h 7. As a final test, from the same location as above, run the unit tests distributed with Synoptic: java -jar synoptic.jar --runtests For more information, see the installation instructions on the website: http://code.google.com/p/synoptic/wiki/docsinstallation 1

3 Usage through examples Lets first run synoptic on sample logs that you have downloaded. For these examples to work you have to (1) create an output directory /synoptic/output/ to store Synoptic output files; and (2) make sure that you run the following commands from /synoptic/. 3.1 Example 1: basic usage The following command will process example1.log by using command line arguments stored in example1.args and use the dot command at /usr/bin/dot for output: java -jar synoptic.jar -c example1.args -d /usr/bin/dot example1.log By default this command will generate four files in output/: 1. example1.initial.dot: the initial graph parsed from example1.log file in dot command file format. 2. example1.initial.dot.png : the graphic corresponding to example1.initial.dot (Figure 1(a)). 3. example1.dot : Synoptic s final graph in dot command file format. 4. example1.dot.png : the graphic corresponding to example1.dot (Figure 1(b)). (a) example1.initial.dot.png (b) example1.dot.png Figure 1: Example1 output. ((a)) Initial graph, ((b)) Final graph. Figure 1 above illustrates the two outputs. The graph on the left represents the input graph to Synoptic. The graph on the right is the final graph that summarizes the input log. 2

The input graph is a translation of the log into a graph form. It allows you to check visually whether Synoptic correctly parsed the input. For example, example1.log has a trace that goes: connect, read, read, read, disconnect. This trace is shown as the first from the left in the input graph. You can suppress the output of the initial graph with the --dumpinitialgraph=false option. Note that the edges in these graphs are labeled with numbers, which represent transition probabilities. For the input graph, these labels are always 0.00. For the final graph a transition probability indicates the percentage of time that the transition (edge) appeared in the log file (along the paths that get to this node). Also, in both graphs nodes that represent events or event types that are the first in a trace are represented as square nodes. Final events in a trace are represented as diamonds. All other nodes are ovals. 3.2 Example 2: TwoGenerals simulator log The TwoGenerals problem discussed in class is implemented and released as an example in the proj/ directory of the framework. Synoptic output from 10 executions of this example of sample synoptic logs is in the files example2.0.log,..., example2.9.log. The corresponding command line arguments are in example2.args. Run the following command to generate the graphs below: java -jar synoptic.jar -c example2.args -d /usr/bin/dot example2.*.log (a) example2.initial.dot.png (b) example2.dot.png Figure 2: Example2 output. ((a)) Initial graph, ((b)) Final graph. 3

3.3 Example 3: ignoring certain event types The framework logs all possible events that might be interesting to you. The 490h.args file contains the regular expressions to parse all of these different event types. However, you might find yourself tracking down a bug that only implicates a subset of events. For example, a bug that manifests itself only when you use persistent storage. You can constraint Synoptic to consider just the events you are interested in by ignoring log lines that do not match the specified regular expressions. You can do this by (1) commenting out regular expressions for the events types that do not interest you in the 490h.args file, and (2) passing the -i option to Synoptic to ignore unmatched lines. Consider the logs from example 2. These log contains TIMESTEP events, which are generated by the framework whenever internal framework time is incremented. This event might not be of interest, therefore you can use example3.args to ignore these events (it specifies the -i option) by re-running on the same set of logs: java -jar synoptic.jar -c example3.args -d /usr/bin/dot example2.*.log Figure 3: Example3 final graph output. 4 Logging framework events For your convenience the 490H framework is capable of generating logs in a format that can be then parsed by synoptic. The Synoptic arguments for parsing all event types generated by the framework are in the 490h.args file. In fact, the framework can generate two kinds of event logs a totally ordered log, and a partially ordered log (each event is annotated with a vector clock value). The totally ordered log can only be generated in simulator mode (with the -s option), while the partially ordered log can be generated in both simulator and emulator (-e) modes. 1 For the framework to output these logs 1 The totally ordered log is possible in simulator mode because the simulator is implemented as a single thread. 4

you have to pass it appropriate command line options: The -L option takes a filename as argument for storing a totally ordered log of events. The -l option takes a filename as argument for storing a partially ordered log of events. For example, to have the RIOTester example output both kinds of logs in simulator mode, you can run the following:./execute.pl -L total.log -l partial.log -s -n RIOTester -c scripts/riotest -f 0 As a result of the above, total.log and partial.log files will contain the totally and partially ordered simulator event logs respectively. 4.1 Framework event types The framework logs different kinds of event. The above examples illustrated most of these, but here is the full list: Packet sends and receives : SEND, RECVD Packet delays and drops : DELAY, DROP Timeouts : TIMEOUT Script file commands : COMMAND Persistent storage events : READ, WRITE Node start and stopped events : START, STOPPED Simulator time ticks : TIMESTEP User defined events : USER-EVENT Each of these events types is parameterized with values. In some cases there is a set format for the event type. For example, the packet SEND event log line specifies the source and destination nodes, the protocol id, and the packet payload. Here is an example: 31 SEND src:1 dest:3 proto:0 rio-proto:20 rio-seqnum:0 rio-payload:0 In other cases the event log line may vary depending on the function invoked. For example, the persistent storage WRITE event log line has many types of formats in which the line may include or exclude the offset, and len fields depending on which method was invoked. Example log lines: 138 node:0 WRITE buf: HELLO 139 node:0 WRITE buf: HELLO WORLD offset:0 len:6 The best way to figure out the line format for an event type is to trigger the event from code and then inspect the generated log. The 490h Synoptic regular expression files illustrate how to parse most of the event types generated by the framework, but they do not always differentiate between different sub-types of the same event. For example, the two WRITE log lines above are treated identically. Therefore, all events are eventually serialized during execution. The emulator, however, cannot serialize all events, therefore a totally ordered log cannot be generated in emulator mode. 5

4.2 User events interface As indicated in the last example above, you can insert user defined events into Synoptic logs. To do so, use the logsynopticevent method, defined in the Node class. You can invoke this method directly on the class you used to extend the Node class. This method call takes a single event string description argument which will appear last on the generated log line. 4.3 Correctly logging packet payload The framework has no control over how your code converts Packets into byte arrays (i.e. byte[]). However, to log events that are parameterized with packet payloads the framework needs to know how to convert these byte arrays into strings. For this, the framework relies on the packetbytestostring method in the Node class. By default, this method uses the Utility.byteArrayToString method to convert Packets to strings. However, if you translate your packets into byte arrays differently, or if you would like to elide packet payload from the logs altogether, you should override this method in your derived Node class. 4.4 Usage Tips When debugging log parsing, use the --debugparse option. This option will print each log line and the corresponding reg-exp groups that were parsed from that line. When using Synoptic your first goal should always be to generate the right looking initial graph. Therefore, always look at the initial graph output. This graph will conform to how Synoptic interpreted your regular expressions. Synoptic produces most useful output for input logs that contain many runs of a system because it excels at compressing shared event sequences from multiple runs. Passing it a log from a single run of the system, or one in which each event type appears just once, will result in a large final graph. Synoptic may seem to hang or take a very long time on large logs, or on logs that have too many event types. This is a known issue. Try running it on a sub-sample of the logs, or reducing the number of event types. If the problem persists, contact us. Synoptic is a research project that is under active development. If you run into a problem that is not answered by this writeup and is not covered in Synoptic s online documentation, please contact us! 5 Other resources If you run into problems or have questions about installing/using Synoptic or interpreting its output, do not hesitate to seek help. The Synoptic website contains a tutorial and additional usage information that you might find helpful. The website contains the most up to date information about the tool: http://code.google.com/p/synoptic/ Synoptic is developed by many people, almost all of whom are at UW CSE. Your main point of contact with this group is Ivan: ivan@cs.washington.edu. 6