Fixed and added metrics in Mumble probing.

This commit is contained in:
Christian P. MOMON 2022-01-05 02:32:20 +01:00
parent 8f8bb0dffc
commit 8f8eeb437d
4 changed files with 66 additions and 13 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -38,14 +38,17 @@ public class MumbleLog
private static Logger logger = LoggerFactory.getLogger(MumbleLog.class);
// 1 => <8:neox(-1)> Authenticated
public static final Pattern NICK_PATTERN = Pattern.compile("^1 => <\\d+:(?<nickname>neox)(-?\\d+)> Authenticated$");
public static final Pattern NICK_PATTERN = Pattern.compile("^\\d+ => <\\d+:(?<nick>\\S+)\\(-?\\d+\\)> Authenticated$");
// 1 => <6:Cpm(-1)> Moved Cpm:6(-1) to Salon blabla 1[3:0]
public static final Pattern ROOM_PATTERN = Pattern.compile("^Moved .+ to (?<room>.+)[.+]$");
public static final Pattern ROOM_PATTERN = Pattern.compile("^\\d+ => <\\S+> Moved \\S+ to (?<room>.+)\\[.+\\]$");
// 1 => <6:(-1)> New connection: 123.456.78.90:54958
// 1 => <2:(-1)> New connection: [1234:5678:90ab:cdef::aaaa:eeee]:57588
public static final Pattern IP_PATTERN = Pattern.compile("^New connection: (?<ip>.+)$");
public static final Pattern IP_PATTERN = Pattern.compile("^\\d+ => \\S+ New connection: \\[?(?<ip>.+)\\]?:\\d+$");
// 1 => Ignoring connection: 123.45.555.555:44124 (Global ban)
public static final Pattern GLOBALBAN_PATTERN = Pattern.compile("^\\d+ => Ignoring connection: \\[?(?<ip>.+)\\]?:\\d+ \\(Global ban\\)$");
private MumbleLogLevel level;
private LocalDateTime time;
@ -71,6 +74,29 @@ public class MumbleLog
return result;
}
/**
* Gets the global ban ip.
*
* @return the global ban ip
*/
public String getGlobalBanIp()
{
String result;
Matcher matcher = GLOBALBAN_PATTERN.matcher(this.message);
if (matcher.matches())
{
result = matcher.group("ip");
}
else
{
result = null;
}
//
return result;
}
/**
* Gets the ip.
*
@ -116,7 +142,7 @@ public class MumbleLog
Matcher matcher = NICK_PATTERN.matcher(this.message);
if (matcher.matches())
{
result = matcher.group("nickname");
result = matcher.group("nick");
}
else
{
@ -127,6 +153,11 @@ public class MumbleLog
return result;
}
/**
* Gets the room name.
*
* @return the room name
*/
public String getRoomName()
{
String result;
@ -145,6 +176,11 @@ public class MumbleLog
return result;
}
/**
* Gets the time.
*
* @return the time
*/
public LocalDateTime getTime()
{
return this.time;

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -59,6 +59,7 @@ public class MumbleLogAnalyzer
private IpCounters ipv4;
private IpCounters ipv6;
private UserCounters rooms;
private IpCounters globalBanIps;
/**
* Instantiates a new http access log prober.
@ -71,6 +72,7 @@ public class MumbleLogAnalyzer
this.ipv4 = new IpCounters();
this.ipv6 = new IpCounters();
this.rooms = new UserCounters();
this.globalBanIps = new IpCounters();
}
/**
@ -90,6 +92,7 @@ public class MumbleLogAnalyzer
result.putAll(this.ipv4.getCounters("metrics.service.ip.ipv4"));
result.putAll(this.ipv6.getCounters("metrics.service.ip.ipv6"));
result.putAll(this.rooms.getCounters("metrics.audioconferencing.rooms.active"));
result.putAll(this.globalBanIps.getCounters("metrics.mumble.globalbans.ip"));
//
return result;
@ -184,7 +187,11 @@ public class MumbleLogAnalyzer
}
else if (log.getLevel() == MumbleLogLevel.DEFAULT)
{
this.counters.inc("metrics.mumble.logs.DEFAULT", year, yearMonth, yearWeek, date);
this.counters.inc("metrics.mumble.logs.default", year, yearMonth, yearWeek, date);
}
else
{
this.counters.inc("metrics.mumble.logs.unknown", year, yearMonth, yearWeek, date);
}
// metrics.service.users
@ -219,6 +226,14 @@ public class MumbleLogAnalyzer
// metrics.audioconferencing.rooms.active
this.rooms.put(log.getRoomName(), year, yearMonth, yearWeek, date);
// metrics.mumble.globalbans
String globalBanIp = log.getGlobalBanIp();
if (globalBanIp != null)
{
this.counters.inc("metrics.mumble.globalbans", year, yearMonth, yearWeek, date);
this.globalBanIps.put(globalBanIp, year, yearMonth, yearWeek, date);
}
// metrics.audioconferencing.conferences
// metrics.audioconferencing.hours
// metrics.audioconferencing.traffic.received.bytes

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -45,19 +45,19 @@ public enum MumbleLogLevel
{
MumbleLogLevel result;
if (StringUtils.equals(value, "DEBUG"))
if (StringUtils.equals(value, "D"))
{
result = DEBUG;
}
else if (StringUtils.equals(value, "WARNING"))
else if (StringUtils.equals(value, "W"))
{
result = WARNING;
}
else if (StringUtils.equals(value, "CRITICAL"))
else if (StringUtils.equals(value, "C"))
{
result = CRITICAL;
}
else if (StringUtils.equals(value, "FATAL"))
else if (StringUtils.equals(value, "F"))
{
result = FATAL;
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -66,6 +66,8 @@ public class MumbleProber
// metrics.mumble.logs.critical
// metrics.mumble.logs.fatal
// metrics.mumble.logs.default
// metrics.mumble.globalbans
// metrics.mumble.globalbans.ip
result = MumbleLogAnalyzer.probe(logs);
// result.putAll(MumbleDatabaseAnalyzer.probe());