Skip to content

Commit

Permalink
feat: add Tempo, Loki, Vector and opentelemetry_ash (#50)
Browse files Browse the repository at this point in the history
* feat: add Tempo

* feat: add Loki

* feat: add vector
  • Loading branch information
Rekkice authored Feb 24, 2025
1 parent 61e8e35 commit 3bd5f24
Show file tree
Hide file tree
Showing 9 changed files with 113 additions and 8 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ mix.docs.publish mdp:
@cd tololo && mix hex.publish

mix.phoenix.server mix.server mps:
@cd tololo && iex -S mix phx.server
@cd tololo && iex -S mix phx.server | vector --config ../vector.yaml

mix.credo:
@cd tololo && mix credo
Expand Down
23 changes: 21 additions & 2 deletions devenv.nix
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,15 @@ in
pkgs.less
pkgs.git
pkgs.gnumake
pkgs.grafana
pkgs.prometheus
pkgs.gnumake
pkgs.antora

pkgs.grafana
pkgs.prometheus
pkgs.tempo
pkgs.grafana-loki
pkgs.vector

pkgs.nodePackages_latest.localtunnel
pkgs.flyctl

Expand Down Expand Up @@ -90,6 +94,19 @@ in
if [ ! -d ".devenv/state/prometheus" ]; then
mkdir .devenv/state/prometheus
fi
if [ ! -d ".devenv/state/tempo" ]; then
mkdir .devenv/state/tempo
mkdir .devenv/state/tempo/local
mkdir .devenv/state/tempo/wal
fi
if [ ! -d ".devenv/state/loki" ]; then
mkdir .devenv/state/loki
mkdir .devenv/state/loki/chunks
fi
'';

enterTest = ''
Expand Down Expand Up @@ -119,6 +136,8 @@ in
grafana.exec = "grafana server --homepath .devenv/state/grafana";
prometheus.exec = "prometheus --storage.tsdb.path .devenv/state/prometheus/data";
localtunnel.exec = "lt -p 4000 -s ${localtunnel-subdomain}";
tempo.exec = "tempo -config.file tempo_config.yml";
loki.exec = "loki -config.file loki_config.yml";
};

services.kafka.enable = true;
Expand Down
27 changes: 27 additions & 0 deletions loki_config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
auth_enabled: false

server:
http_listen_port: 3100
grpc_listen_port: 9096

common:
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory
replication_factor: 1
path_prefix: .devenv/state/loki

schema_config:
configs:
- from: 2020-05-15
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h

storage_config:
filesystem:
directory: .devenv/state/loki/chunks
36 changes: 36 additions & 0 deletions tempo_config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
server:
http_listen_port: 3200

distributor:
receivers:
otlp:
protocols:
http:
grpc:

compactor:
compaction:
block_retention: 48h # configure total trace retention here

metrics_generator:
registry:
external_labels:
source: tempo
cluster: linux-microservices
storage:
path: .devenv/state/tempo/wal
remote_write:
- url: http://localhost:9090/api/v1/write
send_exemplars: true

storage:
trace:
backend: local
wal:
path: .devenv/state/tempo/wal
local:
path: .devenv/state/tempo/local
overrides:
defaults:
metrics_generator:
processors: [service-graphs, span-metrics]
7 changes: 6 additions & 1 deletion tololo/config/config.exs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ config :ash,

# custom_types: [ticket_status: Tololo.Support.Ticket.Types.Status]

config :ash, :tracer, [OpentelemetryAsh]

config :opentelemetry_ash,
trace_types: [:custom, :action, :flow]

