Giter Club home page Giter Club logo

tyk-pump's Introduction

Tyk Pump

Build Status

Tyk Pump is a pluggable analytics purger to move Analytics generated by your Tyk nodes to any back-end.

Back ends currently supported:

  • MongoDB (to replace built-in purging)
  • CSV (updated, now supports all fields)
  • ElasticSearch (2.0+)
  • Graylog
  • InfluxDB
  • Moesif
  • StatsD

Configuration:

Create a pump.conf file:

{
	"analytics_storage_type": "redis",
	"analytics_storage_config": {
		"type": "redis",
		"host": "localhost",
		"port": 6379,
		"hosts": null,
		"username": "",
		"password": "",
		"database": 0,
		"optimisation_max_idle": 100,
		"optimisation_max_active": 0,
		"enable_cluster": false
	},
	"purge_delay": 10,
	"pumps": {
		"dummy": {
			"name": "dummy",
			"meta": {}
		},
		"mongo": {
			"name": "mongo",
			"meta": {
				"collection_name": "tyk_analytics",
				"mongo_url": "mongodb://username:password@{hostname:port},{hostname:port}/{db_name}"
			}
		},
		"csv": {
			"name": "csv",
			"meta": {
				"csv_dir": "./"
			}
		},
		"elasticsearch": {
			"name": "elasticsearch",
			"meta": {
				"index_name": "tyk_analytics",
				"elasticsearch_url": "localhost:9200",
				"enable_sniffing": false,
				"document_type": "tyk_analytics",
				"rolling_index": false,
				"extended_stats": false,
				"version": "5"
			}
		},
		"influx": {
			"name": "influx",
			"meta": {
				"database_name": "tyk_analytics",
				"address": "http//localhost:8086",
				"username": "root",
				"password": "root",
				"fields": ["request_time"],
				"tags": ["path",
					"response_code",
					"api_key",
					"api_version",
					"api_name",
					"api_id",
					"raw_request",
					"ip_address",
					"org_id",
					"oauth_id"]
			}
		},
		"moesif": {
			"name": "moesif",
			"meta": {
				"application_id": ""
			}
		},
		"statsd": {
			"name": "statsd",
			"meta": {
				"address": "localhost:8125",
				"fields": ["request_time"],
				"tags": ["path",
						"response_code",
						"api_key",
						"api_version",
						"api_name",
						"api_id",
						"raw_request",
						"ip_address",
						"org_id",
						"oauth_id"]
			}
		},
		"graylog": {
			"name": "graylog",
			"meta": {
				"host": "10.60.6.15",
				"port": 12216,
				"tags": [
					"method",
					"path",
					"response_code",
					"api_key",
					"api_version",
					"api_name",
					"api_id",
					"org_id",
					"oauth_id",
					"raw_request",
					"request_time",
					"raw_response"
				]
			}
		}
	},
	"uptime_pump_config": {
		"collection_name": "tyk_uptime_analytics",
		"mongo_url": "mongodb://username:password@{hostname:port},{hostname:port}/{db_name}"
	},
	"dont_purge_uptime_data": false
}

Settings are the same as for the original tyk.conf for redis and for mongoDB.

Elasticsearch Config

"index_name" - The name of the index that all the analytics data will be placed in. Defaults to "tyk_analytics"

"elasticsearch_url" - If sniffing is disabled, the URL that all data will be sent to. Defaults to "http://localhost:9200"

"enable_sniffing" - If sniffing is enabled, the "elasticsearch_url" will be used to make a request to get a list of all the nodes in the cluster, the returned addresses will then be used. Defaults to false

"document_type" - The type of the document that is created in ES. Defaults to "tyk_analytics"

"rolling_index" - Appends the date to the end of the index name, so each days data is split into a different index name. E.g. tyk_analytics-2016.02.28 Defaults to false

"extended_stats" - If set to true will include the following additional fields: Raw Request, Raw Response and User Agent.

"version" - Specifies the ES version. Use "3" for ES 2.x, and "5" for ES 5.0. Defaults to "3".

Moesif Config

Moesif is a logging and analytics service for APIs. The Moesif pump will move analytics data from Tyk to Moesif.

"application_id" - Moesif App Id JWT. Multiple api_id's will go under the same app id.

Compiling & Testing

  1. Download dependent packages:
go get -t -d -v ./...
  1. Compile:
go build -v ./...
  1. Test
go test -v ./...

tyk-pump's People

Contributors

lonelycode avatar mvdan avatar duythinht avatar matiasinsaurralde avatar runivn avatar dgilling avatar wonderslug avatar kohrvid avatar miles-b avatar

Watchers

James Cloos avatar Cory Bowles 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.