Skip to content

Commit 290f219

Browse files
committed
WIP: use fluentd to collect logs
1 parent 1d90aea commit 290f219

File tree

4 files changed

+57
-12
lines changed

4 files changed

+57
-12
lines changed

src/services/fluentd.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from .base_service import BaseService
2+
3+
FLUENT_IP = "100.102.108.117"
4+
FLUENT_CONF = "fluent.conf"
5+
6+
class Fluentd(BaseService):
7+
PORT = 24224
8+
9+
def __init__(self, docker_network, config_dir):
10+
super().__init__(docker_network, config_dir)
11+
self.service = {
12+
"image": "fluent/fluentd:v1.16-debian-1", # Debian version is recommended officially since it has jemalloc support.
13+
"container_name": f"{self.docker_network}_fluentd",
14+
"ports": [f"{self.PORT}:{self.PORT}"],
15+
"volumes": [
16+
f"{self.config_dir / FLUENT_CONF}:/fluentd/etc/{FLUENT_CONF}"
17+
],
18+
"command": ["/bin/sh", "-c", f"sleep 10 && fluentd -c /fluentd/etc/{FLUENT_CONF}"],
19+
"networks": {
20+
self.docker_network: {
21+
"ipv4_address": f"{FLUENT_IP}",
22+
}
23+
},
24+
}

src/templates/fluent.conf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<source>
2+
@type forward
3+
port 24224
4+
bind 0.0.0.0
5+
</source>
6+
7+
<match *>
8+
@type stdout
9+
</match>

src/warnet/tank.py

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from pathlib import Path
1010
from docker.api import service
1111
from docker.models.containers import Container
12+
from services.fluentd import FLUENT_IP
1213
from templates import TEMPLATES
1314
from warnet.utils import (
1415
exponential_backoff,
@@ -241,22 +242,30 @@ def add_services(self, services):
241242
},
242243
"labels": {"warnet": "tank"},
243244
"privileged": True,
245+
# "depends_on": ["fluentd"],
246+
# "logging": {
247+
# "driver": "fluentd",
248+
# "options": {
249+
# "fluentd-address": f"{FLUENT_IP}:24224",
250+
# "tag": "{{.Name}}"
251+
# }
252+
# }
244253
}
245254
)
246255

247256
# Add the prometheus data exporter in a neighboring container
248-
# services[self.exporter_name] = {
249-
# "image": "jvstein/bitcoin-prometheus-exporter",
250-
# "container_name": self.exporter_name,
251-
# "environment": {
252-
# "BITCOIN_RPC_HOST": self.bitcoind_name,
253-
# "BITCOIN_RPC_PORT": self.rpc_port,
254-
# "BITCOIN_RPC_USER": self.rpc_user,
255-
# "BITCOIN_RPC_PASSWORD": self.rpc_password,
256-
# },
257-
# "ports": [f"{8335 + self.index}:9332"],
258-
# "networks": [self.docker_network],
259-
# }
257+
services[self.exporter_name] = {
258+
"image": "jvstein/bitcoin-prometheus-exporter",
259+
"container_name": self.exporter_name,
260+
"environment": {
261+
"BITCOIN_RPC_HOST": self.container_name,
262+
"BITCOIN_RPC_PORT": self.rpc_port,
263+
"BITCOIN_RPC_USER": self.rpc_user,
264+
"BITCOIN_RPC_PASSWORD": self.rpc_password,
265+
},
266+
"ports": [f"{8335 + self.index}:9332"],
267+
"networks": [self.docker_network],
268+
}
260269

261270
def add_scrapers(self, scrapers):
262271
scrapers.append(

src/warnet/warnet.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from services.grafana import Grafana
1818
from services.tor import Tor
1919
from services.fork_observer import ForkObserver
20+
from services.fluentd import FLUENT_CONF, Fluentd, FLUENT_IP
2021
from services.dns_seed import DnsSeed, ZONE_FILE_NAME, DNS_SEED_NAME
2122
from warnet.tank import Tank
2223
from warnet.utils import parse_bitcoin_conf, gen_config_dir, bubble_exception_str
@@ -43,6 +44,7 @@ def __init__(self, config_dir):
4344
f"copying config {TEMPLATES / FO_CONF_NAME} to {self.fork_observer_config}"
4445
)
4546
shutil.copy(TEMPLATES / FO_CONF_NAME, self.fork_observer_config)
47+
shutil.copy(TEMPLATES / FLUENT_CONF, self.config_dir)
4648

4749
def __str__(self) -> str:
4850
tanks_str = ",\n".join([str(tank) for tank in self.tanks])
@@ -266,6 +268,7 @@ def write_docker_compose(self, dns=True):
266268
Grafana(self.docker_network),
267269
Tor(self.docker_network, TEMPLATES),
268270
ForkObserver(self.docker_network, self.fork_observer_config),
271+
# Fluentd(self.docker_network, self.config_dir),
269272
]
270273
if dns:
271274
services.append(DnsSeed(self.docker_network, TEMPLATES, self.config_dir))

0 commit comments

Comments
 (0)