Exemplo n.º 1
0
func eventMapping(response io.Reader) common.MapStr {
	fullEvent := map[string]string{}
	scanner := bufio.NewScanner(response)

	// Iterate through all events to gather data
	for scanner.Scan() {
		if match := paramMatcher.FindStringSubmatch(scanner.Text()); len(match) == 3 {
			fullEvent[match[1]] = match[2]
		} else {
			logp.Warn("Unexpected line in mntr output: %s", scanner.Text())
		}
	}

	// Manually convert and select fields which are used
	event := common.MapStr{
		"version": h.ToStr("zk_version", fullEvent),
		"latency": common.MapStr{
			"avg": h.ToInt("zk_avg_latency", fullEvent),
			"min": h.ToInt("zk_min_latency", fullEvent),
			"max": h.ToInt("zk_max_latency", fullEvent),
		},
		"packets": common.MapStr{
			"received": h.ToInt("zk_packets_received", fullEvent),
			"sent":     h.ToInt("zk_packets_sent", fullEvent),
		},
		"num_alive_connections": h.ToInt("zk_num_alive_connections", fullEvent),
		"outstanding_requests":  h.ToInt("zk_outstanding_requests", fullEvent),
		"server_state":          h.ToStr("zk_server_state", fullEvent),
		"znode_count":           h.ToInt("zk_znode_count", fullEvent),
		"watch_count":           h.ToInt("zk_watch_count", fullEvent),
		"ephemerals_count":      h.ToInt("zk_ephemerals_count", fullEvent),
		"approximate_data_size": h.ToInt("zk_approximate_data_size", fullEvent),
	}

	// only exposed by the Leader
	if _, ok := fullEvent["zk_followers"]; ok {
		event["followers"] = h.ToInt("zk_followers", fullEvent)
		event["synced_followers"] = h.ToInt("zk_synced_followers", fullEvent)
		event["pending_syncs"] = h.ToInt("zk_pending_syncs", fullEvent)
	}

	// only available on Unix platforms
	if _, ok := fullEvent["open_file_descriptor_count"]; ok {
		event["open_file_descriptor_count"] = h.ToInt("zk_open_file_descriptor_count", fullEvent)
		event["max_file_descriptor_count"] = h.ToInt("zk_max_file_descriptor_count", fullEvent)
	}

	return event
}
Exemplo n.º 2
0
// Map data to MapStr
func eventMapping(info map[string]string) common.MapStr {

	// Full mapping from info
	event := common.MapStr{
		"clients": common.MapStr{
			"connected":           h.ToInt("connected_clients", info),
			"longest_output_list": h.ToInt("client_longest_output_list", info),
			"biggest_input_buf":   h.ToInt("client_biggest_input_buf", info),
			"blocked":             h.ToInt("blocked_clients", info),
		},
		"cluster": common.MapStr{
			"enabled": h.ToBool("cluster_enabled", info),
		},
		"cpu": common.MapStr{
			"used": common.MapStr{
				"sys":           h.ToFloat("used_cpu_sys", info),
				"user":          h.ToFloat("used_cpu_user", info),
				"sys_children":  h.ToFloat("used_cpu_sys_children", info),
				"user_children": h.ToFloat("used_cpu_user_children", info),
			},
		},
		"memory": common.MapStr{
			"used": common.MapStr{
				"value": h.ToInt("used_memory", info), // As it is a top key, this goes into value
				"rss":   h.ToInt("used_memory_rss", info),
				"peak":  h.ToInt("used_memory_peak", info),
				"lua":   h.ToInt("used_memory_lua", info),
			},
			"allocator": h.ToStr("mem_allocator", info), // Could be moved to server as it rarely changes
		},
		"persistence": common.MapStr{
			"loading": h.ToBool("loading", info),
			"rdb": common.MapStr{
				"changes_since_last_save": h.ToInt("rdb_changes_since_last_save", info),
				"bgsave_in_progress":      h.ToBool("rdb_bgsave_in_progress", info),
				"last_save_time":          h.ToInt("rdb_last_save_time", info),
				"last_bgsave_status":      h.ToStr("rdb_last_bgsave_status", info),
				"last_bgsave_time_sec":    h.ToInt("rdb_last_bgsave_time_sec", info),
				"current_bgsave_time_sec": h.ToInt("rdb_current_bgsave_time_sec", info),
			},
			"used": common.MapStr{
				"enabled":                  h.ToBool("aof_enabled", info),
				"rewrite_in_progress":      h.ToBool("aof_rewrite_in_progress", info),
				"rewrite_scheduled":        h.ToBool("aof_rewrite_scheduled", info),
				"last_rewrite_time_sec":    h.ToInt("aof_last_rewrite_time_sec", info),
				"current_rewrite_time_sec": h.ToInt("aof_current_rewrite_time_sec", info),
				"last_bgrewrite_status":    h.ToStr("aof_last_bgrewrite_status", info),
				"last_write_status":        h.ToStr("aof_last_write_status", info),
			},
		},
		"replication": common.MapStr{
			"role":             h.ToStr("role", info),
			"connected_slaves": h.ToInt("connected_slaves", info),
			"master_offset":    h.ToInt("master_repl_offset", info),
			"backlog": common.MapStr{
				"active":            h.ToInt("repl_backlog_active", info),
				"size":              h.ToInt("repl_backlog_size", info),
				"first_byte_offset": h.ToInt("repl_backlog_first_byte_offset", info),
				"histlen":           h.ToInt("repl_backlog_histlen", info),
			},
		},
		"server": common.MapStr{
			"version":          h.ToStr("redis_version", info),
			"git_sha1":         h.ToStr("redis_git_sha1", info),
			"git_dirty":        h.ToStr("redis_git_dirty", info),
			"build_id":         h.ToStr("redis_build_id", info),
			"mode":             h.ToStr("redis_mode", info),
			"os":               h.ToStr("os", info),
			"arch_bits":        h.ToStr("arch_bits", info),
			"multiplexing_api": h.ToStr("multiplexing_api", info),
			"gcc_version":      h.ToStr("gcc_version", info),
			"process_id":       h.ToInt("process_id", info),
			"run_id":           h.ToStr("run_id", info),
			"tcp_port":         h.ToInt("tcp_port", info),
			"uptime":           h.ToInt("uptime_in_seconds", info), // Uptime days was removed as duplicate
			"hz":               h.ToInt("hz", info),
			"lru_clock":        h.ToInt("lru_clock", info),
			"config_file":      h.ToStr("config_file", info),
		},
		"stats": common.MapStr{
			"connections": common.MapStr{
				"received": h.ToInt("total_connections_received", info),
				"rejected": h.ToInt("rejected_connections", info),
			},
			"total_commands_processed":  h.ToInt("total_commands_processed", info),
			"total_net_input_bytes":     h.ToInt("total_net_input_bytes", info),
			"total_net_output_bytes":    h.ToInt("total_net_output_bytes", info),
			"instantaneous_ops_per_sec": h.ToInt("instantaneous_ops_per_sec", info),
			"instantaneous_input_kbps":  h.ToFloat("instantaneous_input_kbps", info),
			"instantaneous_output_kbps": h.ToFloat("instantaneous_output_kbps", info),
			"sync": common.MapStr{
				"full":        h.ToInt("sync_full", info),
				"partial_ok":  h.ToInt("sync_partial_ok", info),
				"partial_err": h.ToInt("sync_partial_err", info),
			},
			"keys": common.MapStr{
				"expired": h.ToInt("expired_keys", info),
				"evicted": h.ToInt("evicted_keys", info),
			},
			"keyspace": common.MapStr{
				"hits":   h.ToInt("keyspace_hits", info),
				"misses": h.ToInt("keyspace_misses", info),
			},
			"pubsub_channels":        h.ToInt("pubsub_channels", info),
			"pubsub_patterns":        h.ToInt("pubsub_patterns", info),
			"latest_fork_usec":       h.ToInt("latest_fork_usec", info),
			"migrate_cached_sockets": h.ToInt("migrate_cached_sockets", info),
		},
	}

	return event
}