# Bindplane Collector

Bindplane manages three different Kubernetes Collector types. Node, Cluster, and Gateway. Each collector type serves a unique purpose within the cluster. They can be used together or independently.

## Node

The Bindplane Node agents are deployed as a [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/). The Node agent scales up and down with the size of the cluster. Each agent is responsible for collecting logs and metrics from the node it is running on.

Additionally, the Node agent supports receiving OTLP metrics, traces, and logs from other services running in the cluster, via [clusterIP](https://kubernetes.io/docs/concepts/services-networking/service/#type-clusterip) service.

> **Warning**\
> The Node agent runs with pod `spec.toleration` `operator: "Exists"`. This ensures the DaemonSet deploys to all nodes in the cluster, regardless of their taints. Remove the toleration if you require more fine grained control.

### **Supported Sources**

* [Bindplane Gateway](https://docs.bindplane.com/integrations/sources/bindplane-gateway)
* [Custom](https://docs.bindplane.com/integrations/sources/custom)
* [Kubernetes Container Logs](https://docs.bindplane.com/integrations/sources/kubernetes-container-logs)
* [Kubernetes Kubelet Metrics](https://docs.bindplane.com/integrations/sources/kubernetes-kubelet-metrics)
* [OpenTelemetry (OTLP)](https://docs.bindplane.com/integrations/sources/opentelemetry-otlp)
* [Kubernetes Prometheus](https://docs.bindplane.com/integrations/sources/kubernetes-prometheus-node)

### **Persistence**

The Node agent makes use of [Host Path](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath) volumes to persist the agent configuration file and exporter persistent queue directories.

The Host Path `/var/lib/observiq/otelcol/container`is mounted at `/etc/otel/storage` within the agent container.

Persistence allows the agents to operate during a Bindplane or backend outage.

## Cluster

The Bindplane Cluster agent is deployed as a [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/). The Cluster agent operates a single pod and is responsible for collecting cluster-level metrics and events (logs). The Cluster agent is not intended to scale above one pod, therefore it is limited to sources that should run on a single replica to avoid duplicate telemetry.

### **Supported Sources**

* [AWS S3 Event](https://docs.bindplane.com/integrations/sources/aws-s3-event)
* [AWS S3 Rehydration](https://docs.bindplane.com/integrations/sources/aws-s3-rehydration)
* [Azure Blob Rehydration](https://docs.bindplane.com/integrations/sources/azure-blob-rehydration)
* [Bindplane Gateway](https://docs.bindplane.com/integrations/sources/bindplane-gateway)
* [CrowdStrike FDR](https://docs.bindplane.com/integrations/sources/crowdstrike-fdr)
* [Custom](https://docs.bindplane.com/integrations/sources/custom)
* [Google Cloud Storage Rehydration](https://docs.bindplane.com/integrations/sources/google-cloud-storage-rehydration)
* [Kubernetes Cluster Metrics](https://docs.bindplane.com/integrations/sources/kubernetes-cluster-metrics)
* [Kubernetes Events](https://docs.bindplane.com/integrations/sources/kubernetes-cluster-events)

## Gateway

The Bindplane Gateway agents are deployed as a [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) or [StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/). The Gateway agent is intended to operate as an aggregation layer, allowing other agents or services to forward metrics, traces, and logs to the gateway for additional processing before being shipped to a backend.

The Gateway agent is optional for monitoring a Kubernetes cluster. It should be used during the following situations:

* Offload processing from the Node and Cluster agent
* Limit backend access to a dedicated set of agents.
* You already have a solution for logs and metrics, and need a solution to receive telemetry from services running in the cluster.

### **Supported Sources**

* [AWS S3 Event](https://docs.bindplane.com/integrations/sources/aws-s3-event)
* [Bindplane Gateway](https://docs.bindplane.com/integrations/sources/bindplane-gateway)
* [Custom](https://docs.bindplane.com/integrations/sources/custom)
* [Google Cloud Pub/Sub](https://docs.bindplane.com/integrations/sources/google-cloud-pubsub)
* [OpenTelemetry (OTLP)](https://docs.bindplane.com/integrations/sources/opentelemetry-otlp)
* [Splunk HEC](https://docs.bindplane.com/integrations/sources/splunk-hec)
* [Splunk TCP](https://docs.bindplane.com/integrations/sources/splunk-tcp)
* [Syslog](https://docs.bindplane.com/integrations/sources/syslog)
* [TCP Logs](https://docs.bindplane.com/integrations/sources/tcp)
* [UDP Logs](https://docs.bindplane.com/integrations/sources/udp)

### **Persistence**

The Gateway agent uses a [Volume Claim Template](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#volume-claim-templates) to generate and assign volumes to each Gateway agent pod. The volume contains the agent's configuration file and exporter persistent queue directories. If an agent pod is killed or restarted for any reason, the volume assigned to that pod will be attached to the new instance of the pod, allowing the new pod to continue where the previous instance left off.

Persistence allows the agents to operate during a Bindplane or backend outage.

## Limitations

### Change Configurations

Kubernetes agents are bound to a single configuration. Changes to that configuration are supported, however, changing to a new configuration is not supported. To change to a new configuration, you can re-deploy the agents by using the Install Collectors page and selecting your new configuration.

### Non Kubernetes Collectors

Collectors running outside of Kubernetes can be installed as long as ingress has been configured. See the [getting started guide](https://docs.bindplane.com/readme/install-your-first-collector) for collector installation instructions.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bindplane.com/deployment/kubernetes/collector/bindplane-collector.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
