Skip to content
API Documentation
BastionGuard™
bsc::stats::Statistics Class Reference

#include <Statistics.hpp>

Public Member Functions

 Statistics (std::size_t max_events=250)
void record (const bsc::model::Connection &conn, const std::string &action, const std::string &rule_name)
void note_dns_response ()
std::uint64_t connections () const
std::uint64_t accepted () const
std::uint64_t dropped () const
std::uint64_t ignored () const
std::uint64_t rules () const
std::uint64_t dns_responses () const
std::uint64_t rule_hits () const
std::uint64_t rule_misses () const
std::map< std::string, std::uint64_t > by_proto () const
std::map< std::string, std::uint64_t > by_address () const
std::map< std::string, std::uint64_t > by_host () const
std::map< std::string, std::uint64_t > by_port () const
std::map< std::string, std::uint64_t > by_uid () const
std::map< std::string, std::uint64_t > by_executable () const
std::deque< Event > events () const

Private Attributes

std::mutex mutex_
std::size_t max_events_
std::uint64_t rules_ {0}
std::uint64_t connections_ {0}
std::uint64_t ignored_ {0}
std::uint64_t accepted_ {0}
std::uint64_t dropped_ {0}
std::uint64_t dns_responses_ {0}
std::uint64_t rule_hits_ {0}
std::uint64_t rule_misses_ {0}
std::map< std::string, std::uint64_t > by_proto_
std::map< std::string, std::uint64_t > by_address_
std::map< std::string, std::uint64_t > by_host_
std::map< std::string, std::uint64_t > by_port_
std::map< std::string, std::uint64_t > by_uid_
std::map< std::string, std::uint64_t > by_executable_
std::deque< Event > events_

Detailed Description

Definition at line 18 of file Statistics.hpp.

Constructor & Destructor Documentation

◆ Statistics()

bsc::stats::Statistics::Statistics ( std::size_t max_events = 250)
explicit

Definition at line 18 of file Statistics.cpp.

18: max_events_(max_events) {}

References max_events_.

Member Function Documentation

◆ accepted()

std::uint64_t bsc::stats::Statistics::accepted ( ) const
nodiscard

Definition at line 40 of file Statistics.cpp.

40{ std::lock_guard lock(mutex_); return accepted_; }
std::uint64_t accepted_

References accepted_, and mutex_.

◆ by_address()

std::map< std::string, std::uint64_t > bsc::stats::Statistics::by_address ( ) const
nodiscard

Definition at line 49 of file Statistics.cpp.

49{ std::lock_guard lock(mutex_); return by_address_; }
std::map< std::string, std::uint64_t > by_address_

References by_address_, and mutex_.

◆ by_executable()

std::map< std::string, std::uint64_t > bsc::stats::Statistics::by_executable ( ) const
nodiscard

Definition at line 53 of file Statistics.cpp.

53{ std::lock_guard lock(mutex_); return by_executable_; }
std::map< std::string, std::uint64_t > by_executable_

References by_executable_, and mutex_.

◆ by_host()

std::map< std::string, std::uint64_t > bsc::stats::Statistics::by_host ( ) const
nodiscard

Definition at line 50 of file Statistics.cpp.

50{ std::lock_guard lock(mutex_); return by_host_; }
std::map< std::string, std::uint64_t > by_host_

References by_host_, and mutex_.

◆ by_port()

std::map< std::string, std::uint64_t > bsc::stats::Statistics::by_port ( ) const
nodiscard

Definition at line 51 of file Statistics.cpp.

51{ std::lock_guard lock(mutex_); return by_port_; }
std::map< std::string, std::uint64_t > by_port_

References by_port_, and mutex_.

◆ by_proto()

std::map< std::string, std::uint64_t > bsc::stats::Statistics::by_proto ( ) const
nodiscard

Definition at line 48 of file Statistics.cpp.

48{ std::lock_guard lock(mutex_); return by_proto_; }
std::map< std::string, std::uint64_t > by_proto_

