<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Go_prometheus_client_example</id>
	<title>Go prometheus client example - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Go_prometheus_client_example"/>
	<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Go_prometheus_client_example&amp;action=history"/>
	<updated>2026-05-10T19:32:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>https://tech.uvoo.io/index.php?title=Go_prometheus_client_example&amp;diff=5508&amp;oldid=prev</id>
		<title>Busk: Created page with &quot;# Simple client  ``` set -a MIMIR_USERNAME=myuser MIMIR_PASSWORD=mypass MIMIR_URL=https://mimir.example.com/api/v1/push ``` promql ``` instance=go-client ```  ``` package main...&quot;</title>
		<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Go_prometheus_client_example&amp;diff=5508&amp;oldid=prev"/>
		<updated>2025-02-21T02:02:41Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;# Simple client  ``` set -a MIMIR_USERNAME=myuser MIMIR_PASSWORD=mypass MIMIR_URL=https://mimir.example.com/api/v1/push ``` promql ``` instance=go-client ```  ``` package main...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;# Simple client&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
set -a&lt;br /&gt;
MIMIR_USERNAME=myuser&lt;br /&gt;
MIMIR_PASSWORD=mypass&lt;br /&gt;
MIMIR_URL=https://mimir.example.com/api/v1/push&lt;br /&gt;
```&lt;br /&gt;
promql&lt;br /&gt;
```&lt;br /&gt;
instance=go-client&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
package main&lt;br /&gt;
&lt;br /&gt;
import (&lt;br /&gt;
        &amp;quot;bytes&amp;quot;&lt;br /&gt;
        &amp;quot;fmt&amp;quot;&lt;br /&gt;
        &amp;quot;log&amp;quot;&lt;br /&gt;
        &amp;quot;net/http&amp;quot;&lt;br /&gt;
        &amp;quot;os&amp;quot;&lt;br /&gt;
        &amp;quot;time&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;github.com/golang/protobuf/proto&amp;quot;&lt;br /&gt;
        &amp;quot;github.com/golang/snappy&amp;quot;&lt;br /&gt;
        pb &amp;quot;github.com/prometheus/prometheus/prompb&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
// Function to create a sample metric&lt;br /&gt;
func createMetric() *pb.WriteRequest {&lt;br /&gt;
        return &amp;amp;pb.WriteRequest{&lt;br /&gt;
                Timeseries: []pb.TimeSeries{&lt;br /&gt;
                        {&lt;br /&gt;
                                Labels: []pb.Label{&lt;br /&gt;
                                        {Name: &amp;quot;__name__&amp;quot;, Value: &amp;quot;test_metric&amp;quot;},&lt;br /&gt;
                                        {Name: &amp;quot;instance&amp;quot;, Value: &amp;quot;go-client&amp;quot;},&lt;br /&gt;
                                },&lt;br /&gt;
                                Samples: []pb.Sample{&lt;br /&gt;
                                        {Value: 42.0, Timestamp: time.Now().UnixMilli()},&lt;br /&gt;
                                },&lt;br /&gt;
                        },&lt;br /&gt;
                },&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Function to push the metric to Mimir&lt;br /&gt;
func pushToMimir(url, username, password string) error {&lt;br /&gt;
        metric := createMetric()&lt;br /&gt;
&lt;br /&gt;
        // Serialize Protobuf&lt;br /&gt;
        data, err := proto.Marshal(metric)&lt;br /&gt;
        if err != nil {&lt;br /&gt;
                return fmt.Errorf(&amp;quot;failed to serialize Protobuf: %v&amp;quot;, err)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Compress using Snappy&lt;br /&gt;
        compressedData := snappy.Encode(nil, data)&lt;br /&gt;
&lt;br /&gt;
        // Create HTTP request&lt;br /&gt;
        req, err := http.NewRequest(&amp;quot;POST&amp;quot;, url, bytes.NewReader(compressedData))&lt;br /&gt;
        if err != nil {&lt;br /&gt;
                return fmt.Errorf(&amp;quot;failed to create request: %v&amp;quot;, err)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Set Headers&lt;br /&gt;
        req.Header.Set(&amp;quot;Content-Type&amp;quot;, &amp;quot;application/x-protobuf&amp;quot;)&lt;br /&gt;
        req.Header.Set(&amp;quot;Content-Encoding&amp;quot;, &amp;quot;snappy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        // Add basic authentication (if credentials are provided)&lt;br /&gt;
        if username != &amp;quot;&amp;quot; &amp;amp;&amp;amp; password != &amp;quot;&amp;quot; {&lt;br /&gt;
                req.SetBasicAuth(username, password)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Send request&lt;br /&gt;
        client := &amp;amp;http.Client{}&lt;br /&gt;
        resp, err := client.Do(req)&lt;br /&gt;
        if err != nil {&lt;br /&gt;
                return fmt.Errorf(&amp;quot;failed to send request: %v&amp;quot;, err)&lt;br /&gt;
        }&lt;br /&gt;
        defer resp.Body.Close()&lt;br /&gt;
&lt;br /&gt;
        // Check response status&lt;br /&gt;
        if resp.StatusCode != http.StatusOK {&lt;br /&gt;
                return fmt.Errorf(&amp;quot;server returned: %v&amp;quot;, resp.Status)&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        log.Println(&amp;quot;Metric successfully pushed to Mimir&amp;quot;)&lt;br /&gt;
        return nil&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
func main() {&lt;br /&gt;
        // Read environment variables with default values&lt;br /&gt;
        mimirURL := os.Getenv(&amp;quot;MIMIR_URL&amp;quot;)&lt;br /&gt;
        if mimirURL == &amp;quot;&amp;quot; {&lt;br /&gt;
                mimirURL = &amp;quot;https://examplemimir.example.com/api/v1/push&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        username := os.Getenv(&amp;quot;MIMIR_USERNAME&amp;quot;)&lt;br /&gt;
        if username == &amp;quot;&amp;quot; {&lt;br /&gt;
                username = &amp;quot;your_username&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        password := os.Getenv(&amp;quot;MIMIR_PASSWORD&amp;quot;)&lt;br /&gt;
        if password == &amp;quot;&amp;quot; {&lt;br /&gt;
                password = &amp;quot;your_password&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        err := pushToMimir(mimirURL, username, password)&lt;br /&gt;
        if err != nil {&lt;br /&gt;
                log.Fatalf(&amp;quot;Error pushing to Mimir: %v&amp;quot;, err)&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
```&lt;/div&gt;</summary>
		<author><name>Busk</name></author>
	</entry>
</feed>