From 08c1d54cf3c22deac0fd04438ee471c197b1b0a1 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 2 Jul 2013 12:18:16 -0700 Subject: [PATCH] send count of alive nodes to logstash from DS --- domain-server/src/main.cpp | 15 +++++++++++++++ libraries/shared/src/AgentList.cpp | 2 +- libraries/shared/src/AgentList.h | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/domain-server/src/main.cpp b/domain-server/src/main.cpp index a0cd48218c..8bbdfe0f6b 100644 --- a/domain-server/src/main.cpp +++ b/domain-server/src/main.cpp @@ -33,6 +33,8 @@ const int DOMAIN_LISTEN_PORT = 40102; unsigned char packetData[MAX_PACKET_SIZE]; +const int NODE_COUNT_STAT_INTERVAL_MSECS = 5000; + unsigned char* addAgentToBroadcastPacket(unsigned char* currentPosition, Agent* agentToAdd) { *currentPosition++ = agentToAdd->getType(); @@ -80,6 +82,8 @@ int main(int argc, const char * argv[]) agentList->startSilentAgentRemovalThread(); + timeval lastStatSendTime = {}; + while (true) { if (agentList->getAgentSocket()->receive((sockaddr *)&agentPublicAddress, packetData, &receivedBytes) && (packetData[0] == PACKET_HEADER_DOMAIN_REPORT_FOR_DUTY || packetData[0] == PACKET_HEADER_DOMAIN_LIST_REQUEST)) { @@ -171,6 +175,17 @@ int main(int argc, const char * argv[]) broadcastPacket, (currentBufferPos - startPointer) + 1); } + + if (Logstash::shouldSendStats()) { + if (usecTimestampNow() - usecTimestamp(&lastStatSendTime) >= (NODE_COUNT_STAT_INTERVAL_MSECS * 1000)) { + // time to send our count of agents and servers to logstash + const char NODE_COUNT_LOGSTASH_KEY[] = "ds-node-count"; + + Logstash::stashGaugeValue(NODE_COUNT_LOGSTASH_KEY, agentList->getNumAliveAgents()); + + gettimeofday(&lastStatSendTime, NULL); + } + } } return 0; diff --git a/libraries/shared/src/AgentList.cpp b/libraries/shared/src/AgentList.cpp index f438591d75..3e5f7c331c 100644 --- a/libraries/shared/src/AgentList.cpp +++ b/libraries/shared/src/AgentList.cpp @@ -191,7 +191,7 @@ Agent* AgentList::agentWithID(uint16_t agentID) { return NULL; } -int AgentList::numAliveAgents() const { +int AgentList::getNumAliveAgents() const { int numAliveAgents = 0; for (AgentList::iterator agent = begin(); agent != end(); agent++) { diff --git a/libraries/shared/src/AgentList.h b/libraries/shared/src/AgentList.h index 44bab7aa97..71e1969c90 100644 --- a/libraries/shared/src/AgentList.h +++ b/libraries/shared/src/AgentList.h @@ -63,7 +63,7 @@ public: void(*linkedDataCreateCallback)(Agent *); int size() { return _numAgents; } - int numAliveAgents() const; + int getNumAliveAgents() const; void lock() { pthread_mutex_lock(&mutex); } void unlock() { pthread_mutex_unlock(&mutex); }