Tesserae
e‑ink 디스플레이용 무료 오픈소스 대시보드 서버, 브라우저에서 대시보드 구성·프레임 렌더링·MQTT·REST 전송, 자체 호스팅·추적 없음
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Go daemon that receives Dell PowerStore CEPA audit events (HTTP PUT / XML) and forwards them to a SIEM (GELF, syslog, or Beats) or writes them as Windows EventLog entries — native ReportEvent calls on Windows, binary .evtx files everywhere else. No external dependencies — single static binary.
ReportEvent API on Windows, with a compiled message resource so Event Viewer and Event Log API readers render the real event description (not placeholder text) for IDs 4660/4663/4670; native .evtx files on other platforms/health on every request, with a warning logged when fewer than 30 days remain/metrics endpoint on a dedicated port (default 9228)dashboards/cee-exporter.json — see the
screenshot and caveats.
It is not validated by CI — see docs/PROMISES.md.cee-exporter.exe install) and a hardened Linux systemd unitslog) and /health endpointDocker (recommended):
12228 below is CEE's own listener port, borrowed as a default. The
CEE-to-partner port has no assigned default — you choose it, and it must match
the port in CEE's EndPoint. If CEE runs on this host it already owns 12228, so
publish a different host port.
docker run -d --name cee-exporter \
-p 12228:12228 \
-v ./config.toml:/etc/cee-exporter/config.toml:ro \
ghcr.io/fjacquet/cee-exporter:latest
Binary:
# Download from GitHub Releases, then:
./cee-exporter -config config.toml
Minimal config.toml:
[output]
type = "gelf"
gelf_host = "192.168.1.50" # your Graylog IP
gelf_port = 12201
gelf_protocol = "tcp" # use tcp for production
[listen]
addr = "0.0.0.0:12228"
CEE will not send events to a consumer it has not registered, and it only
registers an identity present in a table compiled into its own binary
(CGuidStore, keyed by (friendlyName, facility) → GUID). A self-generated
GUID is refused with unknown or invalid GUID; CEE then answers every array
heartbeat 0x16 CEPP_NOT_FOUND and the array silently discards its events.
Every observable stays green while nothing is published.
So the [cepa] block is not optional in that topology:
[cepa]
friendly_name = "PeerSoftwareCollector" # must match CEE's EndPoint partner id
guid = "49f4da0f-055f-401c-9f83-a95ce61447f6" # must be that name's GUID for the facility
with CEE configured as
EndPoint = PeerSoftwareCollector@http://<this-host>:<port>.
These are other vendors' registered identities — there is no mechanism for a
third-party consumer to obtain its own. Choose deliberately: CEE will report
your consumer under that name, and it would collide with a genuine deployment
of that product on the same CEE host. Diagnosing any of this needs Debug=63
on the CEE side; at the default Debug=1 CEE says nothing about why it refused.
Arrays that speak CEPA directly (PowerScale/OneFS) need none of this.
Check health:
curl http://localhost:12228/health
Requires Go 1.27.2, no CGO.
make build-linux # Linux/amd64 → ./cee-exporter
make build-windows # Windows/amd64 → ./cee-exporter.exe
make build-darwin # macOS/native → ./cee-exporter-darwin
make test
make lint
(make build alone runs go build -v ./... to check compilation — it produces no binary.)
Full operator guide — config reference, TLS setup, CEPA registration, troubleshooting:
fjacquet.github.io/cee-exporter
See LICENSE.
deploy/compose.yaml brings up Prometheus and Grafana preconfigured against a
running cee-exporter, with the dashboard and alert rules provisioned:
docker compose -f deploy/compose.yaml up -d
# Grafana on :3000, Prometheus on :9090
The exporter itself is deliberately not part of the stack — containerising it
would change the source address CEE sees, which is the remote label on the
publisher-liveness metrics.