yagpcc (Yet Another Greenplum Command Center) is a diagnostic and monitoring agent for Greenplum clusters. It collects query and session telemetry from the database (via the yagp-hooks-collector extension), aggregates it across Master and Segment hosts, and exposes it over gRPC for real-time and historical use.
- Collects query and session telemetry from the database (via the yagp-hooks-collector extension).
- Aggregates it across Master and Segment hosts.
- Exposes it over gRPC for real-time and historical use.
| Document | Description |
|---|---|
| Service architecture | Services, roles, interfaces (UDS, TCP, libpq), and data flow. |
| Architecture overview | High-level design and system diagram (with Mermaid). |
| API description | gRPC API reference (GetGPInfo, ActionService, messages, metrics). |
Prerequisites: Go 1.25+ (see go.mod).
Build the binary (generates protos and outputs to devbin/yagpcc):
make buildOr build without regenerating protos:
go build -o devbin/yagpcc ./cmd/serverThe binary is produced at devbin/yagpcc.
The application reads yagpcc.yaml from the current working directory. A valid config file is required to run.
Config files differ by role:
- Master — runs on the Greenplum master host: connects to the cluster, pulls data from segments, and exposes the aggregated gRPC API. Requires
role: masterandmaster_connection(and typicallysegment_pull_rate_sec,segment_pull_threads). - Segment — runs on each segment host: collects local metrics and serves them to the master. Requires
role: segmentandlisten_port.
Example configs are in cmd/server/:
| File | Role | Use as |
|---|---|---|
cmd/server/yagpcc_master.yaml |
master | Template for master node: set master_connection.addrs, master_connection.password, and optionally sslrootcert. |
cmd/server/yagpcc_segment.yaml |
segment | Template for segment nodes. |
Copy or adapt the right file to yagpcc.yaml in the directory from which you will run the binary (see Running).
Minimal structure:
Master (yagpcc.yaml):
role: master
listen_port: 1432
segment_pull_rate_sec: 3
segment_pull_threads: 2
master_connection:
addrs:
- host1:6432
- host2:6432
sslmode: allow
password: "your_password"
app:
logging:
level: debugSegment (yagpcc.yaml):
role: segment
listen_port: 1432
app:
logging:
level: debugAdjust listen_port, logging, and other options as needed (see internal/config/config.go for full options).
- Use a config file for the correct role (master or segment) and save it as
yagpcc.yamlin the directory where you will run the binary. - From that directory, run:
./devbin/yagpccThe binary expects yagpcc.yaml in the current working directory; it does not take a config path argument.