diff options
author | Tor Brede Vekterli <vekterli@yahooinc.com> | 2023-02-17 10:22:38 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@yahooinc.com> | 2023-02-17 13:20:08 +0000 |
commit | 9bad60ef6d692745fbbf98338dfb17751f47dac3 (patch) | |
tree | 282424a1d8f2072f37237522b94b10cccf0f30ef /vespalib | |
parent | 8ca01ebd0196d2f01087ae1440f65e3584e87a0f (diff) |
Add metrics tracking failed RPC and status page capability checks
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/src/vespa/vespalib/net/tls/statistics.cpp | 16 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/net/tls/statistics.h | 39 |
2 files changed, 49 insertions, 6 deletions
diff --git a/vespalib/src/vespa/vespalib/net/tls/statistics.cpp b/vespalib/src/vespa/vespalib/net/tls/statistics.cpp index a308a20bf2f..dc642518abb 100644 --- a/vespalib/src/vespa/vespalib/net/tls/statistics.cpp +++ b/vespalib/src/vespa/vespalib/net/tls/statistics.cpp @@ -9,6 +9,8 @@ ConnectionStatistics ConnectionStatistics::server_stats = {}; ConfigStatistics ConfigStatistics::instance = {}; +CapabilityStatistics CapabilityStatistics::instance = {}; + ConnectionStatistics::Snapshot ConnectionStatistics::snapshot() const noexcept { Snapshot s; s.insecure_connections = insecure_connections.load(std::memory_order_relaxed); @@ -43,4 +45,18 @@ ConfigStatistics::Snapshot ConfigStatistics::Snapshot::subtract(const Snapshot& return s; } +CapabilityStatistics::Snapshot CapabilityStatistics::snapshot() const noexcept { + Snapshot s; + s.rpc_capability_checks_failed = rpc_capability_checks_failed.load(std::memory_order_relaxed); + s.status_capability_checks_failed = status_capability_checks_failed.load(std::memory_order_relaxed); + return s; +} + +CapabilityStatistics::Snapshot CapabilityStatistics::Snapshot::subtract(const Snapshot& rhs) const noexcept { + Snapshot s; + s.rpc_capability_checks_failed = rpc_capability_checks_failed - rhs.rpc_capability_checks_failed; + s.status_capability_checks_failed = status_capability_checks_failed - rhs.status_capability_checks_failed; + return s; +} + } diff --git a/vespalib/src/vespa/vespalib/net/tls/statistics.h b/vespalib/src/vespa/vespalib/net/tls/statistics.h index 3e94ed95590..e693b09a3d2 100644 --- a/vespalib/src/vespa/vespalib/net/tls/statistics.h +++ b/vespalib/src/vespa/vespalib/net/tls/statistics.h @@ -55,12 +55,12 @@ struct ConnectionStatistics { uint64_t invalid_peer_credentials = 0; uint64_t broken_tls_connections = 0; - Snapshot subtract(const Snapshot& rhs) const noexcept; + [[nodiscard]] Snapshot subtract(const Snapshot& rhs) const noexcept; }; - // Acquires a snapshot of statistics that is expected to be reasonably up to date. + // Acquires a snapshot of statistics that is expected to be reasonably up-to-date. // Thread safe. - Snapshot snapshot() const noexcept; + [[nodiscard]] Snapshot snapshot() const noexcept; static ConnectionStatistics client_stats; static ConnectionStatistics server_stats; @@ -85,15 +85,42 @@ struct ConfigStatistics { uint64_t successful_config_reloads = 0; uint64_t failed_config_reloads = 0; - Snapshot subtract(const Snapshot& rhs) const noexcept; + [[nodiscard]] Snapshot subtract(const Snapshot& rhs) const noexcept; }; - // Acquires a snapshot of statistics that is expected to be reasonably up to date. + // Acquires a snapshot of statistics that is expected to be reasonably up-to-date. // Thread safe. - Snapshot snapshot() const noexcept; + [[nodiscard]] Snapshot snapshot() const noexcept; static ConfigStatistics instance; static ConfigStatistics& get() noexcept { return instance; } }; +struct CapabilityStatistics { + std::atomic<uint64_t> rpc_capability_checks_failed = 0; + std::atomic<uint64_t> status_capability_checks_failed = 0; + + void inc_rpc_capability_checks_failed() noexcept { + rpc_capability_checks_failed.fetch_add(1, std::memory_order_relaxed); + } + + void inc_status_capability_checks_failed() noexcept { + status_capability_checks_failed.fetch_add(1, std::memory_order_relaxed); + } + + struct Snapshot { + uint64_t rpc_capability_checks_failed = 0; + uint64_t status_capability_checks_failed = 0; + + [[nodiscard]] Snapshot subtract(const Snapshot& rhs) const noexcept; + }; + + // Acquires a snapshot of statistics that is expected to be reasonably up-to-date. + // Thread safe. + [[nodiscard]] Snapshot snapshot() const noexcept; + + static CapabilityStatistics instance; + static CapabilityStatistics& get() noexcept { return instance; } +}; + } |