# I2PD exporter A basic prometheus exporter that exports miscellaneous data using the i2pcontrol protocol such as peers, data sent & received and so on... Right now there are some problems with using exporter as the options for i2pd in nixpkgs are wrong... Therefore upon starting the program will error out with `InvalidPassword`. But it works alright on other systems ## How to use (Nix) 1. Import to your flake ```nix { description = "A simple NixOS flake"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; i2pd-exporter = { url = "path:/home/grape/code/i2pdexporter"; 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 ]; }; }; } ``` 2. Enable I2PControl for I2PD ```nix {pkgs, ...}:{ services.i2pd = { enable = true; proto.i2pControl = { enable = true; port = 7659; name = "i2pcontrol"; address = "127.0.0.1"; }; }; } ``` 3. Enable the exporter ```nix {pkgs, ...}:{ services.prometheus.exporters.i2pd = { enable = true; port = 3321; openFirewall = true; routerAddress = "https://127.0.0.1:7650"; routerPassword = "itoopie"; }; } ``` 4. Scrape via prometheus ```nix { 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"; }; } ]; } ]; } } ``` 5. Import the grafana dashboard **todo** # Docker ```bash docker compose up -d ```