Skip to content
This repository was archived by the owner on Dec 23, 2017. It is now read-only.

Commit 99fcb0e

Browse files
committed
track session stats data for each participating node
1 parent 0162620 commit 99fcb0e

File tree

3 files changed

+66
-3
lines changed

3 files changed

+66
-3
lines changed

src/main/java/org/graylog/plugins/usagestatistics/collectors/NodeCollector.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.graylog.plugins.usagestatistics.dto.NodeStats;
3636
import org.graylog.plugins.usagestatistics.dto.Os;
3737
import org.graylog.plugins.usagestatistics.dto.PluginInfo;
38+
import org.graylog.plugins.usagestatistics.dto.SessionStats;
3839
import org.graylog.plugins.usagestatistics.dto.ThroughputStats;
3940
import org.graylog.plugins.usagestatistics.util.MetricUtils;
4041
import org.graylog2.inputs.Input;
@@ -45,6 +46,8 @@
4546
import org.graylog2.plugin.cluster.ClusterConfigService;
4647
import org.graylog2.plugin.cluster.ClusterId;
4748
import org.graylog2.plugin.system.NodeId;
49+
import org.graylog2.rest.resources.system.SessionsResource;
50+
import org.graylog2.security.realm.SessionAuthenticator;
4851
import org.graylog2.shared.system.stats.StatsService;
4952
import org.graylog2.shared.system.stats.jvm.JvmStats;
5053
import org.graylog2.shared.system.stats.network.NetworkStats;
@@ -60,6 +63,8 @@
6063
import static com.google.common.base.MoreObjects.firstNonNull;
6164
import static com.google.common.base.Preconditions.checkNotNull;
6265
import static com.google.common.base.Strings.isNullOrEmpty;
66+
import static org.graylog.plugins.usagestatistics.util.MetricUtils.safeGetCounter;
67+
import static org.graylog.plugins.usagestatistics.util.MetricUtils.safeGetMeter;
6368

6469
@Singleton
6570
public class NodeCollector {
@@ -261,14 +266,23 @@ private NodeStats buildNodeStats() {
261266
MetricUtils.safeGetHistogram(metricRegistry, "org.graylog2.indexer.searches.Searches.elasticsearch.ranges")
262267
);
263268

269+
final SessionStats sessionStats = SessionStats.create(
270+
safeGetCounter(metricRegistry, name(SessionAuthenticator.class, "sessions-authenticated")).getCount(),
271+
safeGetCounter(metricRegistry, name(SessionAuthenticator.class, "sessions-extended")).getCount(),
272+
safeGetCounter(metricRegistry, name(SessionAuthenticator.class, "sessions-expired")).getCount(),
273+
safeGetMeter(metricRegistry, name(SessionsResource.class, "newSession")).getCount(),
274+
safeGetMeter(metricRegistry, name(SessionsResource.class, "terminateSession")).getCount()
275+
);
276+
264277
return NodeStats.create(
265278
uptime,
266279
inputService.totalCountForNode(nodeId.toString()),
267280
throughputStats,
268281
bufferStats,
269282
journalStats,
270283
searchTimings,
271-
searchRanges
284+
searchRanges,
285+
sessionStats
272286
);
273287
}
274288

src/main/java/org/graylog/plugins/usagestatistics/dto/NodeStats.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,16 @@ public static NodeStats create(long uptime,
2828
BufferStats bufferStats,
2929
JournalStats journalStats,
3030
Histogram searchTimings,
31-
Histogram searchRanges) {
32-
return new AutoValue_NodeStats(uptime, inputCount, throughputStats, bufferStats, journalStats, searchTimings, searchRanges);
31+
Histogram searchRanges,
32+
SessionStats sessionStats) {
33+
return new AutoValue_NodeStats(uptime,
34+
inputCount,
35+
throughputStats,
36+
bufferStats,
37+
journalStats,
38+
searchTimings,
39+
searchRanges,
40+
sessionStats);
3341
}
3442

3543
@JsonProperty
@@ -52,4 +60,7 @@ public static NodeStats create(long uptime,
5260

5361
@JsonProperty
5462
public abstract Histogram searchRanges();
63+
64+
@JsonProperty
65+
public abstract SessionStats sessionStats();
5566
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.graylog.plugins.usagestatistics.dto;
2+
3+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
4+
import com.fasterxml.jackson.annotation.JsonCreator;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import com.google.auto.value.AutoValue;
7+
8+
@JsonAutoDetect
9+
@AutoValue
10+
public abstract class SessionStats {
11+
@JsonProperty
12+
public abstract long authenticated();
13+
14+
@JsonProperty
15+
public abstract long extended();
16+
17+
@JsonProperty
18+
public abstract long expired();
19+
20+
@JsonProperty
21+
public abstract long logins();
22+
23+
@JsonProperty
24+
public abstract long logouts();
25+
26+
@JsonCreator
27+
public static SessionStats create(long authenticated,
28+
long extended,
29+
long expired,
30+
long logins,
31+
long logouts) {
32+
return new AutoValue_SessionStats(authenticated,
33+
extended,
34+
expired,
35+
logins,
36+
logouts);
37+
}
38+
}

0 commit comments

Comments
 (0)