Signed-off-by: Ciro S. Costa <utxobr@protonmail.com>
This commit is contained in:
Ciro S. Costa 2022-04-14 11:54:27 -04:00
parent 3959d63fd3
commit 9b1bd4ee64
6 changed files with 77 additions and 19 deletions

View File

@ -1,16 +1,16 @@
apiVersion: kbld.k14s.io/v1alpha1 apiVersion: kbld.k14s.io/v1alpha1
kind: Config kind: Config
minimumRequiredVersion: 0.30.0 minimumRequiredVersion: develop
overrides: overrides:
- image: monero-exporter - image: monero-exporter
newImage: index.docker.io/utxobr/monero-exporter@sha256:737413b1054583535e835e1417b61a8d59a4c08723e4a15c61c4249c2a7d69a4 newImage: index.docker.io/utxobr/monero-exporter@sha256:2772b74aa89c4ec01c4032b96c4fea45c7d8a24183f40404773d68049d093451
preresolved: true preresolved: true
- image: monero-exporter-grafana - image: monero-exporter-grafana
newImage: index.docker.io/utxobr/monero-exporter-grafana@sha256:0e9f595487e7ee07f9059f75c302ce56fbe559074c0ba95a1d46a9a3c1c859a2 newImage: index.docker.io/utxobr/monero-exporter-grafana@sha256:5f8ec91d95491d1912a5e2fed5eadbe19160e69336e30f02c8f78a1a01ba80ef
preresolved: true preresolved: true
- image: monero-exporter-monerod - image: monero-exporter-monerod
newImage: index.docker.io/utxobr/monero-exporter-monerod@sha256:19d889447ba4f703957d952ac753b330d5a2d7e324c98eac1f0f3d8bf2744817 newImage: index.docker.io/utxobr/monero-exporter-monerod@sha256:c821833ca024a0ccb74e467054f4b7842d641d854062b0cc0d80d20a71d69339
preresolved: true preresolved: true
- image: monero-exporter-prometheus - image: monero-exporter-prometheus
newImage: index.docker.io/utxobr/monero-exporter-prometheus@sha256:21fcd719c6a3c8de35d513887e6666a5c49a15be742e328c034511cd60b5573e newImage: index.docker.io/utxobr/monero-exporter-prometheus@sha256:bdc0a4e9c1bb6d7ddc65051fecc948b03efacae2c49261c44efccabe2f5912d8
preresolved: true preresolved: true

View File

@ -36,7 +36,7 @@ services:
- --rpc-bind-ip=127.0.0.1 - --rpc-bind-ip=127.0.0.1
- --rpc-bind-port=18081 - --rpc-bind-port=18081
- --rpc-restricted-bind-ip=0.0.0.0 - --rpc-restricted-bind-ip=0.0.0.0
- --rpc-restricted-bind-port=18089 - --rpc-restricted-bind-pmort=18089
monero-exporter: monero-exporter:
container_name: monero-exporter container_name: monero-exporter
@ -54,7 +54,7 @@ services:
command: command:
- --config.file=/etc/prometheus/config.yaml - --config.file=/etc/prometheus/config.yaml
- --storage.tsdb.path=/data - --storage.tsdb.path=/data
- --storage.tsdb.retention.time=30d - --storage.tsdb.retention.time=90d
grafana: grafana:
container_name: grafana container_name: grafana

View File

@ -22,11 +22,11 @@ services:
- --check-updates=disabled - --check-updates=disabled
- --data-dir=/data - --data-dir=/data
- --enforce-dns-checkpointing - --enforce-dns-checkpointing
- --in-peers=1024 - --in-peers=2048
- --limit-rate=999999 - --limit-rate=999999
- --no-igd - --no-igd
- --no-zmq - --no-zmq
- --out-peers=32 - --out-peers=64
- --p2p-bind-ip=0.0.0.0 - --p2p-bind-ip=0.0.0.0
- --p2p-bind-port=18080 - --p2p-bind-port=18080
- --public-node - --public-node
@ -35,7 +35,7 @@ services:
- --rpc-restricted-bind-ip=0.0.0.0 - --rpc-restricted-bind-ip=0.0.0.0
- --rpc-restricted-bind-port=18089 - --rpc-restricted-bind-port=18089
container_name: monerod container_name: monerod
image: index.docker.io/utxobr/monero-exporter-monerod@sha256:19d889447ba4f703957d952ac753b330d5a2d7e324c98eac1f0f3d8bf2744817 image: index.docker.io/utxobr/monero-exporter-monerod@sha256:15a70938c401a744b34d278fa345fb2e66fae8b428929ae52f1cea455e5bfcd9
ports: ports:
- 18080:18080 - 18080:18080
- 18089:18089 - 18089:18089
@ -45,7 +45,7 @@ services:
command: command:
- --config.file=/etc/prometheus/config.yaml - --config.file=/etc/prometheus/config.yaml
- --storage.tsdb.path=/data - --storage.tsdb.path=/data
- --storage.tsdb.retention.time=30d - --storage.tsdb.retention.time=180d
container_name: prometheus container_name: prometheus
image: index.docker.io/utxobr/monero-exporter-prometheus@sha256:21fcd719c6a3c8de35d513887e6666a5c49a15be742e328c034511cd60b5573e image: index.docker.io/utxobr/monero-exporter-prometheus@sha256:21fcd719c6a3c8de35d513887e6666a5c49a15be742e328c034511cd60b5573e
volumes: volumes:

