I2PD prometheus exporter
Find a file
2024-05-21 21:28:19 +02:00
src fix authentication 2024-05-21 05:26:25 +02:00
.env.example fix authentication 2024-05-21 05:26:25 +02:00
.gitignore expanded readme 2024-05-21 04:49:00 +02:00
Cargo.lock flake finished 2024-05-21 00:16:36 +02:00
Cargo.toml flake finished 2024-05-21 00:16:36 +02:00
deny.toml initial 2024-05-20 00:47:07 +02:00
docker-compose.yml fix authentication 2024-05-21 05:26:25 +02:00
dockerfile initial 2024-05-20 00:47:07 +02:00
flake.lock flake finished 2024-05-21 00:16:36 +02:00
flake.nix flake finished 2024-05-21 00:16:36 +02:00
panel.json added panel png and updated panel.json 2024-05-21 21:28:19 +02:00
panel.png added panel png and updated panel.json 2024-05-21 21:28:19 +02:00
readme.md added panel png and updated panel.json 2024-05-21 21:28:19 +02:00

I2PD exporter

A basic prometheus exporter that exports miscellaneous data using the i2pcontrol protocol such as peers, data sent & received and so on...

How to use (Nix)

  1. Import to your flake
{
  description = "A simple NixOS flake";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
    i2pd-exporter = {
        url = "git+https://git.4o1x5.dev/4o1x5/i2pd-exporter";
      inputs.nixpkgs.follows = "nixpkgs";
    };

  };

  outputs =
    { self
    , nixpkgs
    , i2pd-exporter
    , ...
    }:
    let
      system = "x86_64-linux";
    in
    {
      nixosConfigurations.server = nixpkgs.lib.nixosSystem
        {
          inherit system;
          modules = [
            ./configuration.nix

            i2pd-exporter.nixosModules.default
          ];
        };
    };
}

  1. Enable I2PControl for I2PD
{pkgs, ...}:{

  services.i2pd = {
    enable = true;
    proto.i2pControl = {
        enable = true;
        port = 7659;
        name = "i2pcontrol";
        address = "127.0.0.1";
    };
  };
}
  1. Enable the exporter
{pkgs, config, ...}:{
  services.prometheus.exporters.i2pd = {
    enable = true;
    port = 3321;
    openFirewall = true;
    routerAddress = "https://127.0.0.1:${toString config.services.i2pd.proto.i2pControl.port}";
    routerPassword = "itoopie";
  };
}
  1. Scrape via prometheus
{ pkgs, config, ... }: {

  services.prometheus = {
    enable = true;

    scrapeConfigs = [
      {
        job_name = "i2p";
        scrape_interval = "5s";
        static_configs = [
          {
            targets = [ "localhost:${toString config.services.prometheus.exporters.i2pd.port}" ];
            labels = { alias = "i2pd.server.local"; };
          }
        ];
      }
    ];
  }
}
  1. Import the grafana dashboard

todo

Docker

docker compose up -d