def send_stats(last_timestamp, last_message_count, json_filename):
	with open(json_filename) as data_file:
		data = json.load(data_file)

	current_timestamp = data["now"]
	current_message_count = data["messages"]

	secs = False
	msgs = False

	if last_timestamp is False:
		print "Starting up, first pass...."
	elif current_message_count < last_message_count:
		print "Looks like dump1090 restarted, message count reset (%d)" % current_message_count
	else:
		secs = current_timestamp - last_timestamp
		msgs = current_message_count - last_message_count
		
		print "{0} sec\t{1} messages\t{2} messages per sec avg".format(secs, msgs, (msgs / secs))

	last_timestamp = current_timestamp
	last_message_count = current_message_count
	threading.Timer(INTERVAL, send_stats, [last_timestamp, last_message_count, json_filename]).start()

	aircrafts_5s = []
	aircrafts_10s = []
	aircrafts_30s = []
	aircrafts_60s = []

	for aircraft in data["aircraft"]:
		if aircraft["seen"] < 5:
			aircrafts_5s.append(aircraft["hex"])
		if aircraft["seen"] < 10:
			aircrafts_10s.append(aircraft["hex"])
		if aircraft["seen"] < 30:
			aircrafts_30s.append(aircraft["hex"])
		if aircraft["seen"] < 60:
			aircrafts_60s.append(aircraft["hex"])

	print "\t5s:{0}\t10s:{1}\t30s:{2}\t60s:{3}".format(len(aircrafts_5s), len(aircrafts_10s), len(aircrafts_30s), len(aircrafts_60s))

	radio_name = sys.argv[1]

	if secs:
		client = StatsClient(STATSD_HOST)
		client.incr("radios.%s.message_rate" % radio_name, msgs)

		pipe = client.pipeline()
		c = 0
		max_msg_size = 20
		for hex in aircrafts_10s:
			pipe.set("radios.%s.aircraft" % radio_name, hex)
			c = c + 1
			if c == max_msg_size:
				pipe.send()
				c = 0
		if c != max_msg_size:
			pipe.send()
Esempio n. 2
0
	def setUp(self):

		sqsregioninfo = SQSRegionInfo(name='localhost_region', endpoint='localhost')
		self.connection = sqsregioninfo.connect(
			port=8001,
			aws_access_key_id='id',
			aws_secret_access_key='secret',
			is_secure=False
		)

		self.queue = self.connection.create_queue('test_queue')

		client = StatsClient(host='localhost', port=8125, prefix=None, maxudpsize=512)

		self.statsd = client.pipeline()
def send_radio_stats(n, s):
	client = StatsClient(STATSD_HOST)
	pipe = client.pipeline()

	pipe.gauge("radios.%s.accepted" % n, s["local"]["accepted"][0])
	pipe.gauge("radios.%s.accepted_corrected" % n, s["local"]["accepted"][1])
	# If you use the "aggressive" setting in dump1090-mutability, there may
	# be a third entry in the accepted set. Maybe you want to do something with that data?
	#pipe.gauge("radios.%s.accepted_corrected_2bit" % n, s["local"]["accepted"][2])

	pipe.gauge("radios.%s.bad" % n, s["local"]["bad"])
	pipe.gauge("radios.%s.blocks_dropped" % n, s["local"]["blocks_dropped"])
	pipe.gauge("radios.%s.blocks_processed" % n, s["local"]["blocks_processed"])
	pipe.gauge("radios.%s.modeac" % n, s["local"]["modeac"])
	pipe.gauge("radios.%s.modes" % n, s["local"]["modes"])
	pipe.gauge("radios.%s.strong_signals" % n, s["local"]["strong_signals"])
	pipe.gauge("radios.%s.unknown_icao" % n, s["local"]["unknown_icao"])
	pipe.gauge("radios.%s.cpr.airborne" % n, s["cpr"]["airborne"])
	pipe.gauge("radios.%s.cpr.filtered" % n, s["cpr"]["filtered"])
	pipe.send()
	pipe.gauge("radios.%s.cpr.global_bad" % n, s["cpr"]["global_bad"])
	pipe.gauge("radios.%s.cpr.global_ok" % n, s["cpr"]["global_ok"])
	pipe.gauge("radios.%s.cpr.global_range" % n, s["cpr"]["global_range"])
	pipe.gauge("radios.%s.cpr.global_skipped" % n, s["cpr"]["global_skipped"])
	pipe.gauge("radios.%s.cpr.global_speed" % n, s["cpr"]["global_speed"])
	pipe.gauge("radios.%s.cpr.local_aircraft_relative" % n, s["cpr"]["local_aircraft_relative"])
	pipe.gauge("radios.%s.cpr.local_ok" % n, s["cpr"]["local_ok"])
	pipe.gauge("radios.%s.cpr.local_range" % n, s["cpr"]["local_range"])
	pipe.gauge("radios.%s.cpr.local_receiver_relative" % n, s["cpr"]["local_receiver_relative"])
	pipe.gauge("radios.%s.cpr.local_skipped" % n, s["cpr"]["local_skipped"])
	pipe.send()
	pipe.gauge("radios.%s.cpr.local_speed" % n, s["cpr"]["local_speed"])
	pipe.gauge("radios.%s.cpr.surface" % n, s["cpr"]["surface"])
	pipe.gauge("radios.%s.messages" % n, s["messages"])
	pipe.gauge("radios.%s.tracks_all" % n, s["tracks"]["all"])
	pipe.gauge("radios.%s.tracks_single_message" % n, s["tracks"]["single_message"])
	pipe.timing("radios.%s.cpu.background" % n, s["cpu"]["background"])
	pipe.timing("radios.%s.cpu.demodulation" % n, s["cpu"]["demod"])
	pipe.timing("radios.%s.cpu.usb" % n, s["cpu"]["reader"])
	pipe.send()