Skip to content

Commit cadde42

Browse files
Anvikingabailly
andcommitted
wip: forward node logs with cardano-tracer
Co-authored-by: Arnaud Bailly <[email protected]>
1 parent 0747467 commit cadde42

File tree

5 files changed

+225
-19
lines changed

5 files changed

+225
-19
lines changed

compose/Dockerfile.tracer.source

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
FROM --platform=linux/amd64 docker.io/debian:stable-slim AS build
2+
3+
ARG BLST_VERSION="${BLST_VERSION:-0.3.11}"
4+
ARG BOOTSTRAP_HASKELL_CABAL_VERSION="${BOOTSTRAP_HASKELL_CABAL_VERSION:-3.12.1.0}"
5+
ARG BOOTSTRAP_HASKELL_GHC_VERSION="${BOOTSTRAP_HASKELL_GHC_VERSION:-9.6.7}"
6+
ARG CARDANO_CLI_VERSION="${CARDANO_CLI_VERSION:-10.5.0.0}"
7+
ARG CARDANO_NODE_REF="${CARDANO_NODE_REF:-10.2.1}"
8+
ARG CARDANO_NODE_REPO="${CARDANO_NODE_REPO:-https://github.com/IntersectMBO/cardano-node.git}"
9+
ARG JOBS="${JOBS:-8}"
10+
ARG LIBSODIUM_VERSION="${LIBSODIUM_VERSION:-dbb48cc}"
11+
ARG SECP256K1_VERSION="${SECP256K1_VERSION:-ac83be33}"
12+
ARG UV_VERSION="${UV_VERSION:-0.6.11}"
13+
14+
# Set time zone
15+
ENV TZ="UTC"
16+
RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && \
17+
echo ${TZ} > /etc/timezone
18+
19+
# Install packages required in build stage
20+
RUN apt update && \
21+
apt install -y --no-install-recommends \
22+
autoconf \
23+
automake \
24+
build-essential \
25+
ca-certificates \
26+
curl \
27+
g++ \
28+
git \
29+
gnupg \
30+
libffi-dev \
31+
libgmp-dev \
32+
liblmdb-dev \
33+
libncurses-dev \
34+
libssl-dev \
35+
libsystemd-dev \
36+
libtinfo-dev \
37+
libtool \
38+
pkg-config \
39+
tar \
40+
zlib1g-dev
41+
42+
# Install GHCup
43+
RUN curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
44+
45+
# Activate GHCup
46+
RUN ln -s /root/.ghcup/bin/cabal-${BOOTSTRAP_HASKELL_CABAL_VERSION} /usr/local/bin/cabal && \
47+
ln -s /root/.ghcup/ghc/${BOOTSTRAP_HASKELL_GHC_VERSION}/bin/ghc-${BOOTSTRAP_HASKELL_GHC_VERSION} /usr/local/bin/ghc
48+
49+
# Clone libsodium.git repository
50+
WORKDIR /usr/local/src
51+
RUN git clone --branch master https://github.com/IntersectMBO/libsodium.git
52+
53+
# Build libsodium
54+
WORKDIR /usr/local/src/libsodium
55+
RUN git checkout ${LIBSODIUM_VERSION} && \
56+
./autogen.sh && \
57+
./configure && \
58+
make && \
59+
make check && \
60+
make install -j${JOBS}
61+
62+
# Clone secp256k1.git repository
63+
WORKDIR /usr/local/src
64+
RUN git clone --branch master https://github.com/bitcoin-core/secp256k1.git
65+
66+
# Build secp256k1
67+
WORKDIR /usr/local/src/secp256k1
68+
RUN git checkout ${SECP256K1_VERSION} && \
69+
./autogen.sh && \
70+
./configure --prefix=/usr --enable-module-schnorrsig --enable-experimental && \
71+
make && \
72+
make check && \
73+
make install -j${JOBS}
74+
75+
# Clone blst.git repository
76+
WORKDIR /usr/local/src
77+
RUN git clone --branch master https://github.com/supranational/blst.git
78+
79+
# Build blst
80+
WORKDIR /usr/local/src/blst
81+
RUN git checkout v${BLST_VERSION} && \
82+
./build.sh
83+
RUN echo "prefix=/usr/local\n\
84+
exec_prefix=/usr/local\n\
85+
libdir=/usr/local/lib\n\
86+
includedir=/usr/local/include\n\
87+
\n\
88+
Name: libblst\n\
89+
Description: Multilingual BLS12-381 signature library\n\
90+
URL: https://github.com/supranational/blst\n\
91+
Version: ${BLST_VERSION}\n\
92+
Cflags: -I/usr/local/include\n\
93+
Libs: -L/usr/local/lib -lblst" >/usr/local/src/blst/libblst.pc
94+
95+
RUN mv /usr/local/src/blst/libblst.pc /usr/local/lib/pkgconfig/ && \
96+
mv /usr/local/src/blst/bindings/blst.h /usr/local/include/ && \
97+
mv /usr/local/src/blst/bindings/blst.hpp /usr/local/include/ && \
98+
mv /usr/local/src/blst/bindings/blst_aux.h /usr/local/include/ && \
99+
mv /usr/local/src/blst/libblst.a /usr/local/lib
100+
101+
# Update path environment variables
102+
ENV LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" \
103+
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
104+
105+
# Clone cardano-node.git repository
106+
WORKDIR /usr/local/src
107+
RUN git clone --branch master ${CARDANO_NODE_REPO}
108+
109+
# Checkout cardano-node version
110+
WORKDIR /usr/local/src/cardano-node
111+
RUN git fetch --all --recurse-submodules --tags && \
112+
git checkout ${CARDANO_NODE_REF}
113+
RUN echo "package *\n\
114+
ghc-options: +RTS -A128m -n2m -RTS\n\
115+
\n\
116+
jobs: \$ncpus\n\
117+
semaphore: True" > /usr/local/src/cardano-node/cabal.project.local
118+
119+
# Build cardano-node binary
120+
WORKDIR /usr/local/src/cardano-node/cardano-node
121+
RUN cabal update && \
122+
cabal build exe:cardano-tracer
123+
RUN ln -s /usr/local/src/cardano-node/dist-newstyle/build/x86_64-linux/ghc-${BOOTSTRAP_HASKELL_GHC_VERSION}/cardano-tracer-*/x/cardano-tracer/build/cardano-tracer/cardano-tracer /usr/local/bin/cardano-tracer
124+
125+
#---------------------------------------------------------------------
126+
127+
FROM docker.io/debian:stable-slim AS main
128+
129+
# Set environment variables
130+
ENV CARDANO_TRACER_SOCKET_PATH="/opt/cardano-tracer/tracer.socket"
131+
132+
# Set time zone
133+
ENV TZ="UTC"
134+
RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && \
135+
echo ${TZ} > /etc/timezone
136+
137+
# Install packages required in main stage
138+
RUN apt update && \
139+
apt install -y --no-install-recommends \
140+
dnsutils \
141+
iproute2 \
142+
iputils-ping \
143+
jq \
144+
less \
145+
netbase \
146+
netcat-openbsd \
147+
openssl \
148+
procps \
149+
telnet \
150+
vim
151+
152+
# Copy libsodium library
153+
COPY --from=build --chown=root:root /usr/local/lib/libsodium.so /usr/local/lib
154+
RUN ln -snf /usr/local/lib/libsodium.so /usr/local/lib/libsodium.so.23 && \
155+
ln -snf /usr/local/lib/libsodium.so /usr/local/lib/libsodium.so.23.3.0
156+
RUN ldconfig
157+
158+
# Copy secp256k1 library
159+
COPY --from=build --chown=root:root /usr/local/src/secp256k1/.libs/libsecp256k1.so /usr/local/lib
160+
RUN ln -snf /usr/local/lib/libsecp256k1.so /usr/local/lib/libsecp256k1.so.1 && \
161+
ln -snf /usr/local/lib/libsecp256k1.so /usr/local/lib/libsecp256k1.so.1.0.1
162+
RUN ldconfig
163+
164+
# Copy binaries from build stage
165+
COPY --from=build --chown=root:root /usr/local/bin/cardano-tracer /usr/local/bin/cardano-tracer
166+
167+
# Create cardano group and user
168+
RUN groupadd --gid 10000 cardano && \
169+
useradd --comment 'cardano' --create-home --gid 10000 --password '!' --shell '/bin/bash' --uid 10000 cardano
170+
171+
#STOPSIGNAL SIGINT
172+
173+
COPY tracer-config.yaml .
174+
175+
ENTRYPOINT ["/usr/local/bin/cardano-tracer"]