View File

@ -4,8 +4,8 @@ ARG RUNTIME_IMAGE=gcr.io/distroless/base@sha256:97f9cbf81590c7dd878d7e10c20116fa
FROM $BUILDER_IMAGE AS builder FROM $BUILDER_IMAGE AS builder
ARG MONERO_VERSION=0.17.2.0 ARG MONERO_VERSION=0.17.3.0
ARG MONERO_SHA256=59e16c53b2aff8d9ab7a8ba3279ee826ac1f2480fbb98e79a149e6be23dd9086 ARG MONERO_SHA256=ac18ce3d1189410a5c175984827d5d601974733303411f6142296d647f6582ce
RUN set -ex && \ RUN set -ex && \
apt update && \ apt update && \

View File

@ -99,16 +99,24 @@ func (c *LastBlockStatsCollector) fetchData(ctx context.Context) error {
} }
func (c *LastBlockStatsCollector) collectBlockSize() { func (c *LastBlockStatsCollector) collectBlockSize() {
desc := prometheus.NewDesc( c.metricsC <- prometheus.MustNewConstMetric(
"monero_lastblock_size_bytes", prometheus.NewDesc(
"total size of the last block", "monero_lastblock_size_bytes",
nil, nil, "total size of the last block",
nil, nil,
),
prometheus.GaugeValue,
float64(c.header.BlockSize),
) )
c.metricsC <- prometheus.MustNewConstMetric( c.metricsC <- prometheus.MustNewConstMetric(
desc, prometheus.NewDesc(
"monero_lastblock_weight_bytes",
"total weight of the last block",
nil, nil,
),
prometheus.GaugeValue, prometheus.GaugeValue,
float64(c.header.BlockSize), float64(c.header.BlockWeight),
) )
} }
@ -236,6 +244,55 @@ func (c *LastBlockStatsCollector) collectTransactionsSize() {
) )
} }
// - transaction weight for a miner transaciton or a normal transaction with
// two outputs is equal to the size in bytes.
// - a bulletproof occupies ((2*[log_2(64p)]+9)*32) bytes
//
//
// ref: https://github.com/monero-project/monero/blob/a9cb4c082f1a815076674b543d93159a2137540e/src/cryptonote_basic/cryptonote_format_utils.cpp#L106
//
func (c *LastBlockStatsCollector) computeTransactionWeight(idx int) float64 {
const bpBase uint = 368
txn := c.txns[idx]
txnSize := uint(c.txnSizes[idx])
numberOfOutputs := uint(len(txn.Vout))
if numberOfOutputs <= 2 {
return float64(txnSize)
}
nlr := uint(0)
for {
if (1 << nlr) < numberOfOutputs {
break
}
nlr++
}
nlr += 6
bpSize := 32 * (9 + 2*nlr)
bpClawback := (bpBase*numberOfOutputs - bpSize) * 4 / 5
return float64(txnSize + bpClawback)
}
func (c *LastBlockStatsCollector) collectTransactionsWeight() {
summary := NewSummary()
for idx := range c.txnSizes {
summary.Insert(c.computeTransactionWeight(idx))
}
c.metricsC <- prometheus.MustNewConstSummary(
prometheus.NewDesc(
"monero_lastblock_transactions_weight_bytes",
"distribution of the weight of the transactions included",
nil, nil,
),
summary.Count(), summary.Sum(), summary.Quantiles(),
)
}
func (c *LastBlockStatsCollector) collectTransactionsInputs() { func (c *LastBlockStatsCollector) collectTransactionsInputs() {
summary := NewSummary() summary := NewSummary()
for _, txn := range c.txns { for _, txn := range c.txns {

1
run.sh Executable file
View File

@ -0,0 +1 @@
docker-compose -f ./examples/docker-compose.yaml up -d