# Beats agents

## 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é.


---

# 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.quentin.legraverend.fr/informatique/cloud-platform/elastic-stack/beats-agents.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.