References by_proto_, and mutex_.

◆ by_uid()

std::map< std::string, std::uint64_t > bsc::stats::Statistics::by_uid ( ) const
nodiscard

Definition at line 52 of file Statistics.cpp.

52{ std::lock_guard lock(mutex_); return by_uid_; }
std::map< std::string, std::uint64_t > by_uid_

References by_uid_, and mutex_.

◆ connections()

std::uint64_t bsc::stats::Statistics::connections ( ) const
nodiscard

Definition at line 39 of file Statistics.cpp.

39{ std::lock_guard lock(mutex_); return connections_; }
std::uint64_t connections_

References connections_, and mutex_.

◆ dns_responses()

std::uint64_t bsc::stats::Statistics::dns_responses ( ) const
nodiscard

Definition at line 45 of file Statistics.cpp.

45{ std::lock_guard lock(mutex_); return dns_responses_; }
std::uint64_t dns_responses_

References dns_responses_, and mutex_.

◆ dropped()

std::uint64_t bsc::stats::Statistics::dropped ( ) const
nodiscard

Definition at line 41 of file Statistics.cpp.

41{ std::lock_guard lock(mutex_); return dropped_; }
std::uint64_t dropped_

References dropped_, and mutex_.

◆ events()

std::deque< Event > bsc::stats::Statistics::events ( ) const
nodiscard

Definition at line 54 of file Statistics.cpp.

54{ std::lock_guard lock(mutex_); return events_; }
std::deque< Event > events_

References events_, and mutex_.

◆ ignored()

std::uint64_t bsc::stats::Statistics::ignored ( ) const
nodiscard

Definition at line 42 of file Statistics.cpp.

42{ std::lock_guard lock(mutex_); return ignored_; }
std::uint64_t ignored_

References ignored_, and mutex_.

◆ note_dns_response()

void bsc::stats::Statistics::note_dns_response ( )

Definition at line 44 of file Statistics.cpp.

44{ std::lock_guard lock(mutex_); ++dns_responses_; }

References dns_responses_, and mutex_.

◆ record()

void bsc::stats::Statistics::record ( const bsc::model::Connection & conn,
const std::string & action,
const std::string & rule_name )

Definition at line 20 of file Statistics.cpp.

20 {
21 std::lock_guard lock(mutex_);
23 ++by_proto_[conn.protocol];
24 ++by_address_[conn.dst_ip];
25 if (!conn.dst_host.empty()) ++by_host_[conn.dst_host];
26 ++by_port_[std::to_string(conn.dst_port)];
27 ++by_uid_[std::to_string(conn.user_id)];
28 if (!conn.process_path.empty()) ++by_executable_[conn.process_path];
29 if (action == "allow") ++accepted_;
30 else if (action == "deny") ++dropped_;
31 else ++ignored_;
32 if (!rule_name.empty()) { ++rules_; ++rule_hits_; }
33 else ++rule_misses_;
34 auto now = std::chrono::system_clock::now();
35 events_.push_front(Event{now_string(), conn, rule_name, std::chrono::duration_cast<std::chrono::nanoseconds>(now.time_since_epoch()).count()});
36 while (events_.size() > max_events_) events_.pop_back();
37}
std::uint64_t rule_hits_
std::uint64_t rule_misses_
std::uint32_t dst_port
std::uint32_t user_id

References accepted_, by_address_, by_executable_, by_host_, by_port_, by_proto_, by_uid_, connections_, dropped_, bsc::model::Connection::dst_host, bsc::model::Connection::dst_ip, bsc::model::Connection::dst_port, events_, ignored_, max_events_, mutex_, bsc::model::Connection::process_path, bsc::model::Connection::protocol, rule_hits_, rule_misses_, rules_, and bsc::model::Connection::user_id.

◆ rule_hits()

std::uint64_t bsc::stats::Statistics::rule_hits ( ) const
nodiscard

Definition at line 46 of file Statistics.cpp.

46{ std::lock_guard lock(mutex_); return rule_hits_; }

