Есть ли способ конвертировать формат JSON в формат Prometheus - PullRequest
0 голосов
/ 21 октября 2019

У меня есть ответ JSON от Rundeck http://localhost:4440/metrics/metrics, мне нужно преобразовать этот ответ JSON в формат Prometheus,

Я попытался использовать внешний плагин для этого, например github.com / mtulio / rundeck-exporter , но у меня возникла проблема при запуске его в докере,

[~/temp]>docker run -p 9802:9802 -it mtulio/rundeck-exporter:latest -rundeck.user=admin -rundeck.pass=admin -rundeck.url=http://127.0.0.1:4440/metrics/metrics -no-verify-ssl -rundeck.version=27 -rundeck.token=PMMOPwyJ5RtDAUBaORrXdQ4V41CD9HjT
INFO[0000] Retrieving metrics on the Startup...          file=init.go line=113
Unable to update Metrics:  Client SOA is not initializated
panic: Error initializing metrics from the server: Client SOA is not initializated

goroutine 1 [running]:
github.com/mtulio/rundeck-exporter/src/collector.(*RMetrics).InitMetrics(0xc00013a2d0, 0x0, 0x0, 0x0, 0x40cb2d, 0x900660)
    /home/marcobraga/.go/src/github.com/mtulio/rundeck-exporter/src/collector/metrics.go:61 +0x139a
github.com/mtulio/rundeck-exporter/src/collector.NewCollectorMetrics(0xc00000c1a0, 0x3c, 0x0, 0x0, 0x0, 0x0, 0xc000059e18, 0x40bf18)
    /home/marcobraga/.go/src/github.com/mtulio/rundeck-exporter/src/collector/metrics.go:46 +0x80
github.com/mtulio/rundeck-exporter/src/collector.NewCollectorMaster(0xc00000c1a0, 0x3c, 0xc000148000, 0xc00014a000, 0x3b)
    /home/marcobraga/.go/src/github.com/mtulio/rundeck-exporter/src/collector/master.go:52 +0x58
main.initPromCollector(0x9c8360, 0xc0000aa008)
    /home/marcobraga/.go/src/github.com/mtulio/rundeck-exporter/cmd/rundeck-exporter/init.go:131 +0x4e
main.init.0()
    /home/marcobraga/.go/src/github.com/mtulio/rundeck-exporter/cmd/rundeck-exporter/init.go:121 +0x660
(17:30:08)sibrahim@midtierbeta@sibrahim(physio-lit-1810)
[~/Projects/rundeck-prometheus-exporter]>#docker run -p 9802:9802 -id mtulio/rundeck-exporter:latest -rundeck.user='admin' -rundeck.pass='admin' -rundeck.url=http://127.0.0.1:4440/metrics/metrics -no-verify-ssl -rundeck.version=18 -rundeck.token=PMMOPwyJ5RtDAUBaORrXdQ4V41CD9HjT
(17:30:21)sibrahim@midtierbeta@sibrahim(physio-lit-1810)
[~/Projects/rundeck-prometheus-exporter]>docker run -p 9802:9802 -id mtulio/rundeck-exporter:latest -rundeck.user='admin' -rundeck.pass='admin' -rundeck.url=http://127.0.0.1:4440/metrics/metrics -no-verify-ssl -rundeck.version=18 -rundeck.token=PMMOPwyJ5RtDAUBaORrXdQ4V41CD9HjT
412961c446bd63f0944e6af8235d45d68ce671935ebc1719f85b6b88a8f22dc7
(17:30:25)sibrahim@midtierbeta@sibrahim(physio-lit-1810)
[~/Projects/rundeck-prometheus-exporter]>docker run -p 9802:9802 -it mtulio/rundeck-exporter:latest -rundeck.user='admin' -rundeck.pass='admin' -rundeck.url=http://127.0.0.1:4440/metrics/metrics -no-verify-ssl -rundeck.version=18 -rundeck.token=PMMOPwyJ5RtDAUBaORrXdQ4V41CD9HjT
INFO[0000] Retrieving metrics on the Startup...          file=init.go line=113
Unable to update Metrics:  Client SOA is not initializated
panic: Error initializing metrics from the server: Client SOA is not initializated

goroutine 1 [running]:
github.com/mtulio/rundeck-exporter/src/collector.(*RMetrics).InitMetrics(0xc0001302d0, 0x0, 0x0, 0x0, 0x40cb2d, 0x900660)
    /home/marcobraga/.go/src/github.com/mtulio/rundeck-exporter/src/collector/metrics.go:61 +0x139a
github.com/mtulio/rundeck-exporter/src/collector.NewCollectorMetrics(0xc00000c1a0, 0x3c, 0x0, 0x0, 0x0, 0x0, 0xc000087e18, 0x40bf18)
    /home/marcobraga/.go/src/github.com/mtulio/rundeck-exporter/src/collector/metrics.go:46 +0x80
github.com/mtulio/rundeck-exporter/src/collector.NewCollectorMaster(0xc00000c1a0, 0x3c, 0xc00013e000, 0xc000140000, 0x3b)
    /home/marcobraga/.go/src/github.com/mtulio/rundeck-exporter/src/collector/master.go:52 +0x58
main.initPromCollector(0x9c8360, 0xc0000aa008)
    /home/marcobraga/.go/src/github.com/mtulio/rundeck-exporter/cmd/rundeck-exporter/init.go:131 +0x4e
main.init.0()
    /home/marcobraga/.go/src/github.com/mtulio/rundeck-exporter/cmd/rundeck-exporter/init.go:121 +0x660

Если вы можете посоветовать мне способ синтаксического анализа формата JSON в формате Prometheus,Ценю вашу помощь.

1 Ответ

0 голосов
/ 21 октября 2019

Другой способ - получить метрики в формате JSON с помощью API:

curl --location --request GET "http://yourhost:4440/api/33/metrics/metrics" --header "Accept: application/json" --header "X-Rundeck-Auth-Token: your-user-token" > myfile.json

, а затем использовать jq для преобразования. Взгляните на этот поток .

Фактически, вы можете создать задание Rundeck, которое автоматизирует этот процесс.

...