anchor.diff:  api(session, Req) ->
       Records = [emqttd_vm:get_ets_object(Tab) || Tab <- [mqtt_transient_session, mqtt_persistent_session]],
       AllSession = lists:append(Records),
  +    InfoKeys = [clean_sess, 
  +                max_inflight,
  +                inflight_queue,
  +                message_queue,
  +                message_dropped,
  +                awaiting_rel,
  +                awaiting_ack,
  +                awaiting_comp,
  +                created_at],
  +%		topic,
  +%		qos],
  +
       Bodys = 
       lists:map(fun({ClientId, Session}) ->
  -	 	[{clientId, ClientId} | session_table(Session)]
  +	 	[{clientId, ClientId} | session_table(Session, InfoKeys)]
          	    end, AllSession),
       api_respond(Req, Bodys);
      
  
positive.code: api(node, Req) ->
      Nodes = [node()|nodes()],
      NodeInfo = lists:map(fun(Node)-> 
  		Memory = rpc:call(Node, emqttd_vm, mem_info, []),
  		CheckIoList  = rpc:call(Node, emqttd_vm, get_system_info, [check_io]),
  		MaxFds = [{K, V}|| {K, V} <- CheckIoList, K == max_fds],
  		CpuInfo = [{K, list_to_binary(V)} || {K, V} <- rpc:call(Node, emqttd_vm, loads, [])],
  		ProcessLimit = rpc:call(Node, emqttd_vm, get_process_limit, []),
  		ProcessList = rpc:call(Node, emqttd_vm, get_process_list, []),
  		%UpTime = rpc:call(Node, emqttd_broker, uptime, []),
  		MaxFds ++ Memory ++ [{name, Node}, {process_available, ProcessLimit}, {process_used, length(ProcessList)}|CpuInfo]
  	    end, Nodes),
      api_respond(Req, NodeInfo);
      
  api(metrics, Req) ->
  
negative.code:    
  %%-----------------------------------subscribe--------------------------------------
  %%subscribe api
  %api(subscriber, Req) ->
  %    F = fun() ->
  %        Q = qlc:q([E || E <- mnesia:table(subscriber)]),
  %	qlc:e(Q) 
  %        end,
  %    {atomic, SubLists} =  mnesia:transaction(F),
  %    Bodys = [[{mqtt_subscriber,  Tab},
  %             {topic, Topic}, 
  %             {qos, Qos}] || {Tab, Topic, _Pid, Qos} <- SubLists],
  %
  %    api_respond(Req, Bodys);
   
  api(subscriber, Req) ->
      Records = [emqttd_vm:get_ets_object(Tab) || Tab <- [mqtt_transient_session, mqtt_persistent_session]],
      AllSession = lists:append(Records),
      InfoKeys = [topic,qos],
  
      Bodys = 
      lists:map(fun({ClientId, Session}) ->
  	 	[{clientId, ClientId} | session_table(Session, InfoKeys)]
         	    end, AllSession),
      api_respond(Req, Bodys);
     
  
  %%-----------------------------------Users--------------------------------------
  %%users api
  api(users, Req) ->
  