# Connect Linux hosts

## Supported Environments

We currently support running on eBPF-enabled linux machines (See more [Kernel requirements for eBPF sensor](/getting-started/requirements/kernel-requirements-for-ebpf-sensor.md))

{% hint style="info" %}
In case your linux machine doesn't comply with the Kernel requirements, post installation, run the following commands:\
\
`echo "FLORA_EBPFENABLED=false" | sudo tee -a /etc/opt/groundcover/env.conf > /dev/null`\
`sudo systemctl restart groundcover-sensor`
{% endhint %}

Supported architectures: `AMD64` + `ARM64`

For the following providers, we will fetch the machine metadata from the provider's API.

<table><thead><tr><th width="144" align="center">Provider</th><th width="119" align="center">Supported</th></tr></thead><tbody><tr><td align="center">AWS</td><td align="center">✅</td></tr><tr><td align="center">GCP</td><td align="center">✅</td></tr><tr><td align="center">Azure</td><td align="center">✅</td></tr><tr><td align="center">Linode</td><td align="center">✅</td></tr></tbody></table>

## Sensor capabilities

* Infrastructure Host metrics: CPU/Memory/Disk usage
* Logs
  * Natively from docker containers running on the machine
  * JournalD ([requires configuration](https://docs.groundcover.com/customization/customize-usage/custom-logs-collection#configure-journal-logs))
  * Static log files on the machine ([requires configuration](https://docs.groundcover.com/customization/customize-usage/custom-logs-collection#configure-log-file-targets))
* Traces
  * Natively from docker containers running on the machine
* APM metrics and insights from the traces

\
How to install?
---------------

Installation currently requires running a script on the machine.

The script will pull the latest sensor version and install it as a service: **groundcover-sensor (requires privileges)**

### Install/Upgrade existing sensor:

```bash
curl -fsSL https://groundcover.com/install-groundcover-sensor.sh | sudo env API_KEY='{ingestion_Key}' GC_ENV_NAME='{selected_Env}' GC_DOMAIN='{BYOC_ENDPOINT}' bash -s -- install
```

Where:

* {ingestion\_Key} - A dedicated ingestion key, you can generate or find existing ones from Settings -> Access -> Ingestion Keys
  * Ingestion Key needs to be of Type `Sensor`
* {BYOC\_Endpoint} - Your BYOC public ingestion endpoint
* {selected\_Env} - The **Environment** that will group those machines on the cluster drop down in the top right corner (We recommend setting a separate one for non k8s deployments)

### Check installed sensor status:

* Check service status: `systemctl status groundcover-sensor`
* View sensor logs: `journalctl -u groundcover-sensor`

{% hint style="info" %}
Initial data may take a few minutes to appear in the app after installation
{% endhint %}

### Remove installed sensor:

```bash
curl -fsSL https://groundcover.com/install-groundcover-sensor.sh | sudo bash -s -- uninstall
```

## Customize sensor configuration:

The sensor supports overriding its default configuration by writing to the file is located in:

`/etc/opt/groundcover/overrides.yaml`.\
\
After writing it you should restart the sensor service using:

`systemctl restart groundcover-sensor`

Example 1 - override Docker max log line size:

```bash
echo "# Local overrides to sensor configuration
k8sLogs:
  scraper:
    dockerMaxLogSize: 102400
" | sudo tee /etc/opt/groundcover/overrides.yaml && sudo systemctl restart groundcover-sensor
```

Example 2 - add static labels to your metrics:

```yaml
// add custom static labels to metrics
pipelines:
  metrics:
    additionalMetricLabels:
      label1: "label1_value"
      label2: "label2_value"
```


---

# 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.groundcover.com/getting-started/installation-and-updating/connect-linux-hosts.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.
