Comments (5)
I'm happy to raise a PR, but if I am wondering if you'd have a better suggestion, especially in the context of these upcoming changes: #149.
from client_rust.
I like that the client doesn't do HTTP serving and stick to the protocol, so it's 99% of what I need.
Good to hear.
What causes me trouble is just a single line of code:
writer.write_str("# EOF\n")?;
:D
Would you consider a variant of the
encode
function that doesn't write out the# EOF
?
Generally yes. I see the use-case of wanting to combine multiple encode
outputs, whether from the same client library or different ones.
That said, in case performance is not an issue for you and you are fine with a small hack, why not encode into a String
and then drop the last line?
from client_rust.
I'm happy to raise a PR, but if I am wondering if you'd have a better suggestion, especially in the context of these upcoming changes: #149.
I don't see how #149 would help or effect your situation. You could implement your own Collector
that collects the metrics from the parts written in a different language. Though that sounds very painful.
from client_rust.
Ours is a performance-sensitive application and I'd rather not have to double-buffer :-)
We embed Rust, rather than the other way around.
from client_rust.
The reason why I was mentioning PR #149 is that as I was looking at it I noticed the new encode
is implemented as:
/// Encode the metrics registered with the provided [`Registry`] into the
/// provided [`Write`]r using the OpenMetrics text format.
pub fn encode<W>(writer: &mut W, registry: &Registry) -> Result<(), std::fmt::Error>
where
W: Write,
{
registry.encode(&mut DescriptorEncoder::new(writer).into())?;
writer.write_str("# EOF\n")?;
Ok(())
}
pub(crate) struct DescriptorEncoder<'a> {
writer: &'a mut dyn Write,
prefix: Option<&'a Prefix>,
labels: &'a [(Cow<'static, str>, Cow<'static, str>)],
}
The alternative here might be to expose the DescriptorEncoder
as pub
rather than pub(crate)
. I think an independent function is cleaner (though I can't necessarily think of a good name).
If not, I'll wait for PR #149 to be merged and raise mine after (given that code is changing anyways).
from client_rust.
Related Issues (20)
- Allow flattening of a struct through derive(EncodeLabelSet) at any position HOT 2
- Make `Descriptor::new` `const` HOT 1
- feat: derive register logic on struct of metrics
- Allow multiple labels in sub_registry_with_label method HOT 2
- Allow root registry creation with prefix AND label(s) HOT 1
- Implement native histograms HOT 1
- Escaping? HOT 3
- Public encoding functions? HOT 4
- Custom Collector with `sub_registry_with_prefix` outputs name multiple times HOT 3
- Abstract key lookup into a trait for Family::get_or_create HOT 4
- Allow iterating the metrics on an registry HOT 1
- Allow construct a histogram family with a closure HOT 2
- mips: EncodeCounterValue implementation missing for u32?
- Histogram with empty family labels creates unparseable metrics output HOT 1
- text::DescriptorEncoder writes incorrect metric names HOT 2
- UTF-8: Implement support in Rust client library
- Implement Atomic for usize HOT 2
- Counter `HELP` and `TYPE` lack `_total` suffix HOT 5
- Provide a way to prevent unbounded metric growth HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from client_rust.