Skip to content

abrampers/inkle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Inkle

master Codecov Docker Image Version (latest semver) Helm Chart

Log Based gRPC Tracing System ๐Œ˜

This is my bachelor thesis project to obtain Computer Science bachelor degree from Institut Teknologi Bandung.

This paper was published on ICAICTA 2020.

Log format

grpc_service_name,grpc_method_name,src_ip,src_tcp,dst_ip,dst_tcp,grpc_status_code,duration, info

e.g:
helloworld.Greeter,SayHello,::1,53412,::1,8000,0,161626,Request - Response
datetime.Datetime,GetDatetime,::1,53413,::1,9000,0,10120,Request - Response

Installation

Kubernetes Environment

Make sure kubectl is properly configured to an active Kubernetes cluster.

Using Helm

This requires Helm to be installed. For more information about installing Inkle using Helm, see the Inkle Helm Chart.

$ helm repo add abrampers https://abram.id/helm/abrampers
$ helm install inkle abrampers/inkle

Apply manifest manually

$ git clone https://github.com/abrampers/inkle
$ kubectl apply -f manifests/kubernetes.yaml

Local environment

Docker

$ docker run --name inkle --network=host --privileged --rm -it abrampers/inkle:v0.1.0 [PARAMS]

Build from source

$ go get -u github.com/abrampers/inkle
$ cd $GOPATH/src/github.com/abrampers/inkle
$ go build -o .

Usage

$ ./inkle -stdout

Available flags:

Flag Type Default Description
-device=cni0 string eth0 Network Device to be intercepted.
-stdout bool false Write logs to stdout.
-output=/var/log string . Write log file to specified directory (ignored if -stdout is set).
-timeout=200ms time.Duration 800ms Set request timeout.
-filter-by-host-cidr bool false If this flag is set, Inkle will get the valid IP range of the network device specified in -device and will only print logs with source IP addres within that range.
-h n/a n/a Print out help message.

Roadmap

  • Repo description.
  • Repo architecture.
  • HTTP/2 frame classification.
  • State management to support gRPC connection reuse.
  • Supports source IP address filtering by host CIDR.
  • Log rotation.
  • HTTPS support
  • Ensure correctness while ignoring unsupported streams.
  • Support for gRPC streams.