This commit is contained in:
2025-04-25 09:06:47 +03:00
parent 4687c67685
commit bb1d8c6e7d

View File

@@ -2,6 +2,7 @@ package main
import ( import (
"bufio" "bufio"
"bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"io" "io"
@@ -39,6 +40,9 @@ func createProxy(target *url.URL) func(http.ResponseWriter, *http.Request) {
req.URL.Scheme = target.Scheme req.URL.Scheme = target.Scheme
req.URL.Host = target.Host req.URL.Host = target.Host
} }
data, err := io.ReadAll(r.Body)
if err == nil {
r.Body = io.NopCloser(bytes.NewReader(data))
var jsonData map[string]interface{} var jsonData map[string]interface{}
json.NewDecoder(r.Body).Decode(&jsonData) json.NewDecoder(r.Body).Decode(&jsonData)
@@ -49,6 +53,10 @@ func createProxy(target *url.URL) func(http.ResponseWriter, *http.Request) {
streamed.Inc() streamed.Inc()
} }
} }
} else {
fmt.Println("Error reading body:", err)
}
r.Body = io.NopCloser(bytes.NewReader(data))
modifyResponse := func(response *http.Response) error { modifyResponse := func(response *http.Response) error {
pr, pw := io.Pipe() pr, pw := io.Pipe()
@@ -89,6 +97,9 @@ func createProxy(target *url.URL) func(http.ResponseWriter, *http.Request) {
} }
func handleJsonLine(line []byte) { func handleJsonLine(line []byte) {
if len(line) == 0 {
return
}
var jsonData map[string]interface{} var jsonData map[string]interface{}
err := json.Unmarshal([]byte(line), &jsonData) err := json.Unmarshal([]byte(line), &jsonData)
if err != nil { if err != nil {
@@ -100,7 +111,8 @@ func handleJsonLine(line []byte) {
duration := jsonData["eval_duration"].(float64) / 1000000000.0 duration := jsonData["eval_duration"].(float64) / 1000000000.0
fmt.Printf("Duration: %.2f seconds\n", duration) fmt.Printf("Duration: %.2f seconds\n", duration)
opsProcessed.Inc() opsProcessed.Inc()
tokens_out.Add(jsonData["prompt_eval_count"].(float64)) tokens_out.Add(jsonData["eval_count"].(float64))
tokens_in.Add(jsonData["prompt_eval_count"].(float64))
eval_time.Observe(duration) eval_time.Observe(duration)
} }
} }
@@ -122,7 +134,10 @@ var tokens_out = promauto.NewCounter(prometheus.CounterOpts{
Name: "llmproxymetrics_tokens_out", Name: "llmproxymetrics_tokens_out",
Help: "Tokens generated.", Help: "Tokens generated.",
}) })
var tokens_in = promauto.NewCounter(prometheus.CounterOpts{
Name: "llmproxymetrics_tokens_in",
Help: "Tokens input.",
})
var eval_time = promauto.NewHistogram(prometheus.HistogramOpts{ var eval_time = promauto.NewHistogram(prometheus.HistogramOpts{
Name: "llmproxymetrics_eval_time", Name: "llmproxymetrics_eval_time",
Help: "Tokens generated.", Help: "Tokens generated.",