From: Remi Gacogne Date: Tue, 26 Mar 2019 10:10:57 +0000 (+0100) Subject: dnsdist: Display backend and frontend TCP metrics in showTCPStats() X-Git-Tag: dnsdist-1.4.0-alpha1~25^2~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=781fd8fdc68c8531a37dc370ee6700f3871ee0c0;p=thirdparty%2Fpdns.git dnsdist: Display backend and frontend TCP metrics in showTCPStats() --- diff --git a/pdns/dnsdist-lua-inspection.cc b/pdns/dnsdist-lua-inspection.cc index 554afa0d6c..92fb413047 100644 --- a/pdns/dnsdist-lua-inspection.cc +++ b/pdns/dnsdist-lua-inspection.cc @@ -552,10 +552,38 @@ void setupLuaInspection() g_lua.writeFunction("showTCPStats", [] { setLuaNoSideEffect(); + ostringstream ret; boost::format fmt("%-10d %-10d %-10d %-10d\n"); - g_outputBuffer += (fmt % "Clients" % "MaxClients" % "Queued" % "MaxQueued").str(); - g_outputBuffer += (fmt % g_tcpclientthreads->getThreadsCount() % g_maxTCPClientThreads % g_tcpclientthreads->getQueuedCount() % g_maxTCPQueuedConnections).str(); - g_outputBuffer += "Query distribution mode is: " + std::string(g_useTCPSinglePipe ? "single queue" : "per-thread queues") + "\n"; + ret << (fmt % "Clients" % "MaxClients" % "Queued" % "MaxQueued") << endl; + ret << (fmt % g_tcpclientthreads->getThreadsCount() % g_maxTCPClientThreads % g_tcpclientthreads->getQueuedCount() % g_maxTCPQueuedConnections) << endl; + ret <local.toStringWithPort() % f->tcpDiedReadingQuery % f->tcpDiedSendingResponse % f->tcpGaveUp % f->tcpClientTimeouts % f->tcpDownstreamTimeouts) << endl; + ++counter; + } + ret << endl; + + ret << "Backends:" << endl; + fmt = boost::format("%-3d %-20.20s %-20.20s %-25d %-25d %-25d %-25d %-25d"); + ret << (fmt % "#" % "Name" % "Address" % "Died sending query" % "Died reading response" % "Gave up" % "Read timeouts" % "Write timeouts" ) << endl; + + auto states = g_dstates.getLocal(); + counter = 0; + for(const auto& s : *states) { + ret << (fmt % counter % s->name % s->remote.toStringWithPort() % s->tcpDiedSendingQuery % s->tcpDiedReadingResponse % s->tcpGaveUp % s->tcpReadTimeouts % s->tcpWriteTimeouts) << endl; + ++counter; + } + + g_outputBuffer=ret.str(); }); g_lua.writeFunction("dumpStats", [] {