References mutex_, and rule_hits_.

◆ rule_misses()

std::uint64_t bsc::stats::Statistics::rule_misses ( ) const
nodiscard

Definition at line 47 of file Statistics.cpp.

47{ std::lock_guard lock(mutex_); return rule_misses_; }

References mutex_, and rule_misses_.

◆ rules()

std::uint64_t bsc::stats::Statistics::rules ( ) const
nodiscard

Definition at line 43 of file Statistics.cpp.

43{ std::lock_guard lock(mutex_); return rules_; }

References mutex_, and rules_.

Member Data Documentation

◆ accepted_

std::uint64_t bsc::stats::Statistics::accepted_ {0}
private

Definition at line 44 of file Statistics.hpp.

Referenced by accepted(), and record().

◆ by_address_

std::map<std::string, std::uint64_t> bsc::stats::Statistics::by_address_
private

Definition at line 50 of file Statistics.hpp.

Referenced by by_address(), and record().

◆ by_executable_

std::map<std::string, std::uint64_t> bsc::stats::Statistics::by_executable_
private

Definition at line 54 of file Statistics.hpp.

Referenced by by_executable(), and record().

◆ by_host_

std::map<std::string, std::uint64_t> bsc::stats::Statistics::by_host_
private

Definition at line 51 of file Statistics.hpp.

Referenced by by_host(), and record().

◆ by_port_

std::map<std::string, std::uint64_t> bsc::stats::Statistics::by_port_
private

Definition at line 52 of file Statistics.hpp.

Referenced by by_port(), and record().

◆ by_proto_

std::map<std::string, std::uint64_t> bsc::stats::Statistics::by_proto_
private

Definition at line 49 of file Statistics.hpp.

Referenced by by_proto(), and record().

◆ by_uid_

std::map<std::string, std::uint64_t> bsc::stats::Statistics::by_uid_
private

Definition at line 53 of file Statistics.hpp.

Referenced by by_uid(), and record().

◆ connections_

std::uint64_t bsc::stats::Statistics::connections_ {0}
private

Definition at line 42 of file Statistics.hpp.

Referenced by connections(), and record().

◆ dns_responses_

std::uint64_t bsc::stats::Statistics::dns_responses_ {0}
private

Definition at line 46 of file Statistics.hpp.

Referenced by dns_responses(), and note_dns_response().

◆ dropped_

std::uint64_t bsc::stats::Statistics::dropped_ {0}
private

Definition at line 45 of file Statistics.hpp.

Referenced by dropped(), and record().

◆ events_

std::deque<Event> bsc::stats::Statistics::events_
private

Definition at line 55 of file Statistics.hpp.

Referenced by events(), and record().

◆ ignored_

std::uint64_t bsc::stats::Statistics::ignored_ {0}
private

Definition at line 43 of file Statistics.hpp.

Referenced by ignored(), and record().

◆ max_events_

std::size_t bsc::stats::Statistics::max_events_
private

Definition at line 40 of file Statistics.hpp.

Referenced by record(), and Statistics().

◆ mutex_

std::mutex bsc::stats::Statistics::mutex_
mutableprivate

◆ rule_hits_

std::uint64_t bsc::stats::Statistics::rule_hits_ {0}
private

Definition at line 47 of file Statistics.hpp.

Referenced by record(), and rule_hits().

◆ rule_misses_

std::uint64_t bsc::stats::Statistics::rule_misses_ {0}
private

Definition at line 48 of file Statistics.hpp.

Referenced by record(), and rule_misses().

◆ rules_

std::uint64_t bsc::stats::Statistics::rules_ {0}
private

Definition at line 41 of file Statistics.hpp.

Referenced by record(), and rules().


The documentation for this class was generated from the following files:
  • BastionGuard/thirdparty/bastionguard-secure-connection/daemon/include/bsc/stats/Statistics.hpp
  • BastionGuard/thirdparty/bastionguard-secure-connection/daemon/src/stats/Statistics.cpp