Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add Tempo, Loki, Vector and opentelemetry_ash #50

Merged
merged 3 commits into from
Feb 24, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading