Use ureq instead of influx_db_client (#5839)
This commit is contained in:
parent
affcb5ec43
commit
df205f8752
|
@ -24,11 +24,6 @@ dependencies = [
|
|||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "antidote"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "approx"
|
||||
version = "0.1.1"
|
||||
|
@ -138,15 +133,6 @@ dependencies = [
|
|||
"libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.9.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.10.1"
|
||||
|
@ -589,20 +575,6 @@ dependencies = [
|
|||
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.6.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation-sys"
|
||||
version = "0.6.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "core_affinity"
|
||||
version = "0.5.9"
|
||||
|
@ -1038,19 +1010,6 @@ name = "fnv"
|
|||
version = "1.0.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types-shared"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "fs_extra"
|
||||
version = "1.1.0"
|
||||
|
@ -1328,24 +1287,6 @@ dependencies = [
|
|||
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "0.10.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "0.12.33"
|
||||
|
@ -1375,16 +1316,6 @@ dependencies = [
|
|||
"want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-native-tls"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "0.1.5"
|
||||
|
@ -1422,18 +1353,6 @@ dependencies = [
|
|||
"regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "influx_db_client"
|
||||
version = "0.3.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"hyper-native-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "iovec"
|
||||
version = "0.1.2"
|
||||
|
@ -1800,23 +1719,6 @@ name = "mirai-annotations"
|
|||
version = "1.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "native-tls"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "net2"
|
||||
version = "0.2.33"
|
||||
|
@ -1931,36 +1833,6 @@ name = "opaque-debug"
|
|||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "openssl"
|
||||
version = "0.10.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl-probe"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
version = "0.9.48"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ordermap"
|
||||
version = "0.3.5"
|
||||
|
@ -2669,11 +2541,6 @@ name = "ryu"
|
|||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "safemem"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "same-file"
|
||||
version = "1.0.5"
|
||||
|
@ -2682,15 +2549,6 @@ dependencies = [
|
|||
"winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "schannel"
|
||||
version = "0.1.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "scoped_threadpool"
|
||||
version = "0.1.9"
|
||||
|
@ -2715,25 +2573,6 @@ dependencies = [
|
|||
"untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "security-framework"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "security-framework-sys"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "0.9.0"
|
||||
|
@ -3555,11 +3394,9 @@ name = "solana-metrics"
|
|||
version = "0.19.0-pre0"
|
||||
dependencies = [
|
||||
"env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"influx_db_client 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serial_test 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serial_test_derive 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"solana-sdk 0.19.0-pre0",
|
||||
|
@ -4844,11 +4681,6 @@ name = "traitobject"
|
|||
version = "0.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "traitobject"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "treeline"
|
||||
version = "0.1.0"
|
||||
|
@ -4999,11 +4831,6 @@ name = "utf8-ranges"
|
|||
version = "1.0.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "vcpkg"
|
||||
version = "0.2.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "vec_map"
|
||||
version = "0.8.1"
|
||||
|
@ -5203,7 +5030,6 @@ dependencies = [
|
|||
"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
|
||||
"checksum aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "36b7aa1ccb7d7ea3f437cf025a2ab1c47cc6c1bc9fc84918ff449def12f5e282"
|
||||
"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
|
||||
"checksum antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34fde25430d87a9388dadbe6e34d7f72a462c8b43ac8d309b42b0a8505d7e2a5"
|
||||
"checksum approx 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08abcc3b4e9339e33a3d0a5ed15d84a687350c05689d825e0f6655eef9e76a94"
|
||||
"checksum ar 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "579681b3fecd1e9d6b5ce6969e05f9feb913f296eddaf595be1166a5ca597bc4"
|
||||
"checksum arc-swap 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "bc4662175ead9cd84451d5c35070517777949a2ed84551764129cedb88384841"
|
||||
|
@ -5220,7 +5046,6 @@ dependencies = [
|
|||
"checksum backtrace 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)" = "88fb679bc9af8fa639198790a77f52d345fe13656c08b43afa9424c206b731c6"
|
||||
"checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b"
|
||||
"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
|
||||
"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643"
|
||||
"checksum bech32 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "58946044516aa9dc922182e0d6e9d124a31aafe6b421614654eb27cf90cec09c"
|
||||
"checksum bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9f04a5e50dc80b3d5d35320889053637d15011aed5e66b66b37ae798c65da6f7"
|
||||
"checksum bindgen 0.47.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df683a55b54b41d5ea8ebfaebb5aa7e6b84e3f3006a78f010dadc9ca88469260"
|
||||
|
@ -5271,8 +5096,6 @@ dependencies = [
|
|||
"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e"
|
||||
"checksum cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5"
|
||||
"checksum cookie 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0e3d6405328b6edb412158b3b7710e2634e23f3614b9bb1c412df7952489a626"
|
||||
"checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d"
|
||||
"checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b"
|
||||
"checksum core_affinity 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6d162c6e463c31dbf78fefa99d042156c1c74d404e299cfe3df2923cb857595b"
|
||||
"checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb"
|
||||
"checksum criterion-stats 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "387df94cb74ada1b33e10ce034bb0d9360cc73edb5063e7d7d4120a40ee1c9d2"
|
||||
|
@ -5321,8 +5144,6 @@ dependencies = [
|
|||
"checksum filetime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "450537dc346f0c4d738dda31e790da1da5d4bd12145aad4da0d03d713cb3794f"
|
||||
"checksum fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33"
|
||||
"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3"
|
||||
"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
|
||||
"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
|
||||
"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674"
|
||||
"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
|
||||
"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
|
||||
|
@ -5354,15 +5175,12 @@ dependencies = [
|
|||
"checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d"
|
||||
"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
|
||||
"checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114"
|
||||
"checksum hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273"
|
||||
"checksum hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)" = "7cb44cbce9d8ee4fb36e4c0ad7b794ac44ebaad924b9c8291a63215bb44c2c8f"
|
||||
"checksum hyper 0.9.18 (registry+https://github.com/rust-lang/crates.io-index)" = "1b9bf64f730d6ee4b0528a5f0a316363da9d8104318731509d4ccc86248f82b3"
|
||||
"checksum hyper-native-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6d375598f442742b0e66208ee12501391f1c7ac0bafb90b4fe53018f81f06068"
|
||||
"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e"
|
||||
"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
|
||||
"checksum indexmap 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4d6d89e0948bf10c08b9ecc8ac5b83f07f857ebe2c0cbe38de15b4e4f510356"
|
||||
"checksum indicatif 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2c60da1c9abea75996b70a931bba6c750730399005b61ccd853cee50ef3d0d0c"
|
||||
"checksum influx_db_client 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1af8df5705f0b30bcb504bafc9396d995a555c4d6bd6f9097729ad47b8a49a38"
|
||||
"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08"
|
||||
"checksum itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0d47946d458e94a1b7bcabbf6521ea7c037062c81f534615abcad76e84d4970d"
|
||||
"checksum itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358"
|
||||
|
@ -5404,7 +5222,6 @@ dependencies = [
|
|||
"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125"
|
||||
"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
|
||||
"checksum mirai-annotations 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d15444fc4fbe11acaf6683f49e1d4be94bfd6d96799673e9b8417dd7ba9b6ea9"
|
||||
"checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e"
|
||||
"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
|
||||
"checksum new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f40f005c60db6e03bae699e414c58bf9aa7ea02a2d0b9bfbcf19286cc4c82b30"
|
||||
"checksum nibble_vec 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c8d77f3db4bce033f4d04db08079b2ef1c3d02b44e86f25d08886fafa7756ffa"
|
||||
|
@ -5419,9 +5236,6 @@ dependencies = [
|
|||
"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273"
|
||||
"checksum number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dbf9993e59c894e3c08aa1c2712914e9e6bf1fcbfc6bef283e2183df345a4fee"
|
||||
"checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409"
|
||||
"checksum openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)" = "8152bb5a9b5b721538462336e3bef9a539f892715e5037fda0f984577311af15"
|
||||
"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
|
||||
"checksum openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)" = "b5ba300217253bcc5dc68bed23d782affa45000193866e025329aa8a7a9f05b8"
|
||||
"checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063"
|
||||
"checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37"
|
||||
"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13"
|
||||
|
@ -5502,15 +5316,11 @@ dependencies = [
|
|||
"checksum rustls 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f271e3552cd835fa28c541c34a7e8fdd8cdff09d77fe4eb8f6c42e87a11b096e"
|
||||
"checksum rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3dd93264e10c577503e926bd1430193eeb5d21b059148910082245309b424fae"
|
||||
"checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997"
|
||||
"checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9"
|
||||
"checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421"
|
||||
"checksum schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f6abf258d99c3c1c5c2131d99d064e94b7b3dd5f416483057f308fea253339"
|
||||
"checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8"
|
||||
"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27"
|
||||
"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
|
||||
"checksum sct 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f5adf8fbd58e1b1b52699dc8bed2630faecb6d8c7bee77d009d6bbe4af569b9"
|
||||
"checksum security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eee63d0f4a9ec776eeb30e220f0bc1e092c3ad744b2a379e3993070364d3adc2"
|
||||
"checksum security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9636f8989cbf61385ae4824b98c1aaa54c994d7d8b41f11c601ed799f0549a56"
|
||||
"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
|
||||
"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
||||
"checksum serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "fec2851eb56d010dc9a21b89ca53ee75e6528bab60c11e89d38390904982da9f"
|
||||
|
@ -5616,7 +5426,6 @@ dependencies = [
|
|||
"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f"
|
||||
"checksum toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b8c96d7873fa7ef8bdeb3a9cda3ac48389b4154f32b9803b4bc26220b677b039"
|
||||
"checksum traitobject 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "07eaeb7689bb7fca7ce15628319635758eda769fed481ecfe6686ddef2600616"
|
||||
"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079"
|
||||
"checksum treeline 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41"
|
||||
"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382"
|
||||
"checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887"
|
||||
|
@ -5640,7 +5449,6 @@ dependencies = [
|
|||
"checksum url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61"
|
||||
"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
|
||||
"checksum utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9d50aa7650df78abf942826607c62468ce18d9019673d4a2ebe1865dbb96ffde"
|
||||
"checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95"
|
||||
"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
|
||||
"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
|
||||
"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
|
||||
|
|
|
@ -1332,17 +1332,13 @@ fn send_signals(
|
|||
for (signal, slots) in completed_slots_senders.iter().zip(slots.into_iter()) {
|
||||
let res = signal.try_send(slots);
|
||||
if let Err(TrySendError::Full(_)) = res {
|
||||
solana_metrics::submit(
|
||||
solana_metrics::influxdb::Point::new("blocktree_error")
|
||||
.add_field(
|
||||
"error",
|
||||
solana_metrics::influxdb::Value::String(
|
||||
"Unable to send newly completed slot because channel is full"
|
||||
.to_string(),
|
||||
),
|
||||
)
|
||||
.to_owned(),
|
||||
log::Level::Error,
|
||||
datapoint_error!(
|
||||
"blocktree_error",
|
||||
(
|
||||
"error",
|
||||
"Unable to send newly completed slot because channel is full".to_string(),
|
||||
String
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@ edition = "2018"
|
|||
|
||||
[dependencies]
|
||||
env_logger = "0.6.2"
|
||||
influx_db_client = "0.3.6"
|
||||
lazy_static = "1.4.0"
|
||||
log = "0.4.8"
|
||||
solana-sdk = { path = "../sdk", version = "0.19.0-pre0" }
|
||||
|
@ -19,7 +18,6 @@ ureq = "0.11.0"
|
|||
|
||||
[dev-dependencies]
|
||||
rand = "0.6.5"
|
||||
serde_json = "1.0"
|
||||
serial_test = "0.2.0"
|
||||
serial_test_derive = "0.2.0"
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use crate::metrics::{submit_counter, CounterPoint};
|
||||
use crate::metrics::submit_counter;
|
||||
use log::*;
|
||||
use solana_sdk::timing;
|
||||
use std::env;
|
||||
|
@ -19,6 +19,24 @@ pub struct Counter {
|
|||
pub metricsrate: AtomicU64,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct CounterPoint {
|
||||
pub name: &'static str,
|
||||
pub count: i64,
|
||||
pub timestamp: u64,
|
||||
}
|
||||
|
||||
impl CounterPoint {
|
||||
#[cfg(test)]
|
||||
pub fn new(name: &'static str) -> Self {
|
||||
CounterPoint {
|
||||
name,
|
||||
count: 0,
|
||||
timestamp: 0,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! create_counter {
|
||||
($name:expr, $lograte:expr, $metricsrate:expr) => {
|
||||
|
|
|
@ -0,0 +1,176 @@
|
|||
#[derive(Clone, Debug)]
|
||||
pub struct DataPoint {
|
||||
pub name: &'static str,
|
||||
pub timestamp: u64,
|
||||
pub fields: Vec<(&'static str, String)>,
|
||||
}
|
||||
|
||||
impl DataPoint {
|
||||
pub fn new(name: &'static str) -> Self {
|
||||
DataPoint {
|
||||
name,
|
||||
timestamp: solana_sdk::timing::timestamp(),
|
||||
fields: vec![],
|
||||
}
|
||||
}
|
||||
|
||||
pub fn add_field_str(&mut self, name: &'static str, value: &str) -> &mut Self {
|
||||
self.fields
|
||||
.push((name, format!("\"{}\"", value.replace("\"", "\\\""))));
|
||||
self
|
||||
}
|
||||
|
||||
pub fn add_field_bool(&mut self, name: &'static str, value: bool) -> &mut Self {
|
||||
self.fields.push((name, value.to_string()));
|
||||
self
|
||||
}
|
||||
|
||||
pub fn add_field_i64(&mut self, name: &'static str, value: i64) -> &mut Self {
|
||||
self.fields.push((name, value.to_string() + "i"));
|
||||
self
|
||||
}
|
||||
|
||||
pub fn add_field_f64(&mut self, name: &'static str, value: f64) -> &mut Self {
|
||||
self.fields.push((name, value.to_string()));
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! datapoint {
|
||||
(@field $point:ident $name:expr, $string:expr, String) => {
|
||||
$point.add_field_str($name, &$string);
|
||||
};
|
||||
(@field $point:ident $name:expr, $value:expr, i64) => {
|
||||
$point.add_field_i64($name, $value as i64);
|
||||
};
|
||||
(@field $point:ident $name:expr, $value:expr, f64) => {
|
||||
$point.add_field_f64($name, $value as f64);
|
||||
};
|
||||
(@field $point:ident $name:expr, $value:expr, bool) => {
|
||||
$point.add_field_bool($name, $value as bool);
|
||||
};
|
||||
|
||||
(@fields $point:ident) => {};
|
||||
(@fields $point:ident ($name:expr, $value:expr, $type:ident) , $($rest:tt)*) => {
|
||||
$crate::datapoint!(@field $point $name, $value, $type);
|
||||
$crate::datapoint!(@fields $point $($rest)*);
|
||||
};
|
||||
(@fields $point:ident ($name:expr, $value:expr, $type:ident)) => {
|
||||
$crate::datapoint!(@field $point $name, $value, $type);
|
||||
};
|
||||
|
||||
(@point $name:expr, $($fields:tt)+) => {
|
||||
{
|
||||
let mut point = $crate::datapoint::DataPoint::new(&$name);
|
||||
$crate::datapoint!(@fields point $($fields)+);
|
||||
point
|
||||
}
|
||||
};
|
||||
(@point $name:expr) => {
|
||||
$crate::datapoint::DataPoint::new(&$name)
|
||||
};
|
||||
($name:expr, $($fields:tt)+) => {
|
||||
if log::log_enabled!(log::Level::Debug) {
|
||||
$crate::submit($crate::datapoint!(@point $name, $($fields)+), log::Level::Debug);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! datapoint_error {
|
||||
($name:expr) => {
|
||||
if log::log_enabled!(log::Level::Error) {
|
||||
$crate::submit($crate::datapoint!(@point $name), log::Level::Error);
|
||||
}
|
||||
};
|
||||
($name:expr, $($fields:tt)+) => {
|
||||
if log::log_enabled!(log::Level::Error) {
|
||||
$crate::submit($crate::datapoint!(@point $name, $($fields)+), log::Level::Error);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! datapoint_warn {
|
||||
($name:expr) => {
|
||||
if log::log_enabled!(log::Level::Warn) {
|
||||
$crate::submit($crate::datapoint!(@point $name), log::Level::Warn);
|
||||
}
|
||||
};
|
||||
($name:expr, $($fields:tt)+) => {
|
||||
if log::log_enabled!(log::Level::Warn) {
|
||||
$crate::submit($crate::datapoint!(@point $name, $($fields)+), log::Level::Warn);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! datapoint_info {
|
||||
($name:expr) => {
|
||||
if log::log_enabled!(log::Level::Info) {
|
||||
$crate::submit($crate::datapoint!(@point $name), log::Level::Info);
|
||||
}
|
||||
};
|
||||
($name:expr, $($fields:tt)+) => {
|
||||
if log::log_enabled!(log::Level::Info) {
|
||||
$crate::submit($crate::datapoint!(@point $name, $($fields)+), log::Level::Info);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! datapoint_debug {
|
||||
($name:expr) => {
|
||||
if log::log_enabled!(log::Level::Debug) {
|
||||
$crate::submit($crate::datapoint!(@point $name), log::Level::Debug);
|
||||
}
|
||||
};
|
||||
($name:expr, $($fields:tt)+) => {
|
||||
if log::log_enabled!(log::Level::Debug) {
|
||||
$crate::submit($crate::datapoint!(@point $name, $($fields)+), log::Level::Debug);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
#[test]
|
||||
fn test_datapoint() {
|
||||
datapoint!("name", ("field name", "test".to_string(), String));
|
||||
datapoint!("name", ("field name", 12.34_f64, f64));
|
||||
datapoint!("name", ("field name", true, bool));
|
||||
datapoint!("name", ("field name", 1, i64));
|
||||
datapoint!("name", ("field name", 1, i64),);
|
||||
datapoint!("name", ("field1 name", 2, i64), ("field2 name", 2, i64));
|
||||
datapoint!("name", ("field1 name", 2, i64), ("field2 name", 2, i64),);
|
||||
datapoint!(
|
||||
"name",
|
||||
("field1 name", 2, i64),
|
||||
("field2 name", 2, i64),
|
||||
("field3 name", 3, i64)
|
||||
);
|
||||
datapoint!(
|
||||
"name",
|
||||
("field1 name", 2, i64),
|
||||
("field2 name", 2, i64),
|
||||
("field3 name", 3, i64),
|
||||
);
|
||||
|
||||
let point = datapoint!(
|
||||
@point "name",
|
||||
("i64", 1, i64),
|
||||
("String", "string space string".to_string(), String),
|
||||
("f64", 12.34_f64, f64),
|
||||
("bool", true, bool)
|
||||
);
|
||||
assert_eq!(point.name, "name");
|
||||
assert_eq!(point.fields[0], ("i64", "1i".to_string()));;
|
||||
assert_eq!(
|
||||
point.fields[1],
|
||||
("String", "\"string space string\"".to_string())
|
||||
);
|
||||
assert_eq!(point.fields[2], ("f64", "12.34".to_string()));
|
||||
assert_eq!(point.fields[3], ("bool", "true".to_string()));
|
||||
}
|
||||
}
|
|
@ -1,7 +1,4 @@
|
|||
#[macro_use]
|
||||
pub mod counter;
|
||||
|
||||
pub mod datapoint;
|
||||
mod metrics;
|
||||
|
||||
pub use crate::metrics::{flush, query, set_host_id, set_panic_hook, submit};
|
||||
pub use influx_db_client as influxdb;
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
//! The `metrics` module enables sending measurements to an `InfluxDB` instance
|
||||
|
||||
use influx_db_client as influxdb;
|
||||
use influx_db_client::Point;
|
||||
use crate::{counter::CounterPoint, datapoint::DataPoint};
|
||||
use lazy_static::lazy_static;
|
||||
use log::*;
|
||||
use solana_sdk::hash::hash;
|
||||
use solana_sdk::timing;
|
||||
use std::collections::HashMap;
|
||||
use std::convert::Into;
|
||||
use std::sync::mpsc::{channel, Receiver, RecvTimeoutError, Sender};
|
||||
|
@ -15,136 +13,13 @@ use std::time::{Duration, Instant};
|
|||
use std::{cmp, env};
|
||||
use sys_info::hostname;
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! datapoint {
|
||||
(@field $point:ident $name:expr, $string:expr, String) => {
|
||||
$point.add_field(
|
||||
$name,
|
||||
$crate::influxdb::Value::String($string));
|
||||
};
|
||||
(@field $point:ident $name:expr, $value:expr, i64) => {
|
||||
$point.add_field(
|
||||
$name,
|
||||
$crate::influxdb::Value::Integer($value as i64));
|
||||
};
|
||||
(@field $point:ident $name:expr, $value:expr, f64) => {
|
||||
$point.add_field(
|
||||
$name,
|
||||
$crate::influxdb::Value::Float($value as f64));
|
||||
};
|
||||
(@field $point:ident $name:expr, $value:expr, bool) => {
|
||||
$point.add_field(
|
||||
$name,
|
||||
$crate::influxdb::Value::Boolean($value as bool));
|
||||
};
|
||||
|
||||
(@fields $point:ident) => {};
|
||||
(@fields $point:ident ($name:expr, $value:expr, $type:ident) , $($rest:tt)*) => {
|
||||
$crate::datapoint!(@field $point $name, $value, $type);
|
||||
$crate::datapoint!(@fields $point $($rest)*);
|
||||
};
|
||||
(@fields $point:ident ($name:expr, $value:expr, $type:ident)) => {
|
||||
$crate::datapoint!(@field $point $name, $value, $type);
|
||||
};
|
||||
|
||||
(@point $name:expr, $($fields:tt)+) => {
|
||||
{
|
||||
let mut point = $crate::influxdb::Point::new(&$name);
|
||||
$crate::datapoint!(@fields point $($fields)+);
|
||||
point
|
||||
}
|
||||
};
|
||||
(@point $name:expr) => {
|
||||
$crate::influxdb::Point::new(&$name)
|
||||
};
|
||||
($name:expr, $($fields:tt)+) => {
|
||||
if log_enabled!(log::Level::Debug) {
|
||||
$crate::submit($crate::datapoint!(@point $name, $($fields)+), log::Level::Debug);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! datapoint_error {
|
||||
($name:expr) => {
|
||||
if log_enabled!(log::Level::Error) {
|
||||
$crate::submit($crate::datapoint!(@point $name), log::Level::Error);
|
||||
}
|
||||
};
|
||||
($name:expr, $($fields:tt)+) => {
|
||||
if log_enabled!(log::Level::Error) {
|
||||
$crate::submit($crate::datapoint!(@point $name, $($fields)+), log::Level::Error);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! datapoint_warn {
|
||||
($name:expr) => {
|
||||
if log_enabled!(log::Level::Warn) {
|
||||
$crate::submit($crate::datapoint!(@point $name), log::Level::Warn);
|
||||
}
|
||||
};
|
||||
($name:expr, $($fields:tt)+) => {
|
||||
if log_enabled!(log::Level::Warn) {
|
||||
$crate::submit($crate::datapoint!(@point $name, $($fields)+), log::Level::Warn);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! datapoint_info {
|
||||
($name:expr) => {
|
||||
if log_enabled!(log::Level::Info) {
|
||||
$crate::submit($crate::datapoint!(@point $name), log::Level::Info);
|
||||
}
|
||||
};
|
||||
($name:expr, $($fields:tt)+) => {
|
||||
if log_enabled!(log::Level::Info) {
|
||||
$crate::submit($crate::datapoint!(@point $name, $($fields)+), log::Level::Info);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! datapoint_debug {
|
||||
($name:expr) => {
|
||||
if log_enabled!(log::Level::Debug) {
|
||||
$crate::submit($crate::datapoint!(@point $name), log::Level::Debug);
|
||||
}
|
||||
};
|
||||
($name:expr, $($fields:tt)+) => {
|
||||
if log_enabled!(log::Level::Debug) {
|
||||
$crate::submit($crate::datapoint!(@point $name, $($fields)+), log::Level::Debug);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
type CounterMap = HashMap<(&'static str, u64), CounterPoint>;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct CounterPoint {
|
||||
pub name: &'static str,
|
||||
pub count: i64,
|
||||
pub timestamp: u64,
|
||||
}
|
||||
|
||||
impl CounterPoint {
|
||||
#[cfg(test)]
|
||||
fn new(name: &'static str) -> Self {
|
||||
CounterPoint {
|
||||
name,
|
||||
count: 0,
|
||||
timestamp: 0,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Into<influxdb::Point> for CounterPoint {
|
||||
fn into(self) -> influxdb::Point {
|
||||
let mut point = influxdb::Point::new(self.name);
|
||||
point.add_field("count", influxdb::Value::Integer(self.count));
|
||||
point.add_timestamp(self.timestamp as i64);
|
||||
impl Into<DataPoint> for CounterPoint {
|
||||
fn into(self) -> DataPoint {
|
||||
let mut point = DataPoint::new(self.name);
|
||||
point.timestamp = self.timestamp;
|
||||
point.add_field_i64("count", self.count);
|
||||
point
|
||||
}
|
||||
}
|
||||
|
@ -152,7 +27,7 @@ impl Into<influxdb::Point> for CounterPoint {
|
|||
#[derive(Debug)]
|
||||
enum MetricsCommand {
|
||||
Flush(Arc<Barrier>),
|
||||
Submit(influxdb::Point, log::Level),
|
||||
Submit(DataPoint, log::Level),
|
||||
SubmitCounter(CounterPoint, log::Level, u64),
|
||||
}
|
||||
|
||||
|
@ -163,21 +38,21 @@ struct MetricsAgent {
|
|||
trait MetricsWriter {
|
||||
// Write the points and empty the vector. Called on the internal
|
||||
// MetricsAgent worker thread.
|
||||
fn write(&self, points: Vec<influxdb::Point>);
|
||||
fn write(&self, points: Vec<DataPoint>);
|
||||
}
|
||||
|
||||
struct InfluxDbMetricsWriter {
|
||||
client: Option<influxdb::Client>,
|
||||
write_url: Option<String>,
|
||||
}
|
||||
|
||||
impl InfluxDbMetricsWriter {
|
||||
fn new() -> Self {
|
||||
Self {
|
||||
client: Self::build_client().ok(),
|
||||
write_url: Self::build_write_url().ok(),
|
||||
}
|
||||
}
|
||||
|
||||
fn build_client() -> Result<influxdb::Client, String> {
|
||||
fn build_write_url() -> Result<String, String> {
|
||||
let config = get_metrics_config().map_err(|err| {
|
||||
info!("metrics disabled: {}", err);
|
||||
err
|
||||
|
@ -187,28 +62,51 @@ impl InfluxDbMetricsWriter {
|
|||
"metrics configuration: host={} db={} username={}",
|
||||
config.host, config.db, config.username
|
||||
);
|
||||
let mut client = influxdb::Client::new_with_option(config.host, config.db, None)
|
||||
.set_authentication(config.username, config.password);
|
||||
|
||||
client.set_read_timeout(1 /*second*/);
|
||||
client.set_write_timeout(1 /*second*/);
|
||||
let write_url = format!(
|
||||
"{}/write?db={}&u={}&p={}&precision=ms",
|
||||
&config.host, &config.db, &config.username, &config.password
|
||||
);
|
||||
|
||||
debug!("InfluxDB version: {:?}", client.get_version());
|
||||
Ok(client)
|
||||
Ok(write_url)
|
||||
}
|
||||
}
|
||||
|
||||
impl MetricsWriter for InfluxDbMetricsWriter {
|
||||
fn write(&self, points: Vec<influxdb::Point>) {
|
||||
if let Some(ref client) = self.client {
|
||||
debug!("submitting {} points", points.len());
|
||||
if let Err(err) = client.write_points(
|
||||
influxdb::Points { point: points },
|
||||
Some(influxdb::Precision::Milliseconds),
|
||||
None,
|
||||
) {
|
||||
debug!("InfluxDbMetricsWriter write error: {:?}", err);
|
||||
fn write(&self, points: Vec<DataPoint>) {
|
||||
if let Some(ref write_url) = self.write_url {
|
||||
info!("submitting {} points", points.len());
|
||||
|
||||
let host_id = HOST_ID.read().unwrap();
|
||||
|
||||
let mut line = String::new();
|
||||
for point in points {
|
||||
line.push_str(&format!("{},host_id={}", &point.name, &host_id));
|
||||
|
||||
let mut first = true;
|
||||
for (name, value) in point.fields {
|
||||
line.push_str(&format!(
|
||||
"{}{}={}",
|
||||
if first { ' ' } else { ',' },
|
||||
name,
|
||||
value
|
||||
));
|
||||
first = false;
|
||||
}
|
||||
|
||||
line.push_str(&format!(" {}\n", &point.timestamp));
|
||||
}
|
||||
|
||||
let response = ureq::post(write_url.as_str())
|
||||
.timeout_connect(2_000)
|
||||
.timeout_read(2_000)
|
||||
.timeout_write(4_000)
|
||||
.send_string(&line);
|
||||
info!(
|
||||
"submit response: {} {}",
|
||||
response.status(),
|
||||
response.status_text()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -245,8 +143,7 @@ impl MetricsAgent {
|
|||
}
|
||||
|
||||
fn write(
|
||||
host_id: &influxdb::Value,
|
||||
mut points: Vec<Point>,
|
||||
mut points: Vec<DataPoint>,
|
||||
last_write_time: Instant,
|
||||
max_points: usize,
|
||||
writer: &Arc<dyn MetricsWriter + Send + Sync>,
|
||||
|
@ -268,33 +165,19 @@ impl MetricsAgent {
|
|||
}
|
||||
let points_written = cmp::min(num_points, max_points - 1);
|
||||
points.truncate(points_written);
|
||||
|
||||
let extra = influxdb::Point::new("metrics")
|
||||
.add_timestamp(timing::timestamp() as i64)
|
||||
.add_tag("host_id", host_id.clone())
|
||||
.add_field(
|
||||
"points_written",
|
||||
influxdb::Value::Integer(points_written as i64),
|
||||
)
|
||||
.add_field("num_points", influxdb::Value::Integer(num_points as i64))
|
||||
.add_field(
|
||||
"points_lost",
|
||||
influxdb::Value::Integer((num_points - points_written) as i64),
|
||||
)
|
||||
.add_field(
|
||||
"secs_since_last_write",
|
||||
influxdb::Value::Integer(now.duration_since(last_write_time).as_secs() as i64),
|
||||
)
|
||||
.to_owned();
|
||||
|
||||
for point in &mut points {
|
||||
// TODO: rework influx_db_client crate API to avoid this unnecessary cloning
|
||||
point.add_tag("host_id", host_id.clone());
|
||||
}
|
||||
points.push(
|
||||
DataPoint::new("metrics")
|
||||
.add_field_i64("points_written", points_written as i64)
|
||||
.add_field_i64("num_points", num_points as i64)
|
||||
.add_field_i64("points_lost", (num_points - points_written) as i64)
|
||||
.add_field_i64(
|
||||
"secs_since_last_write",
|
||||
now.duration_since(last_write_time).as_secs() as i64,
|
||||
)
|
||||
.to_owned(),
|
||||
);
|
||||
|
||||
writer.write(points);
|
||||
writer.write([extra].to_vec());
|
||||
|
||||
points_written
|
||||
}
|
||||
|
||||
|
@ -306,7 +189,7 @@ impl MetricsAgent {
|
|||
) {
|
||||
trace!("run: enter");
|
||||
let mut last_write_time = Instant::now();
|
||||
let mut points_map = HashMap::<log::Level, (Instant, CounterMap, Vec<Point>)>::new();
|
||||
let mut points_map = HashMap::<log::Level, (Instant, CounterMap, Vec<DataPoint>)>::new();
|
||||
let max_points = write_frequency_secs.as_secs() as usize * max_points_per_sec;
|
||||
|
||||
loop {
|
||||
|
@ -359,7 +242,6 @@ impl MetricsAgent {
|
|||
let mut num_max_writes = max_points;
|
||||
|
||||
let now = Instant::now();
|
||||
let host_id = HOST_ID.read().unwrap();
|
||||
if now.duration_since(last_write_time) >= write_frequency_secs {
|
||||
vec![
|
||||
Level::Error,
|
||||
|
@ -374,7 +256,6 @@ impl MetricsAgent {
|
|||
let counter_points = counters.into_iter().map(|(_, v)| v.into());
|
||||
let points: Vec<_> = points.into_iter().chain(counter_points).collect();
|
||||
let num_written = Self::write(
|
||||
&host_id,
|
||||
points,
|
||||
last_time,
|
||||
num_max_writes,
|
||||
|
@ -394,11 +275,8 @@ impl MetricsAgent {
|
|||
trace!("run: exit");
|
||||
}
|
||||
|
||||
pub fn submit(&self, mut point: influxdb::Point, level: log::Level) {
|
||||
if point.timestamp.is_none() {
|
||||
point.add_timestamp(timing::timestamp() as i64);
|
||||
}
|
||||
debug!("Submitting point: {:?}", point);
|
||||
pub fn submit(&self, point: DataPoint, level: log::Level) {
|
||||
debug!("Submitting data point: {:?}", point);
|
||||
self.sender
|
||||
.send(MetricsCommand::Submit(point, level))
|
||||
.unwrap();
|
||||
|
@ -441,23 +319,23 @@ fn get_singleton_agent() -> Arc<Mutex<MetricsAgent>> {
|
|||
}
|
||||
|
||||
lazy_static! {
|
||||
static ref HOST_ID: Arc<RwLock<influx_db_client::Value>> = {
|
||||
Arc::new(RwLock::new(influx_db_client::Value::String({
|
||||
static ref HOST_ID: Arc<RwLock<String>> = {
|
||||
Arc::new(RwLock::new({
|
||||
let hostname: String = hostname().unwrap_or_else(|_| "".to_string());
|
||||
format!("{}", hash(hostname.as_bytes())).to_string()
|
||||
})))
|
||||
}))
|
||||
};
|
||||
}
|
||||
|
||||
pub fn set_host_id(host_id: String) {
|
||||
let mut rw = HOST_ID.write().unwrap();
|
||||
info!("host id: {}", host_id);
|
||||
std::mem::replace(&mut *rw, influx_db_client::Value::String(host_id));
|
||||
std::mem::replace(&mut *rw, host_id);
|
||||
}
|
||||
|
||||
/// Submits a new point from any thread. Note that points are internally queued
|
||||
/// and transmitted periodically in batches.
|
||||
pub fn submit(point: influxdb::Point, level: log::Level) {
|
||||
pub fn submit(point: DataPoint, level: log::Level) {
|
||||
let agent_mutex = get_singleton_agent();
|
||||
let agent = agent_mutex.lock().unwrap();
|
||||
agent.submit(point, level);
|
||||
|
@ -465,7 +343,7 @@ pub fn submit(point: influxdb::Point, level: log::Level) {
|
|||
|
||||
/// Submits a new counter or updates an existing counter from any thread. Note that points are
|
||||
/// internally queued and transmitted periodically in batches.
|
||||
pub fn submit_counter(point: CounterPoint, level: log::Level, bucket: u64) {
|
||||
pub(crate) fn submit_counter(point: CounterPoint, level: log::Level, bucket: u64) {
|
||||
let agent_mutex = get_singleton_agent();
|
||||
let agent = agent_mutex.lock().unwrap();
|
||||
agent.submit_counter(point, level, bucket);
|
||||
|
@ -518,12 +396,12 @@ fn get_metrics_config() -> Result<MetricsConfig, String> {
|
|||
|
||||
pub fn query(q: &str) -> Result<String, String> {
|
||||
let config = get_metrics_config().map_err(|err| err.to_string())?;
|
||||
let query = format!(
|
||||
let query_url = format!(
|
||||
"{}/query?u={}&p={}&q={}",
|
||||
&config.host, &config.username, &config.password, &q
|
||||
);
|
||||
|
||||
let response = ureq::get(query.as_str())
|
||||
let response = ureq::get(query_url.as_str())
|
||||
.call()
|
||||
.into_string()
|
||||
.map_err(|err| err.to_string())?;
|
||||
|
@ -547,32 +425,23 @@ pub fn set_panic_hook(program: &'static str) {
|
|||
let default_hook = panic::take_hook();
|
||||
panic::set_hook(Box::new(move |ono| {
|
||||
default_hook(ono);
|
||||
let location = match ono.location() {
|
||||
Some(location) => location.to_string(),
|
||||
None => "?".to_string(),
|
||||
};
|
||||
submit(
|
||||
influxdb::Point::new("panic")
|
||||
.add_tag("program", influxdb::Value::String(program.to_string()))
|
||||
.add_tag(
|
||||
"thread",
|
||||
influxdb::Value::String(
|
||||
thread::current().name().unwrap_or("?").to_string(),
|
||||
),
|
||||
)
|
||||
DataPoint::new("panic")
|
||||
.add_field_str("program", program)
|
||||
.add_field_str("thread", thread::current().name().unwrap_or("?"))
|
||||
// The 'one' field exists to give Kapacitor Alerts a numerical value
|
||||
// to filter on
|
||||
.add_field("one", influxdb::Value::Integer(1))
|
||||
.add_field(
|
||||
.add_field_i64("one", 1)
|
||||
.add_field_str(
|
||||
"message",
|
||||
influxdb::Value::String(
|
||||
// TODO: use ono.message() when it becomes stable
|
||||
ono.to_string(),
|
||||
),
|
||||
)
|
||||
.add_field(
|
||||
"location",
|
||||
influxdb::Value::String(match ono.location() {
|
||||
Some(location) => location.to_string(),
|
||||
None => "?".to_string(),
|
||||
}),
|
||||
// TODO: use ono.message() when it becomes stable
|
||||
&ono.to_string(),
|
||||
)
|
||||
.add_field_str("location", &location)
|
||||
.to_owned(),
|
||||
Level::Error,
|
||||
);
|
||||
|
@ -586,10 +455,9 @@ pub fn set_panic_hook(program: &'static str) {
|
|||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::*;
|
||||
use serde_json;
|
||||
|
||||
struct MockMetricsWriter {
|
||||
points_written: Arc<Mutex<Vec<influxdb::Point>>>,
|
||||
points_written: Arc<Mutex<Vec<DataPoint>>>,
|
||||
}
|
||||
impl MockMetricsWriter {
|
||||
fn new() -> Self {
|
||||
|
@ -604,7 +472,7 @@ mod test {
|
|||
}
|
||||
|
||||
impl MetricsWriter for MockMetricsWriter {
|
||||
fn write(&self, points: Vec<influxdb::Point>) {
|
||||
fn write(&self, points: Vec<DataPoint>) {
|
||||
assert!(!points.is_empty());
|
||||
|
||||
let new_points = points.len();
|
||||
|
@ -616,7 +484,7 @@ mod test {
|
|||
info!(
|
||||
"Writing {} points ({} total)",
|
||||
new_points,
|
||||
self.points_written()
|
||||
self.points_written(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -628,7 +496,9 @@ mod test {
|
|||
|
||||
for i in 0..42 {
|
||||
agent.submit(
|
||||
influxdb::Point::new(&format!("measurement {}", i)),
|
||||
DataPoint::new("measurement")
|
||||
.add_field_i64("i", i)
|
||||
.to_owned(),
|
||||
Level::Info,
|
||||
);
|
||||
}
|
||||
|
@ -643,8 +513,8 @@ mod test {
|
|||
let agent = MetricsAgent::new(writer.clone(), Duration::from_secs(10), 1000);
|
||||
|
||||
for i in 0..10 {
|
||||
agent.submit_counter(CounterPoint::new("counter - 1"), Level::Info, i);
|
||||
agent.submit_counter(CounterPoint::new("counter - 2"), Level::Info, i);
|
||||
agent.submit_counter(CounterPoint::new("counter 1"), Level::Info, i);
|
||||
agent.submit_counter(CounterPoint::new("counter 2"), Level::Info, i);
|
||||
}
|
||||
|
||||
agent.flush();
|
||||
|
@ -672,12 +542,7 @@ mod test {
|
|||
assert_eq!(writer.points_written(), 1);
|
||||
|
||||
let submitted_point = writer.points_written.lock().unwrap()[0].clone();
|
||||
let submitted_count = submitted_point.fields.get("count").unwrap();
|
||||
let expected_count = &influxdb::Value::Integer(100);
|
||||
assert_eq!(
|
||||
serde_json::to_string(submitted_count).unwrap(),
|
||||
serde_json::to_string(expected_count).unwrap()
|
||||
);
|
||||
assert_eq!(submitted_point.fields[0], ("count", "100i".to_string()));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -686,8 +551,8 @@ mod test {
|
|||
let agent = MetricsAgent::new(writer.clone(), Duration::from_secs(10), 1000);
|
||||
|
||||
for i in 0..50 {
|
||||
agent.submit_counter(CounterPoint::new("counter - 1"), Level::Info, i / 10);
|
||||
agent.submit_counter(CounterPoint::new("counter - 2"), Level::Info, i / 10);
|
||||
agent.submit_counter(CounterPoint::new("counter 1"), Level::Info, i / 10);
|
||||
agent.submit_counter(CounterPoint::new("counter 2"), Level::Info, i / 10);
|
||||
}
|
||||
|
||||
agent.flush();
|
||||
|
@ -699,7 +564,7 @@ mod test {
|
|||
let writer = Arc::new(MockMetricsWriter::new());
|
||||
let agent = MetricsAgent::new(writer.clone(), Duration::from_secs(1), 1000);
|
||||
|
||||
agent.submit(influxdb::Point::new("point 1"), Level::Info);
|
||||
agent.submit(DataPoint::new("point 1"), Level::Info);
|
||||
thread::sleep(Duration::from_secs(2));
|
||||
assert_eq!(writer.points_written(), 2);
|
||||
}
|
||||
|
@ -711,7 +576,9 @@ mod test {
|
|||
|
||||
for i in 0..102 {
|
||||
agent.submit(
|
||||
influxdb::Point::new(&format!("measurement {}", i)),
|
||||
DataPoint::new("measurement")
|
||||
.add_field_i64("i", i)
|
||||
.to_owned(),
|
||||
Level::Info,
|
||||
);
|
||||
}
|
||||
|
@ -736,7 +603,8 @@ mod test {
|
|||
//
|
||||
let mut threads = Vec::new();
|
||||
for i in 0..42 {
|
||||
let point = influxdb::Point::new(&format!("measurement {}", i));
|
||||
let mut point = DataPoint::new("measurement");
|
||||
point.add_field_i64("i", i);
|
||||
let agent = Arc::clone(&agent);
|
||||
threads.push(thread::spawn(move || {
|
||||
agent.lock().unwrap().submit(point, Level::Info);
|
||||
|
@ -756,7 +624,7 @@ mod test {
|
|||
let writer = Arc::new(MockMetricsWriter::new());
|
||||
{
|
||||
let agent = MetricsAgent::new(writer.clone(), Duration::from_secs(9999999), 1000);
|
||||
agent.submit(influxdb::Point::new("point 1"), Level::Info);
|
||||
agent.submit(DataPoint::new("point 1"), Level::Info);
|
||||
}
|
||||
|
||||
assert_eq!(writer.points_written(), 1);
|
||||
|
@ -766,80 +634,11 @@ mod test {
|
|||
fn test_live_submit() {
|
||||
let agent = MetricsAgent::default();
|
||||
|
||||
let point = influxdb::Point::new("live_submit_test")
|
||||
.add_tag("test", influxdb::Value::Boolean(true))
|
||||
.add_field(
|
||||
"random_bool",
|
||||
influxdb::Value::Boolean(rand::random::<u8>() < 128),
|
||||
)
|
||||
.add_field(
|
||||
"random_int",
|
||||
influxdb::Value::Integer(rand::random::<u8>() as i64),
|
||||
)
|
||||
let point = DataPoint::new("live_submit_test")
|
||||
.add_field_bool("true", true)
|
||||
.add_field_bool("random_bool", rand::random::<u8>() < 128)
|
||||
.add_field_i64("random_int", rand::random::<u8>() as i64)
|
||||
.to_owned();
|
||||
agent.submit(point, Level::Info);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_datapoint() {
|
||||
macro_rules! matches {
|
||||
($e:expr, $p:pat) => {
|
||||
match $e {
|
||||
$p => true,
|
||||
_ => false,
|
||||
}
|
||||
};
|
||||
}
|
||||
datapoint!("name", ("field name", "test".to_string(), String));
|
||||
datapoint!("name", ("field name", 12.34_f64, f64));
|
||||
datapoint!("name", ("field name", true, bool));
|
||||
datapoint!("name", ("field name", 1, i64));
|
||||
datapoint!("name", ("field name", 1, i64),);
|
||||
datapoint!("name", ("field1 name", 2, i64), ("field2 name", 2, i64));
|
||||
datapoint!("name", ("field1 name", 2, i64), ("field2 name", 2, i64),);
|
||||
datapoint!(
|
||||
"name",
|
||||
("field1 name", 2, i64),
|
||||
("field2 name", 2, i64),
|
||||
("field3 name", 3, i64)
|
||||
);
|
||||
datapoint!(
|
||||
"name",
|
||||
("field1 name", 2, i64),
|
||||
("field2 name", 2, i64),
|
||||
("field3 name", 3, i64),
|
||||
);
|
||||
|
||||
let point = datapoint!(@point "name", ("i64", 1, i64), ("String", "string".to_string(), String), ("f64", 12.34_f64, f64), ("bool", true, bool));
|
||||
assert_eq!(point.measurement, "name");
|
||||
assert!(matches!(
|
||||
point.fields.get("i64").unwrap(),
|
||||
influxdb::Value::Integer(1)
|
||||
));
|
||||
assert!(match point.fields.get("String").unwrap() {
|
||||
influxdb::Value::String(ref s) => {
|
||||
if s == "string" {
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
_ => false,
|
||||
});
|
||||
assert!(match point.fields.get("f64").unwrap() {
|
||||
influxdb::Value::Float(f) => {
|
||||
if *f == 12.34_f64 {
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
_ => false,
|
||||
});
|
||||
assert!(matches!(
|
||||
point.fields.get("bool").unwrap(),
|
||||
influxdb::Value::Boolean(true)
|
||||
));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
use serde_json;
|
||||
use serde_json::Value;
|
||||
use solana_metrics;
|
||||
use solana_metrics::influxdb;
|
||||
use std::collections::HashMap;
|
||||
use std::env;
|
||||
use std::fs::File;
|
||||
|
@ -63,22 +61,21 @@ fn main() {
|
|||
last_commit = get_last_metrics(&"commit".to_string(), &db, &name, &branch).ok();
|
||||
}
|
||||
|
||||
let median = v["median"].to_string().parse().unwrap();
|
||||
let deviation = v["deviation"].to_string().parse().unwrap();
|
||||
let median: i64 = v["median"].to_string().parse().unwrap();
|
||||
let deviation: i64 = v["deviation"].to_string().parse().unwrap();
|
||||
if upload_metrics {
|
||||
solana_metrics::submit(
|
||||
influxdb::Point::new(&v["name"].as_str().unwrap().trim_matches('\"'))
|
||||
.add_tag("test", influxdb::Value::String("bench".to_string()))
|
||||
.add_tag("branch", influxdb::Value::String(branch.to_string()))
|
||||
.add_field("median", influxdb::Value::Integer(median))
|
||||
.add_field("deviation", influxdb::Value::Integer(deviation))
|
||||
.add_field(
|
||||
"commit",
|
||||
influxdb::Value::String(git_commit_hash.trim().to_string()),
|
||||
)
|
||||
.to_owned(),
|
||||
log::Level::Info,
|
||||
panic!("TODO...");
|
||||
/*
|
||||
solana_metrics::datapoint_info!(
|
||||
&v["name"].as_str().unwrap().trim_matches('\"'),
|
||||
("test", "bench", String),
|
||||
("branch", branch.to_string(), String),
|
||||
("median", median, i64),
|
||||
("deviation", deviation, i64),
|
||||
("commit", git_commit_hash.trim().to_string(), String)
|
||||
);
|
||||
*/
|
||||
|
||||
}
|
||||
let last_median = get_last_metrics(&"median".to_string(), &db, &name, &branch)
|
||||
.unwrap_or_default();
|
||||
|
|
Loading…
Reference in New Issue