compose/cardano-node.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ assemble_command() {
167167
cmd+=(run)
168168
cmd+=(--database-path ${DATABASE_PATH})
169169
cmd+=(--socket-path ${SOCKET_PATH})
170+
cmd+=(--tracer-socket-path-connect /opt/cardano-tracer/tracer.socket)
170171

171172
# TYPE
172173
if [ "${TYPE,,}" = "bp" ]; then

compose/testnets/example_10.2.1/docker-compose.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,27 @@ x-env: &env
1313
POOL_ID: "0" # Placeholder required for override
1414

1515
services:
16+
tracer:
17+
image: cardano-tracer:latest
18+
container_name: tracer
19+
volumes:
20+
- tracer:/opt/cardano-tracer
21+
ports:
22+
- "4000:4000"
23+
command:
24+
- "--config"
25+
- "tracer-config.yaml"
26+
build:
27+
context: "../../"
28+
dockerfile: "Dockerfile.tracer.source"
29+
1630
p1:
1731
<<: *base
1832
container_name: p1
1933
hostname: p1.example
2034
volumes:
2135
- p1:/opt/cardano-node/data
36+
- tracer:/opt/cardano-tracer
2237
ports:
2338
- "3001:3001"
2439
environment:
@@ -31,6 +46,7 @@ services:
3146
hostname: p2.example
3247
volumes:
3348
- p2:/opt/cardano-node/data
49+
- tracer:/opt/cardano-tracer
3450
ports:
3551
- "3002:3001"
3652
environment:
@@ -44,6 +60,7 @@ services:
4460
hostname: p3.example
4561
volumes:
4662
- p3:/opt/cardano-node/data
63+
- tracer:/opt/cardano-tracer
4764
ports:
4865
- "3003:3001"
4966
environment:
@@ -59,6 +76,7 @@ services:
5976
POOLS: "3"
6077

6178
volumes:
79+
tracer:
6280
p1:
6381
p2:
6482
p3:

compose/testnets/example_10.2.1/testnet.yaml

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -50,22 +50,21 @@ TestBabbageHardForkAtEpoch: 0
5050
TestConwayHardForkAtEpoch: 0
5151
TestMaryHardForkAtEpoch: 0
5252
TestShelleyHardForkAtEpoch: 0
53-
TraceConnectionManager: false
54-
TraceConnectionManagerTransitions: false
55-
TraceDNSResolver: false
56-
TraceDNSSubscription: false
57-
TraceDebugPeerSelection: false
58-
TraceForge: false
59-
TraceForgeStateInfo: false
60-
TraceHandshake: false
61-
TraceInboundGovernor: false
62-
TraceIpSubscription: false
63-
TraceLedgerPeers: false
64-
TraceLocalConnectionManager: false
65-
TraceLocalHandshake: false
66-
TraceLocalRootPeers: false
67-
TracePeerSelection: false
68-
TracePeerSelectionActions: false
69-
TracePublicRootPeers: false
70-
TraceServer: false
71-
TurnOnLogMetrics: false
53+
TraceConnectionManager: true
54+
TraceConnectionManagerTransitions: true
55+
TraceDNSResolver: true
56+
TraceDNSSubscription: true
57+
TraceDebugPeerSelection: true
58+
TraceForge: true
59+
TraceForgeStateInfo: true
60+
TraceHandshake: true
61+
TraceInboundGovernor: true
62+
TraceIpSubscription: true
63+
TraceLedgerPeers: true
64+
TraceLocalConnectionManager: true
65+
TraceLocalHandshake: true
66+
TraceLocalRootPeers: true
67+
TracePeerSelection: true
68+
TracePeerSelectionActions: true
69+
TracePublicRootPeers: true
70+
TraceServer: true

compose/tracer-config.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
networkMagic: 42
3+
network:
4+
tag: AcceptAt
5+
contents: "/opt/cardano-tracer/tracer.socket"
6+
logging:
7+
- logRoot: "/opt/cardano-tracer"
8+
logMode: FileMode
9+
logFormat: ForMachine
10+
verbosity: Maximum
11+
hasPrometheus:
12+
epHost: 0.0.0.0
13+
epPort: 4000

0 commit comments

Comments
 (0)