# andrewkroh/beats-processor-fingerprint architecture

> Architecture diagram of the GitHub repository andrewkroh/beats-processor-fingerprint, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/andrewkroh/beats-processor-fingerprint
- Repository: https://github.com/andrewkroh/beats-processor-fingerprint

## Overview

This small Go plugin adds a configurable fingerprint processor to Elastic Beats. Beats loads the plugin and configures the processor; for each event, the processor reads configured fields, hashes their values, encodes the digest, and writes it to the target field. Hash algorithms and output encodings are selected from the supported options. The graph reflects the excerpts and README; no additional runtime wiring is inferred.

Main entry points: [`fingerprint.go`](https://github.com/andrewkroh/beats-processor-fingerprint/blob/master/fingerprint.go) (Fingerprint processor), [`main.go`](https://github.com/andrewkroh/beats-processor-fingerprint/blob/master/main.go) (Plugin registration), [`config.go`](https://github.com/andrewkroh/beats-processor-fingerprint/blob/master/config.go) (Hash and encoding options)

## Diagram (Mermaid)

```mermaid
flowchart TD

node_beats(("Elastic Beats"))
node_registration["Plugin registration<br/>[main.go]"]
node_processor["Fingerprint processor<br/>[fingerprint.go]"]
node_config["Fingerprint configuration<br/>[config.go]"]
node_digest["Hash and encoding options<br/>[config.go]"]

node_beats -->|"loads plugin"| node_registration
node_registration -->|"registers New"| node_processor
node_processor -->|"unpacks options"| node_config
node_processor -->|"selects hash"| node_digest
node_processor -->|"reads fields; writes target"| node_beats
node_digest -->|"provides hash and encoder"| node_processor

click node_registration "https://github.com/andrewkroh/beats-processor-fingerprint/blob/master/main.go"
click node_processor "https://github.com/andrewkroh/beats-processor-fingerprint/blob/master/fingerprint.go"
click node_config "https://github.com/andrewkroh/beats-processor-fingerprint/blob/master/config.go"
click node_digest "https://github.com/andrewkroh/beats-processor-fingerprint/blob/master/config.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_beats toneIndigo
class node_registration,node_processor,node_config,node_digest toneTeal
```

## Components

### Other components

- **Elastic Beats**
- [Plugin registration](https://github.com/andrewkroh/beats-processor-fingerprint/blob/master/main.go): `main.go`
- [Fingerprint processor](https://github.com/andrewkroh/beats-processor-fingerprint/blob/master/fingerprint.go): `fingerprint.go`
- [Fingerprint configuration](https://github.com/andrewkroh/beats-processor-fingerprint/blob/master/config.go): `config.go`
- [Hash and encoding options](https://github.com/andrewkroh/beats-processor-fingerprint/blob/master/config.go): `config.go`

## Connections

- Elastic Beats → Plugin registration: loads plugin (evidence: `README.md`)
- Plugin registration → Fingerprint processor: registers New (evidence: `main.go`)
- Fingerprint processor → Fingerprint configuration: unpacks options (evidence: `fingerprint.go`)
- Fingerprint processor → Hash and encoding options: selects hash (evidence: `fingerprint.go`)
- Fingerprint processor → Elastic Beats: reads fields; writes target (evidence: `fingerprint.go`)
- Hash and encoding options → Fingerprint processor: provides hash and encoder (evidence: `fingerprint.go`)
