Git Product home page Git Product logo

manta-mreq's Introduction

manta-mreq

This repository is part of the Joyent Manta project. For contribution guidelines, issues, and general documentation, visit the main Manta project page.

mreq is a small tool for summarizing the timeline of a Manta HTTP request. See MANTA-4232 for details.

This program is a very rough, very early prototype. It's not useful for anything at all yet.

Getting started

This is a Rust program. Build with cargo:

$ cargo build

Then run it:

$ ./target/debug/mreq /path/to/muskie.log

where /path/to/muskie.log is a log file containing one Muskie audit log entry.

Goals

When finished, mreq should take as input any combination of:

  • a Muskie log entry
  • an haproxy log entry (from the load balancer)
  • any number of Mako access log entries (from storage nodes)
  • a set of node-manta log entries (from the client)

and produce as complete a timeline as possible from the information provided.

Nice-to-haves:

  • The initial goal is for this to work when provided files containing just one log entry each. It would be neat if you could provide entire log files and specify a filter (e.g., a request id) on the command-line. That would simplify the user's life so you'd merely need to collect the relevant logs and the tool would take care of filtering and matching up entries between the files.
  • It would also be neat if you could provide the log file data in any number of files passed on the command-line (e.g., mreq haproxy.log muskie.log mako-1.log mako-2.log) and the command would figure out what each one was and incorporate the information, rather than requiring you to specify them in a particular order or having to specify what each one was.

Current status

Currently, this can dump basic information about a Muskie request, but the output is still very much evolving.

Next steps:

  • Improve the display of subtimelines so that it's less confusing what's going on.
  • Add calculated total latency for the Muskie timeline to the basic output
    • Consider adding the calculated latency-to-first-byte
  • See what else we should add to the output (e.g., response status code!)
  • Try with other types of requests:
    • directory fetch (what I'm currently testing with)
    • directory create
    • object fetch and create
      • will want to separate out latency-to-first-byte?
  • Consider filtering timeline events with elapsed time > 0 and <1ms
  • Lots of XXXs and TODOs

manta-mreq's People

Contributors

davepacheco avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.