> For the complete documentation index, see [llms.txt](https://docs.quentin.legraverend.fr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.quentin.legraverend.fr/informatique/cloud-platform/elastic-stack/beats-agents.md).

# Beats agents

Installation et configuration des agents Beats.

## Installation

Je vous renvoie pour cela aux documentaitons officielles étant donné que cela dépend de votre système :

* [Filebeat](https://www.elastic.co/guide/en/beats/filebeat/current/setup-repositories.html)
* [Metricbeat](https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-installation-configuration.html#install)
* [Heartbeat](https://www.elastic.co/guide/en/beats/heartbeat/current/heartbeat-installation-configuration.html#installation)

## Configuration

### Filebeat

Filebeat est un agent qui va vous permettre de remonter les logs de votre système. Ici nous allons effectuer la configuration la plus simple possible. À savoir : activer uniquement le module système de manière à ce que ce dernier remonte les logs `syslog` et `auth`.

1. Commencer par configurer correctement la section ouput de `/etc/filebeat/filebeat.yml` qui devrait ressemble à cela :

```yaml
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["your_domain:9200"]
  protocol: "https"
  # Authentication credentials - either API key or username/password.
  #api_key: ""
  username: "filebeat_user"
  password: "filebeat_password"
```

En ce qui concernant les permissions dudit utilisateur, nous les aborderons ultérieurement.

2. Il faut ensuite activer le module système via la commande `filebeat modules enable system` puis éditer le fichier `/etc/filebeat/modules.d/system.yml` pour définir à `true` les deux `enabled`.
3. Il ne vous reste plus qu'à `systemctl start filebeat` et `systemctl enable filebeat` et le tour est joué.

### Metricbeat

Metricbeat est un agent qui, dans sa configuration la plus simple, remonte les métriques systèmes de l'hôte sur lequel il est installé.

1. Commencer par configurer correctement la section ouput de `/etc/metricbeat/metricbeat.yml` qui devrait ressemble à cela :

```yaml
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["your_domain:9200"]
  protocol: "https"
  # Authentication credentials - either API key or username/password.
  #api_key: ""
  username: "metricbeat_user"
  password: "metricbeat_password"
```

En ce qui concernant les permissions dudit utilisateur, nous les aborderons ultérieurement.

2. Il ne vous reste plus qu'à `systemctl start metricbeat` et `systemctl enable metricbeat` et le tour est joué.

### Heartbeat

Heartbeat permet de faire de l'uptime monitoring (monitorer la disponibilité d'un service depuis une ou plusieurs localisation.

1. Commencer par configurer correctement la section ouput de `/etc/heartbeat/heartbeat.yml` qui devrait ressemble à cela :

```yaml
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["your_domain:9200"]
  protocol: "https"
  # Authentication credentials - either API key or username/password.
  #api_key: ""
  username: "heartbeat_user"
  password: "heartbeat_password"
```

2. Ajoutez ensuite des monitors sous l'entrée `heartbeat.monitors` du fichier de configuration. Voyons ici deux exemples qui se passent d'explications.

#### HTTP

N'hésitez pas à consulter la [documentation officielle](https://www.elastic.co/guide/en/beats/heartbeat/current/monitor-http-options.html) si vous souhaitez plus de détails.

```
- type: http
  enable: true
  id: my_personal_website 
  name: Personal Website
  urls: ["https://my_personal_wesite.example.fr"]
  schedule: '@every 10s'
  check.request.method: HEAD
  check.response.status: [200]
  tags:
    - prod
    - on-premise
```

#### TCP

N'hésitez pas à consulter la [documentation officielle](https://www.elastic.co/guide/en/beats/heartbeat/current/monitor-tcp-options.html) si vous souhaitez plus de détails.

```
- type: tcp 
  enable: true
  id: my_postgresql 
  name: PostegreSQL Database
  hosts: ["mydb.example.fr"]
  ports: [5432]
  schedule: '@every 10s'
  tags:
    - cloud
    - dev
```

3. Il ne vous reste plus qu'à `systemctl start heartbeat-elastic` et `systemctl enable heartbeat-elastic` et le tour est joué.
