Last active
August 29, 2015 14:19
-
-
Save matschaffer/462b5ebdcfc359312ce1 to your computer and use it in GitHub Desktop.
metrics stuff for https://github.com/stellar/stellar-core
This file contains 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
[hekad] | |
base_dir = "/tmp" | |
[StellarCoreMetricsInput] | |
type = "HttpInput" | |
url = "http://localhost:8000/metrics" | |
ticker_interval = 1 | |
[StellarCoreMetricsFilter] | |
type = "SandboxFilter" | |
message_matcher = "Type == 'heka.httpinput.data'" | |
filename = "/Users/mat/stellar/ops/heka/stellar_core_metrics_filter.lua" | |
ticker_interval = 5 | |
[StellarCoreMetricsFilter.config] | |
prefix = "local.matschaffer" | |
[StellarCoreMetricsInfluxOutput] | |
type = "HttpOutput" | |
message_matcher = "Type == 'heka.sandbox.stellar.core.metrics.influx'" | |
address = "http://localhost:8000/influx" | |
encoder = "PayloadEncoder" | |
username = "root" | |
password = "root" | |
[StellarCoreMetricsAtlasOutput] | |
type = "HttpOutput" | |
message_matcher = "Type == 'heka.sandbox.stellar.core.metrics.atlas'" | |
address = "http://localhost:8000/atlas" | |
encoder = "PayloadEncoder" | |
username = "root" | |
password = "root" | |
[StellarCoreMetricsAtlasOutput.headers] | |
Content-Type = ["application/json"] | |
[DebugOutput] | |
#message_matcher = "Type == 'heka.sandbox.stellar.debug'" | |
message_matcher = "Type == 'heka.sandbox-terminated'" | |
#message_matcher = "Type == 'heka.sandbox-terminated'" | |
#message_matcher = "TRUE" | |
#message_matcher = "Type != 'heka.httpinput.data'" | |
type = "LogOutput" | |
encoder = "RstEncoder" | |
[RstEncoder] | |
[PayloadEncoder] |
This file contains 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
package main | |
import ( | |
"fmt" | |
"io" | |
"io/ioutil" | |
"net/http" | |
) | |
var influxCount = 0 | |
var atlasCount = 0 | |
func metrics(w http.ResponseWriter, r *http.Request) { | |
buf, err := ioutil.ReadFile("./metrics.json") | |
if err != nil { | |
panic(err) | |
} | |
w.Header().Set("Content-Type", "application/json") | |
io.WriteString(w, string(buf)) | |
} | |
func influx(w http.ResponseWriter, r *http.Request) { | |
buf, err := ioutil.ReadAll(r.Body) | |
if err != nil { | |
panic(err) | |
} | |
ioutil.WriteFile(fmt.Sprintf("influx/%04d.json", influxCount), buf, 0644) | |
influxCount++ | |
io.WriteString(w, "ok") | |
} | |
func atlas(w http.ResponseWriter, r *http.Request) { | |
contentType := r.Header["Content-Type"][0] | |
if contentType != "application/json" { | |
panic(fmt.Sprintf("Header was %s, expecting application/json", contentType)) | |
} | |
buf, err := ioutil.ReadAll(r.Body) | |
if err != nil { | |
panic(err) | |
} | |
ioutil.WriteFile(fmt.Sprintf("atlas/%04d.json", atlasCount), buf, 0644) | |
atlasCount++ | |
io.WriteString(w, "ok") | |
} | |
func main() { | |
http.HandleFunc("/metrics", metrics) | |
http.HandleFunc("/influx", influx) | |
http.HandleFunc("/atlas", atlas) | |
http.ListenAndServe(":8000", nil) | |
} |
This file contains 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
{ | |
"ts":"2015-04-21T05:34:00Z", | |
"uname":"core-001.stg.stellar001.internal.stellar-ops.com", | |
"metrics":{ | |
"bucket.batch.add":{ | |
"type":"timer", | |
"count":7123, | |
"event_type":"calls", | |
"rate_unit":"s", | |
"mean_rate":0.241479, | |
"1_min_rate":0.260454, | |
"5_min_rate":0.264505, | |
"15_min_rate":0.267672, | |
"duration_unit":"ms", | |
"min":0.3552, | |
"max":4.31495, | |
"mean":0.54571, | |
"stddev":0.163259, | |
"median":0.53692, | |
"75%":0.587508, | |
"95%":0.785747, | |
"98%":0.785747, | |
"99%":0.785747, | |
"99.9%":0.785747 | |
} | |
,"bucket.byte.insert":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"byte", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"bucket.memory.shared":{ | |
"type":"counter", | |
"count":1 | |
} | |
,"bucket.object.insert":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"object", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"bucket.snap.merge":{ | |
"type":"timer", | |
"count":18991, | |
"event_type":"calls", | |
"rate_unit":"s", | |
"mean_rate":0.64382, | |
"1_min_rate":0.730233, | |
"5_min_rate":0.710049, | |
"15_min_rate":0.713865, | |
"duration_unit":"ms", | |
"min":0.047448, | |
"max":0.792982, | |
"mean":0.0825792, | |
"stddev":0.0660188, | |
"median":0.0604605, | |
"75%":0.078586, | |
"95%":0.138694, | |
"98%":0.139128, | |
"99%":0.139128, | |
"99.9%":0.139128 | |
} | |
,"database.insert.ledger-header":{ | |
"type":"timer", | |
"count":7123, | |
"event_type":"calls", | |
"rate_unit":"s", | |
"mean_rate":0.241739, | |
"1_min_rate":0.27512, | |
"5_min_rate":0.26678, | |
"15_min_rate":0.26825, | |
"duration_unit":"ms", | |
"min":0.191221, | |
"max":0.574914, | |
"mean":0.258712, | |
"stddev":0.0393977, | |
"median":0.260537, | |
"75%":0.264861, | |
"95%":0.483716, | |
"98%":0.483716, | |
"99%":0.483716, | |
"99.9%":0.483716 | |
} | |
,"database.insert.peer":{ | |
"type":"timer", | |
"count":19, | |
"event_type":"calls", | |
"rate_unit":"s", | |
"mean_rate":0.000644169, | |
"1_min_rate":1.63009e-61, | |
"5_min_rate":5.25934e-15, | |
"15_min_rate":1.29357e-07, | |
"duration_unit":"ms", | |
"min":0.267453, | |
"max":5.60998, | |
"mean":0.771783, | |
"stddev":1.31716, | |
"median":0.330832, | |
"75%":0.361301, | |
"95%":0.361301, | |
"98%":0.361301, | |
"99%":0.361301, | |
"99.9%":0.361301 | |
} | |
,"database.memory.statements":{ | |
"type":"counter", | |
"count":0 | |
} | |
,"database.select.ledger-header":{ | |
"type":"timer", | |
"count":1, | |
"event_type":"calls", | |
"rate_unit":"s", | |
"mean_rate":3.39013e-05, | |
"1_min_rate":2.32117e-194, | |
"5_min_rate":5.17565e-40, | |
"15_min_rate":2.74584e-14, | |
"duration_unit":"ms", | |
"min":0.650863, | |
"max":0.650863, | |
"mean":0.650863, | |
"stddev":0, | |
"median":0.650863, | |
"75%":0.650863, | |
"95%":0.650863, | |
"98%":0.650863, | |
"99%":0.650863, | |
"99.9%":0.650863 | |
} | |
,"database.select.ledger-header-history":{ | |
"type":"timer", | |
"count":111, | |
"event_type":"calls", | |
"rate_unit":"s", | |
"mean_rate":0.00380096, | |
"1_min_rate":0.00466701, | |
"5_min_rate":0.00467664, | |
"15_min_rate":0.00441305, | |
"duration_unit":"ms", | |
"min":1.36559, | |
"max":3.33133, | |
"mean":1.72323, | |
"stddev":0.197948, | |
"median":1.6713, | |
"75%":1.72589, | |
"95%":1.72589, | |
"98%":1.72589, | |
"99%":1.72589, | |
"99.9%":1.72589 | |
} | |
,"database.select.peer":{ | |
"type":"timer", | |
"count":14754, | |
"event_type":"calls", | |
"rate_unit":"s", | |
"mean_rate":0.500214, | |
"1_min_rate":0.551333, | |
"5_min_rate":0.547613, | |
"15_min_rate":0.546388, | |
"duration_unit":"ms", | |
"min":0.254778, | |
"max":2.21566, | |
"mean":0.68871, | |
"stddev":0.0639192, | |
"median":0.702996, | |
"75%":0.735974, | |
"95%":0.751435, | |
"98%":0.756638, | |
"99%":0.756638, | |
"99.9%":0.756638 | |
} | |
,"database.select.state":{ | |
"type":"timer", | |
"count":6, | |
"event_type":"calls", | |
"rate_unit":"s", | |
"mean_rate":0.000203408, | |
"1_min_rate":1.51373e-193, | |
"5_min_rate":3.15758e-39, | |
"15_min_rate":1.65668e-13, | |
"duration_unit":"ms", | |
"min":0.209072, | |
"max":1.45294, | |
"mean":0.432781, | |
"stddev":0.500017, | |
"median":0.237397, | |
"75%":0.548651, | |
"95%":1.45294, | |
"98%":1.45294, | |
"99%":1.45294, | |
"99.9%":1.45294 | |
} | |
,"database.select.txhistory":{ | |
"type":"timer", | |
"count":111, | |
"event_type":"calls", | |
"rate_unit":"s", | |
"mean_rate":0.00380096, | |
"1_min_rate":0.00466701, | |
"5_min_rate":0.00467506, | |
"15_min_rate":0.00440368, | |
"duration_unit":"ms", | |
"min":0.3527, | |
"max":0.683855, | |
"mean":0.431933, | |
"stddev":0.0543622, | |
"median":0.421779, | |
"75%":0.454487, | |
"95%":0.454487, | |
"98%":0.454487, | |
"99%":0.454487, | |
"99.9%":0.454487 | |
} | |
,"database.update.peer":{ | |
"type":"timer", | |
"count":16, | |
"event_type":"calls", | |
"rate_unit":"s", | |
"mean_rate":0.000542458, | |
"1_min_rate":1.63009e-61, | |
"5_min_rate":5.25934e-15, | |
"15_min_rate":1.29357e-07, | |
"duration_unit":"ms", | |
"min":1.48349, | |
"max":3.37239, | |
"mean":2.4398, | |
"stddev":0.779665, | |
"median":1.78856, | |
"75%":1.83448, | |
"95%":1.83448, | |
"98%":1.83448, | |
"99%":1.83448, | |
"99.9%":1.83448 | |
} | |
,"database.update.state":{ | |
"type":"timer", | |
"count":14247, | |
"event_type":"calls", | |
"rate_unit":"s", | |
"mean_rate":0.482992, | |
"1_min_rate":0.548351, | |
"5_min_rate":0.533178, | |
"15_min_rate":0.535407, | |
"duration_unit":"ms", | |
"min":0.161756, | |
"max":1.84784, | |
"mean":0.2097, | |
"stddev":0.0255563, | |
"median":0.207193, | |
"75%":0.226764, | |
"95%":0.251164, | |
"98%":0.257592, | |
"99%":0.257592, | |
"99.9%":0.257592 | |
} | |
,"history.catchup.failure":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"event", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"history.catchup.start":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"event", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"history.catchup.success":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"event", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"history.memory.pending-snaps":{ | |
"type":"counter", | |
"count":0 | |
} | |
,"history.memory.publishers":{ | |
"type":"counter", | |
"count":0 | |
} | |
,"history.publish.delay":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"event", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"history.publish.failure":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"event", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"history.publish.queue":{ | |
"type":"meter", | |
"count":111, | |
"event_type":"event", | |
"rate_unit":"s", | |
"mean_rate":0.00376305, | |
"1_min_rate":0.0050653, | |
"5_min_rate":0.00473811, | |
"15_min_rate":0.00442642 | |
} | |
,"history.publish.skip":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"event", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"history.publish.start":{ | |
"type":"meter", | |
"count":111, | |
"event_type":"event", | |
"rate_unit":"s", | |
"mean_rate":0.00376305, | |
"1_min_rate":0.00466701, | |
"5_min_rate":0.00467892, | |
"15_min_rate":0.00440622 | |
} | |
,"history.publish.success":{ | |
"type":"meter", | |
"count":111, | |
"event_type":"event", | |
"rate_unit":"s", | |
"mean_rate":0.00376305, | |
"1_min_rate":0.0050653, | |
"5_min_rate":0.0047353, | |
"15_min_rate":0.00442841 | |
} | |
,"ledger.ledger.close":{ | |
"type":"timer", | |
"count":7124, | |
"event_type":"calls", | |
"rate_unit":"s", | |
"mean_rate":0.241513, | |
"1_min_rate":0.27417, | |
"5_min_rate":0.266566, | |
"15_min_rate":0.267715, | |
"duration_unit":"ms", | |
"min":3.2352, | |
"max":16.019, | |
"mean":5.01594, | |
"stddev":1.01539, | |
"median":5.23593, | |
"75%":5.49466, | |
"95%":6.41943, | |
"98%":6.41943, | |
"99%":6.41943, | |
"99.9%":6.41943 | |
} | |
,"ledger.memory.syncing-ledgers":{ | |
"type":"counter", | |
"count":0 | |
} | |
,"ledger.transaction.apply":{ | |
"type":"timer", | |
"count":0, | |
"event_type":"calls", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0, | |
"duration_unit":"ms", | |
"min":0, | |
"max":0, | |
"mean":0, | |
"stddev":0, | |
"median":0, | |
"75%":0, | |
"95%":0, | |
"98%":0, | |
"99%":0, | |
"99.9%":0 | |
} | |
,"overlay.byte.read":{ | |
"type":"meter", | |
"count":43721232, | |
"event_type":"byte", | |
"rate_unit":"s", | |
"mean_rate":1482.31, | |
"1_min_rate":1513.09, | |
"5_min_rate":1477.8, | |
"15_min_rate":1476.38 | |
} | |
,"overlay.byte.write":{ | |
"type":"meter", | |
"count":43819312, | |
"event_type":"byte", | |
"rate_unit":"s", | |
"mean_rate":1485.63, | |
"1_min_rate":1524.29, | |
"5_min_rate":1506.01, | |
"15_min_rate":1507 | |
} | |
,"overlay.connection.attempt":{ | |
"type":"meter", | |
"count":16, | |
"event_type":"connection", | |
"rate_unit":"s", | |
"mean_rate":0.000542421, | |
"1_min_rate":1.77175e-61, | |
"5_min_rate":5.34773e-15, | |
"15_min_rate":1.30077e-07 | |
} | |
,"overlay.connection.drop":{ | |
"type":"meter", | |
"count":27, | |
"event_type":"connection", | |
"rate_unit":"s", | |
"mean_rate":0.000915336, | |
"1_min_rate":3.5435e-61, | |
"5_min_rate":1.06955e-14, | |
"15_min_rate":2.60155e-07 | |
} | |
,"overlay.connection.establish":{ | |
"type":"meter", | |
"count":29, | |
"event_type":"connection", | |
"rate_unit":"s", | |
"mean_rate":0.000983138, | |
"1_min_rate":3.85145e-61, | |
"5_min_rate":1.08752e-14, | |
"15_min_rate":2.61604e-07 | |
} | |
,"overlay.connection.reject":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"connection", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"overlay.error.read":{ | |
"type":"meter", | |
"count":11, | |
"event_type":"error", | |
"rate_unit":"s", | |
"mean_rate":0.00037294, | |
"1_min_rate":1.92572e-61, | |
"5_min_rate":5.43761e-15, | |
"15_min_rate":1.30802e-07 | |
} | |
,"overlay.error.write":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"error", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"overlay.memory.flood-map":{ | |
"type":"counter", | |
"count":18 | |
} | |
,"overlay.memory.item-fetch-map":{ | |
"type":"counter", | |
"count":2 | |
} | |
,"overlay.memory.peers":{ | |
"type":"counter", | |
"count":2 | |
} | |
,"overlay.message.broadcast":{ | |
"type":"meter", | |
"count":123893, | |
"event_type":"message", | |
"rate_unit":"s", | |
"mean_rate":4.20014, | |
"1_min_rate":4.18418, | |
"5_min_rate":4.07676, | |
"15_min_rate":4.05323 | |
} | |
,"overlay.message.read":{ | |
"type":"meter", | |
"count":148747, | |
"event_type":"message", | |
"rate_unit":"s", | |
"mean_rate":5.04306, | |
"1_min_rate":5.13132, | |
"5_min_rate":5.0269, | |
"15_min_rate":5.02789 | |
} | |
,"overlay.message.receive":{ | |
"type":"meter", | |
"count":146204, | |
"event_type":"message", | |
"rate_unit":"s", | |
"mean_rate":4.95651, | |
"1_min_rate":5.06811, | |
"5_min_rate":4.95073, | |
"15_min_rate":4.94187 | |
} | |
,"overlay.message.write":{ | |
"type":"meter", | |
"count":149063, | |
"event_type":"message", | |
"rate_unit":"s", | |
"mean_rate":5.05378, | |
"1_min_rate":5.16559, | |
"5_min_rate":5.11464, | |
"15_min_rate":5.12598 | |
} | |
,"overlay.timeout.read":{ | |
"type":"meter", | |
"count":11, | |
"event_type":"timeout", | |
"rate_unit":"s", | |
"mean_rate":0.00037294, | |
"1_min_rate":3.17498e-61, | |
"5_min_rate":6.00948e-15, | |
"15_min_rate":1.35236e-07 | |
} | |
,"overlay.timeout.write":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"timeout", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"process.memory.handles":{ | |
"type":"counter", | |
"count":0 | |
} | |
,"scp.ballot.commit":{ | |
"type":"meter", | |
"count":7121, | |
"event_type":"ballot", | |
"rate_unit":"s", | |
"mean_rate":0.241411, | |
"1_min_rate":0.25872, | |
"5_min_rate":0.263417, | |
"15_min_rate":0.266391 | |
} | |
,"scp.ballot.committed":{ | |
"type":"meter", | |
"count":7123, | |
"event_type":"ballot", | |
"rate_unit":"s", | |
"mean_rate":0.241479, | |
"1_min_rate":0.25872, | |
"5_min_rate":0.263406, | |
"15_min_rate":0.266375 | |
} | |
,"scp.ballot.expire":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"ballot", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"scp.ballot.invalid":{ | |
"type":"meter", | |
"count":13034, | |
"event_type":"ballot", | |
"rate_unit":"s", | |
"mean_rate":0.44187, | |
"1_min_rate":0.448764, | |
"5_min_rate":0.450431, | |
"15_min_rate":0.423347 | |
} | |
,"scp.ballot.invalidsig":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"ballot", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"scp.ballot.prepare":{ | |
"type":"meter", | |
"count":11283, | |
"event_type":"ballot", | |
"rate_unit":"s", | |
"mean_rate":0.382509, | |
"1_min_rate":0.36626, | |
"5_min_rate":0.369402, | |
"15_min_rate":0.377884 | |
} | |
,"scp.ballot.prepared":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"ballot", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"scp.ballot.sign":{ | |
"type":"meter", | |
"count":5892, | |
"event_type":"ballot", | |
"rate_unit":"s", | |
"mean_rate":0.199747, | |
"1_min_rate":0.2, | |
"5_min_rate":0.2, | |
"15_min_rate":0.2 | |
} | |
,"scp.ballot.valid":{ | |
"type":"meter", | |
"count":29455, | |
"event_type":"ballot", | |
"rate_unit":"s", | |
"mean_rate":0.998563, | |
"1_min_rate":1.04542, | |
"5_min_rate":1.04529, | |
"15_min_rate":1.06121 | |
} | |
,"scp.ballot.validsig":{ | |
"type":"meter", | |
"count":328548, | |
"event_type":"ballot", | |
"rate_unit":"s", | |
"mean_rate":11.1382, | |
"1_min_rate":10.5096, | |
"5_min_rate":10.6638, | |
"15_min_rate":10.818 | |
} | |
,"scp.envelope.emit":{ | |
"type":"meter", | |
"count":54316, | |
"event_type":"envelope", | |
"rate_unit":"s", | |
"mean_rate":1.84138, | |
"1_min_rate":1.7861, | |
"5_min_rate":1.80798, | |
"15_min_rate":1.8128 | |
} | |
,"scp.envelope.invalidsig":{ | |
"type":"meter", | |
"count":0, | |
"event_type":"envelope", | |
"rate_unit":"s", | |
"mean_rate":0, | |
"1_min_rate":0, | |
"5_min_rate":0, | |
"15_min_rate":0 | |
} | |
,"scp.envelope.receive":{ | |
"type":"meter", | |
"count":146204, | |
"event_type":"envelope", | |
"rate_unit":"s", | |
"mean_rate":4.95651, | |
"1_min_rate":5.06812, | |
"5_min_rate":4.95077, | |
"15_min_rate":4.94188 | |
} | |
,"scp.envelope.sign":{ | |
"type":"meter", | |
"count":46436, | |
"event_type":"envelope", | |
"rate_unit":"s", | |
"mean_rate":1.57424, | |
"1_min_rate":1.42368, | |
"5_min_rate":1.44169, | |
"15_min_rate":1.4587 | |
} | |
,"scp.envelope.validsig":{ | |
"type":"meter", | |
"count":75641, | |
"event_type":"envelope", | |
"rate_unit":"s", | |
"mean_rate":2.56433, | |
"1_min_rate":2.51758, | |
"5_min_rate":2.55697, | |
"15_min_rate":2.55854 | |
} | |
,"scp.memory.ballot-validation-timers":{ | |
"type":"counter", | |
"count":0 | |
} | |
,"scp.memory.cumulative-cached-quorum-sets":{ | |
"type":"counter", | |
"count":3 | |
} | |
,"scp.memory.cumulative-statements":{ | |
"type":"counter", | |
"count":7 | |
} | |
,"scp.memory.future-envelopes":{ | |
"type":"counter", | |
"count":1 | |
} | |
,"scp.memory.known-nodes":{ | |
"type":"counter", | |
"count":3 | |
} | |
,"scp.memory.known-slots":{ | |
"type":"counter", | |
"count":5 | |
} | |
,"scp.memory.node-last-access":{ | |
"type":"counter", | |
"count":3 | |
} | |
,"scp.memory.qset-fetches":{ | |
"type":"counter", | |
"count":0 | |
} | |
,"scp.qset.retrieve":{ | |
"type":"meter", | |
"count":2, | |
"event_type":"qset", | |
"rate_unit":"s", | |
"mean_rate":6.78026e-05, | |
"1_min_rate":2.4649e-194, | |
"5_min_rate":2.45852e-41, | |
"15_min_rate":3.43007e-16 | |
} | |
,"scp.quorum.heard":{ | |
"type":"meter", | |
"count":7128, | |
"event_type":"quorum", | |
"rate_unit":"s", | |
"mean_rate":0.241649, | |
"1_min_rate":0.274711, | |
"5_min_rate":0.266682, | |
"15_min_rate":0.267442 | |
} | |
,"scp.value.externalize":{ | |
"type":"meter", | |
"count":7123, | |
"event_type":"value", | |
"rate_unit":"s", | |
"mean_rate":0.241479, | |
"1_min_rate":0.260765, | |
"5_min_rate":0.263547, | |
"15_min_rate":0.266473 | |
} | |
,"scp.value.invalid":{ | |
"type":"meter", | |
"count":6064, | |
"event_type":"value", | |
"rate_unit":"s", | |
"mean_rate":0.205578, | |
"1_min_rate":0.167503, | |
"5_min_rate":0.202222, | |
"15_min_rate":0.221011 | |
} | |
,"scp.value.prepare":{ | |
"type":"meter", | |
"count":5891, | |
"event_type":"value", | |
"rate_unit":"s", | |
"mean_rate":0.199713, | |
"1_min_rate":0.2, | |
"5_min_rate":0.2, | |
"15_min_rate":0.200067 | |
} | |
,"scp.value.valid":{ | |
"type":"meter", | |
"count":102234, | |
"event_type":"value", | |
"rate_unit":"s", | |
"mean_rate":3.46587, | |
"1_min_rate":3.21166, | |
"5_min_rate":3.25772, | |
"15_min_rate":3.27156 | |
} | |
}} |
This file contains 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
local cj = require "cjson" | |
local dt = require "date_time" | |
local l = require "lpeg" | |
local table = require "table" | |
local math = require "math" | |
local prefix = read_config("prefix") | |
local latest_stats = {} | |
function process_message() | |
local raw_message = read_message("Payload") | |
local ok, json = pcall(cj.decode, raw_message) | |
if not ok then return -1 end | |
if json["ts"] ~= nil then | |
local ts = lpeg.match(dt.rfc3339, json["ts"]) | |
if not ts then return -1 end | |
local timestamp = dt.time_to_ns(ts) | |
end | |
for name, stats in pairs(json["metrics"]) do | |
if stats.type == "timer" then | |
process_metric(timestamp, name, stats, { | |
"count", "1_min_rate", | |
"min", "mean", "max", "95%", "99%", "99.9%" | |
}) | |
elseif stats.type == "meter" then | |
process_metric(timestamp, name, stats, { | |
"count", "1_min_rate", | |
}) | |
elseif stats.type == "counter" then | |
process_metric(timestamp, name, stats, { | |
"count" | |
}) | |
end | |
end | |
return 0 | |
end | |
function send_to_influx(ns) | |
local message = { | |
Timestamp = ns, | |
Type = "stellar.core.metrics.influx" | |
} | |
local time = math.floor(ns / 1000000) | |
local output = {} | |
for name, stats in pairs(latest_stats) do | |
if prefix then | |
name = prefix .. "." .. name | |
end | |
local point_set = { | |
name = name, | |
columns = {"time"}, | |
points = {{time}} | |
} | |
for stat, value in pairs(stats) do | |
table.insert(point_set.columns, stat) | |
table.insert(point_set.points[1], value) | |
end | |
table.insert(output, point_set) | |
end | |
message.Payload = cjson.encode(output) | |
inject_message(message) | |
end | |
function send_to_atlas(ns) | |
local message = { | |
Timestamp = ns, | |
Type = "stellar.core.metrics.atlas" | |
} | |
local time = math.floor(ns / 1000000) | |
local output = { | |
tags = { | |
prefix = prefix, | |
app = "stellar-core" | |
}, | |
metrics = { | |
} | |
} | |
for name, stats in pairs(latest_stats) do | |
for stat, value in pairs(stats) do | |
local metric_payload = { | |
tags = { | |
name = name, | |
stat = stat, | |
["atlas.dstype"] = "gauge" | |
}, | |
timestamp = time, | |
value = value | |
} | |
table.insert(output.metrics, metric_payload) | |
end | |
end | |
message.Payload = cjson.encode(output) | |
inject_message(message) | |
end | |
function timer_event(ns) | |
send_to_influx(ns) | |
send_to_atlas(ns) | |
end | |
function process_metric(timestamp, name, stats, stat_whitelist) | |
local selected_stats = {} | |
for i, stat in ipairs(stat_whitelist) do | |
selected_stats[stat] = stats[stat] | |
end | |
latest_stats[name] = selected_stats | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment