POC: Fluentd exporter for observability of the raft tracing - #8386
Draft
cjen1-msft wants to merge 6 commits into
Draft
cjen1-msft wants to merge 6 commits into
cjen1-msft wants to merge 6 commits into
Conversation
Preserve the current source, configuration, and test work before narrowing the production change. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the one-off upstream-driver comparison CLI and unrelated session-limit argument changes. Keep the generic Fluentd sink, Raft encoders, transport regressions, and real-collector e2e coverage. Pass tracing mode explicitly from CMake so the default tracing-disabled scenario test does not require a collector. Clarify the configuration contract and shorten the changelog. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep Fluentd configuration and validation alongside upstream connection timeouts and host include changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a proof of concept for the fluentd observability sink.
I've implemented it using the raft tracing as a benchmark (as getting that data out is a major outcome of this work).
Architecture
sequenceDiagram participant H as Host thread participant E as Enclave thread (each) participant Q as Per-thread SPSC queue participant L as Logger consumer thread participant F as Fluentd H->>H: Configure exporter H->>Q: Preallocate one queue per producer H->>L: Start consumer activate L L->>F: Attempt TCP connection H->>H: Bind host's queue H->>E: Start enclave threads activate E E->>E: Bind assigned queue to thread-local pointer Note over E,Q: Queues are statically allocated by host loop Emit events E->>E: Serialize event to MessagePack E->>Q: Enqueue owned record activate Q alt Slot available Q-->>E: Accepted else Queue full Q-->>E: Rejected - drop end deactivate Q Note over E: Continue without waiting end loop Drain queues independently L->>Q: Read next record activate Q Q-->>L: Record bytes, retained until send finishes L->>F: Send bytes L->>Q: Destroy record and release slot deactivate Q L->>L: Report drop thresholds opt No work available L->>L: Sleep 1 ms end end H->>E: Stop and join producers deactivate E H->>L: Request shutdown L->>Q: Drain for up to 2 seconds L->>L: Count remaining records as dropped L->>F: Close TCP connection L-->>H: Consumer joined deactivate LBenchmarking
This is using the blocking basic benchmark, two nodes, 1k clients, 4k slots in the ringbuffer, and a RAM disk as this was running on an ACI machine.
The specific results are the median throughput run for each.
100ms signatures
10ms signatures
Open questions