Arne Welzel
c3c6ee5a2b
telemetry: Run callbacks at collect time
...
Calling collect_metrics() from a script would not invoke metric
callbacks, resulting in most of the process metrics to be zero
when a Zeek process isn't scraped via Prometheus.
Fixes #4309
2025-03-26 12:07:27 +01:00
Arne Welzel
70872673a1
telemetry: Invoke Telemetry::sync() only at scrape/collection time
...
This stops invoking Telemetry::sync() via a scheduled event and instead
only invokes it on-demand. This makes metric collection network time
independent and lazier, too.
With Prometheus scrape requests being processed on Zeek's main thread
now, we can safely invoke the script layer Telemetry::sync() hook.
Closes #3947
2024-10-22 18:49:11 +02:00
Arne Welzel
48dd89ef33
telemetry: Move callbacks to Zeek
...
Now that we run callbacks on the main loop, we can move callback support
for Counter and Gauge instances directly into Zeek and don't need to patch
prometheus-cpp anymore.
2024-09-12 09:12:24 +02:00
Tim Wojtulewicz
a6843067e9
Split cpu time metric into user/system components like prof.log
...
The total can be calculated from the two parts via Prometheus/Grafana
if desired, so it's more informative to pass them as separate parts.
2024-08-05 13:27:30 -07:00
Tim Wojtulewicz
7ac7ce1d2b
Process metric callbacks from the main-loop thread
...
This avoids the callbacks from being processed on the worker thread
spawned by Civetweb. It fixes data race issues with lookups involving
global variables, amongst other threading issues.
2024-08-02 15:30:47 -07:00
Tim Wojtulewicz
9d6ba594b9
Use forward declarations of prometheus-cpp types in telemetry::Manager
2024-06-04 14:14:58 -07:00
Tim Wojtulewicz
f55c0a5292
Fix race condition by pre-building the cluster json data for services.json
2024-06-04 14:14:58 -07:00
Tim Wojtulewicz
52e6314f0e
Add type aliases for instrument and family shared_ptrs
2024-05-31 13:36:37 -07:00
Tim Wojtulewicz
93717ca8f8
Remove is_sum arguments from counters and gauges
2024-05-31 13:36:37 -07:00
Tim Wojtulewicz
46ff48c29a
Change all instruments to only handle doubles
2024-05-31 13:36:37 -07:00
Tim Wojtulewicz
6eab954fd2
Add comment to telemetry::Manager::InitPostScript
2024-05-31 13:36:37 -07:00
Tim Wojtulewicz
178103d2ee
Change all prometheus #includes to use angle brackets
2024-05-31 13:36:37 -07:00
Tim Wojtulewicz
84aa308527
Rework everything to access the prometheus-cpp objects more directly
2024-05-31 13:30:31 -07:00
Tim Wojtulewicz
2267de21e6
Add GetRegistry() method for retrieving access to prometheus-cpp registry
2024-05-31 13:30:31 -07:00
Tim Wojtulewicz
1cad305e58
Add support for callbacks for gauges/counters, restore process stat metrics
2024-05-31 13:30:31 -07:00
Tim Wojtulewicz
e93e4cc26d
Add a services.json endpoint for Prometheus service discovery
2024-05-31 13:30:31 -07:00
Tim Wojtulewicz
4718e5cf00
Remove everything related to aggregation
2024-05-31 13:30:31 -07:00
Tim Wojtulewicz
643bb38419
Make all options const-redefs, remove all of the change handler code
2024-05-31 13:30:31 -07:00
Tim Wojtulewicz
a0ae06b3cd
Convert telemetry code to use prometheus-cpp
2024-05-31 13:30:31 -07:00
Benjamin Bannier
f5a76c1aed
Reformat Zeek in Spicy style
...
This largely copies over Spicy's `.clang-format` configuration file. The
one place where we deviate is header include order since Zeek depends on
headers being included in a certain order.
2023-10-30 09:40:55 +01:00
Tim Wojtulewicz
90d0bc64fa
Replace empty destructor bodies with =default definitions
2023-07-07 09:17:05 -07:00
Josh Soref
cd201aa24e
Spelling src
...
These are non-functional changes.
* accounting
* activation
* actual
* added
* addresult
* aggregable
* aligned
* alternatively
* ambiguous
* analysis
* analyzer
* anticlimactic
* apparently
* application
* appropriate
* arithmetic
* assignment
* assigns
* associated
* authentication
* authoritative
* barrier
* boundary
* broccoli
* buffering
* caching
* called
* canonicalized
* capturing
* certificates
* ciphersuite
* columns
* communication
* comparison
* comparisons
* compilation
* component
* concatenating
* concatenation
* connection
* convenience
* correctly
* corresponding
* could
* counting
* data
* declared
* decryption
* defining
* dependent
* deprecated
* detached
* dictionary
* directional
* directly
* directory
* discarding
* disconnecting
* distinguishes
* documentation
* elsewhere
* emitted
* empty
* endianness
* endpoint
* enumerator
* essentially
* evaluated
* everything
* exactly
* execute
* explicit
* expressions
* facilitates
* fiddling
* filesystem
* flag
* flagged
* for
* fragments
* guarantee
* guaranteed
* happen
* happening
* hemisphere
* identifier
* identifies
* identify
* implementation
* implemented
* implementing
* including
* inconsistency
* indeterminate
* indices
* individual
* information
* initial
* initialization
* initialize
* initialized
* initializes
* instantiate
* instantiated
* instantiates
* interface
* internal
* interpreted
* interpreter
* into
* it
* iterators
* length
* likely
* log
* longer
* mainly
* mark
* maximum
* message
* minimum
* module
* must
* name
* namespace
* necessary
* nonexistent
* not
* notifications
* notifier
* number
* objects
* occurred
* operations
* original
* otherwise
* output
* overridden
* override
* overriding
* overwriting
* ownership
* parameters
* particular
* payload
* persistent
* potential
* precision
* preexisting
* preservation
* preserved
* primarily
* probably
* procedure
* proceed
* process
* processed
* processes
* processing
* propagate
* propagated
* prototype
* provides
* publishing
* purposes
* queue
* reached
* reason
* reassem
* reassemble
* reassembler
* recommend
* record
* reduction
* reference
* regularly
* representation
* request
* reserved
* retrieve
* returning
* separate
* should
* shouldn't
* significant
* signing
* simplified
* simultaneously
* single
* somebody
* sources
* specific
* specification
* specified
* specifies
* specify
* statement
* subdirectories
* succeeded
* successful
* successfully
* supplied
* synchronization
* tag
* temporarily
* terminating
* that
* the
* transmitted
* true
* truncated
* try
* understand
* unescaped
* unforwarding
* unknown
* unknowndata
* unspecified
* update
* usually
* which
* wildcard
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2022-11-09 12:08:15 -05:00
Arne Welzel
acacc6b6c2
telemetry: Remove singleton BIFs and the C++ pieces
...
The low-level singleton Telemetry BIFs have been removed with the that there
haven't been any users. Singleton metrics can be instantiated by providing
an empty label vector instead and aren't in any way a special concept.
Closes #2262 .
2022-08-05 19:33:49 +02:00
Robin Sommer
686e740bbe
Merge remote-tracking branch 'origin/topic/awelzel/telemetry-script-land-v0'
...
* origin/topic/awelzel/telemetry-script-land-v0:
Introduce telemetry framework
Bump broker submodule to master.
2022-08-05 17:14:23 +02:00
Arne Welzel
3fe930dbf2
Introduce telemetry framework
...
Adds base/frameworks/telemetry with wrappers around telemetry.bif
and updates telemetry/Manager to support collecting metrics from
script land.
Add policy/frameworks/telemetry/log for logging of metrics data
into a new telemetry.log and telemetry_histogram.log and add into
local.zeek by default.
2022-08-05 11:43:44 +02:00
Robin Sommer
5f1f005142
Merge remote-tracking branch 'origin/topic/neverlord/hide-caf'
...
* origin/topic/neverlord/hide-caf:
Fix GCC builds and string output for Broker errors
Update to latest Broker without public CAF dep
2022-02-07 16:25:22 +01:00
Vern Paxson
d758585e42
updated Bro->Zeek in comments in the source tree
2022-01-24 14:26:20 -08:00
Dominik Charousset
56f30b500a
Update to latest Broker without public CAF dep
2021-12-20 08:16:21 +01:00
Tim Wojtulewicz
b2f171ec69
Reformat the world
2021-09-16 15:35:39 -07:00
Dominik Charousset
2bac354e43
Expose telemetry API to scripting land
2021-03-29 10:47:32 +02:00
Dominik Charousset
d4466db5ce
Add handle types for histogram metrics
2021-03-29 10:47:32 +02:00
Dominik Charousset
2a21f2903a
Adhere to Zeek coding style
2021-03-29 10:47:32 +02:00
Dominik Charousset
83d7d2da4c
Add missing whitespaces for Zeek coding style
2021-03-29 10:47:32 +02:00
Dominik Charousset
59d114005e
Add gauge metric types
2021-03-29 10:47:32 +02:00
Dominik Charousset
617e4137c6
Add scaffold for new metrics API with counters
2021-03-29 10:47:32 +02:00