config :spark,
formatter: [
remove_parens?: true,
Expand Down Expand Up @@ -51,7 +56,7 @@ config :tololo,
generators: [timestamp_type: :utc_datetime],
extensions: [
Tololo.Extensions.TelegramBot,
Tololo.Extensions.Prometheus,
Tololo.Extensions.Prometheus
],
pubsub: Tololo.PubSub,
geocoding_endpoint: "https://nominatim.openstreetmap.org/search",
Expand Down
4 changes: 0 additions & 4 deletions tololo/lib/tololo/application.ex
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,12 @@ defmodule Tololo.Application do

children =
[
# Tololo.Prometheus,
TololoWeb.Telemetry,
Tololo.Repo,
{DNSCluster, query: Application.get_env(:tololo, :dns_cluster_query) || :ignore},
{Phoenix.PubSub, name: Tololo.PubSub},
# Start the Finch HTTP client for sending emails
{Finch, name: Tololo.Finch},
# Start a worker by calling: Tololo.Worker.start_link(arg)
# {Tololo.Worker, arg},
# Start to serve requests, typically the last entry
TololoWeb.Endpoint,
{AshAuthentication.Supervisor, [otp_app: :tololo]},
TololoCore.Deliveries.StaleCleaner
Expand Down
1 change: 1 addition & 0 deletions tololo/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ defmodule Tololo.MixProject do
{:opentelemetry_ecto, "~> 1.2.0"},
{:opentelemetry_phoenix, "~> 2.0.0"},
{:opentelemetry_bandit, "~> 0.2.0"},
{:opentelemetry_ash, "~> 0.1.0"},
{:picosat_elixir, "~> 0.2.0"},
{:mix_test_watch, "~> 1.0", only: [:dev, :test], runtime: false},
{:ash_admin, "~> 0.12.6"},
Expand Down
1 change: 1 addition & 0 deletions tololo/mix.lock
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
"octo_fetch": {:hex, :octo_fetch, "0.4.0", "074b5ecbc08be10b05b27e9db08bc20a3060142769436242702931c418695b19", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "cf8be6f40cd519d7000bb4e84adcf661c32e59369ca2827c4e20042eda7a7fc6"},
"opentelemetry": {:hex, :opentelemetry, "1.5.0", "7dda6551edfc3050ea4b0b40c0d2570423d6372b97e9c60793263ef62c53c3c2", [:rebar3], [{:opentelemetry_api, "~> 1.4", [hex: :opentelemetry_api, repo: "hexpm", optional: false]}], "hexpm", "cdf4f51d17b592fc592b9a75f86a6f808c23044ba7cf7b9534debbcc5c23b0ee"},
"opentelemetry_api": {:hex, :opentelemetry_api, "1.4.0", "63ca1742f92f00059298f478048dfb826f4b20d49534493d6919a0db39b6db04", [:mix, :rebar3], [], "hexpm", "3dfbbfaa2c2ed3121c5c483162836c4f9027def469c41578af5ef32589fcfc58"},
"opentelemetry_ash": {:hex, :opentelemetry_ash, "0.1.0", "d12ee1d7c02ba09a1ce15a0532bcaf9f0ab53c3647db8de2cc6c434f5c142925", [:mix], [{:ash, "~> 3.0", [hex: :ash, repo: "hexpm", optional: false]}, {:opentelemetry_api, "~> 1.0", [hex: :opentelemetry_api, repo: "hexpm", optional: false]}, {:opentelemetry_process_propagator, "~> 0.3", [hex: :opentelemetry_process_propagator, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "fe3a3f919c5b60e6c79812acacedd0f0390fb33b48cb4e69a897434e7c0ec7bc"},
"opentelemetry_bandit": {:hex, :opentelemetry_bandit, "0.2.0", "60ee4789994d4532ec1b4c05cb8fad333c60ba2c248eb908918369fde045bbda", [:mix], [{:nimble_options, "~> 1.1", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:opentelemetry_api, "~> 1.3", [hex: :opentelemetry_api, repo: "hexpm", optional: false]}, {:opentelemetry_semantic_conventions, "~> 1.27", [hex: :opentelemetry_semantic_conventions, repo: "hexpm", optional: false]}, {:otel_http, "~> 0.2", [hex: :otel_http, repo: "hexpm", optional: false]}, {:plug, ">= 1.15.0", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.2", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "57e31355a860250c9203ae34f0bf0290a14b72ab02b154535e1b2512a0767bca"},
"opentelemetry_ecto": {:hex, :opentelemetry_ecto, "1.2.0", "2382cb47ddc231f953d3b8263ed029d87fbf217915a1da82f49159d122b64865", [:mix], [{:opentelemetry_api, "~> 1.0", [hex: :opentelemetry_api, repo: "hexpm", optional: false]}, {:opentelemetry_process_propagator, "~> 0.2", [hex: :opentelemetry_process_propagator, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "70dfa2e79932e86f209df00e36c980b17a32f82d175f0068bf7ef9a96cf080cf"},
"opentelemetry_exporter": {:hex, :opentelemetry_exporter, "1.8.0", "5d546123230771ef4174e37bedfd77e3374913304cd6ea3ca82a2add49cd5d56", [:rebar3], [{:grpcbox, ">= 0.0.0", [hex: :grpcbox, repo: "hexpm", optional: false]}, {:opentelemetry, "~> 1.5.0", [hex: :opentelemetry, repo: "hexpm", optional: false]}, {:opentelemetry_api, "~> 1.4.0", [hex: :opentelemetry_api, repo: "hexpm", optional: false]}, {:tls_certificate_check, "~> 1.18", [hex: :tls_certificate_check, repo: "hexpm", optional: false]}], "hexpm", "a1f9f271f8d3b02b81462a6bfef7075fd8457fdb06adff5d2537df5e2264d9af"},
Expand Down
20 changes: 20 additions & 0 deletions vector.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
sources:
in:
type: "stdin"

sinks:
out:
inputs:
- "in"
type: "console"
encoding:
codec: "text"
loki:
type: loki
encoding:
codec: "text"
inputs:
- "in"
labels:
source: "tololo"
endpoint: http://localhost:3100

0 comments on commit 3bd5f24

Please sign in to comment.