tech:notes_elasticsearch_logstash_kibana
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tech:notes_elasticsearch_logstash_kibana [2025/11/14 08:46] – Jean-Baptiste | tech:notes_elasticsearch_logstash_kibana [2026/06/29 14:33] (Version actuelle) – Jean-Baptiste | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | < | ||
| + | {{tag> | ||
| + | |||
| + | # Notes Elasticsearch Logstash Kibana | ||
| + | |||
| + | Voir : | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | Voir aussi : | ||
| + | * Loki (remplace Elasticsearch Logstash) | ||
| + | ** Voir [Loki, centralisation de logs à la sauce Prometheus](https:// | ||
| + | * https:// | ||
| + | * Metricbeat | ||
| + | * [Promtail & Loki](https:// | ||
| + | |||
| + | **OpenSearch** remplace ElasticSearch | ||
| + | |||
| + | Vérif syntax Grok : https:// | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ## Notes perso | ||
| + | |||
| + | A lire | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | API | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | RSYSLOG | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | Fluentd | ||
| + | * https:// | ||
| + | |||
| + | NGINX JSON | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | DOCKER | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | |||
| + | |||
| + | ## Elasticsearch | ||
| + | |||
| + | ### Config | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | -Xms512m | ||
| + | -Xmx512m | ||
| + | ~~~ | ||
| + | |||
| + | Sécurité : | ||
| + | Voir : https:// | ||
| + | |||
| + | `/ | ||
| + | ~~~yaml | ||
| + | xpack.security.enabled: | ||
| + | ~~~ | ||
| + | |||
| + | Attention, cette commande ne peut s’exécuter qu'une seule fois ! | ||
| + | ~~~bash | ||
| + | / | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Logstash | ||
| + | |||
| + | Voir aussi : | ||
| + | * Filebeat | ||
| + | * Fluentd | ||
| + | |||
| + | |||
| + | ### Config | ||
| + | |||
| + | Conf Java Mem | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | ## JVM configuration | ||
| + | |||
| + | # Xms represents the initial size of total heap space | ||
| + | # Xmx represents the maximum size of total heap space | ||
| + | |||
| + | #-Xms1g | ||
| + | #-Xmx1g | ||
| + | -Xms512m | ||
| + | -Xmx512m | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Exemple Nginx | ||
| + | |||
| + | Voir : https:// | ||
| + | |||
| + | |||
| + | Note : préférer Filebeat | ||
| + | |||
| + | `/ | ||
| + | ~~~ruby | ||
| + | input { | ||
| + | file { | ||
| + | path => ["/ | ||
| + | type => " | ||
| + | } | ||
| + | } | ||
| + | filter { | ||
| + | if [fileset][module] == " | ||
| + | if [fileset][name] == " | ||
| + | grok { | ||
| + | match => { " | ||
| + | remove_field => " | ||
| + | } | ||
| + | mutate { | ||
| + | add_field => { " | ||
| + | } | ||
| + | date { | ||
| + | match => [ " | ||
| + | remove_field => " | ||
| + | } | ||
| + | useragent { | ||
| + | source => " | ||
| + | target => " | ||
| + | remove_field => " | ||
| + | } | ||
| + | geoip { | ||
| + | source => " | ||
| + | #target => " | ||
| + | } | ||
| + | } | ||
| + | else if [fileset][name] == " | ||
| + | grok { | ||
| + | match => { " | ||
| + | remove_field => " | ||
| + | } | ||
| + | mutate { | ||
| + | rename => { " | ||
| + | } | ||
| + | date { | ||
| + | match => [ " | ||
| + | remove_field => " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | output { | ||
| + | elasticsearch { | ||
| + | hosts => localhost | ||
| + | | ||
| + | #user => elastic | ||
| + | #password => PassWord | ||
| + | | ||
| + | # | ||
| + | #index => " | ||
| + | index => " | ||
| + | } | ||
| + | # stdout { codec => rubydebug } | ||
| + | } | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Debug | ||
| + | |||
| + | ~~~bash | ||
| + | su - logstash -s /bin/bash | ||
| + | |||
| + | # Validation de la conf / vérif de la syntax | ||
| + | / | ||
| + | |||
| + | # Debug | ||
| + | / | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Autres | ||
| + | |||
| + | Notes en vrac | ||
| + | ~~~ | ||
| + | file { | ||
| + | path => "/ | ||
| + | start_position => " | ||
| + | type => " | ||
| + | } | ||
| + | |||
| + | elasticksearch | ||
| + | |||
| + | -p 9200-e discovery.type=single-node | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Kibana | ||
| + | |||
| + | ### Nginx reverse proxy | ||
| + | |||
| + | `/ | ||
| + | ~~~nginx | ||
| + | server { | ||
| + | server_name kibana.acme.fr; | ||
| + | |||
| + | root / | ||
| + | |||
| + | location / { | ||
| + | proxy_pass http:// | ||
| + | include / | ||
| + | client_max_body_size 10M; | ||
| + | |||
| + | proxy_http_version 1.1; | ||
| + | proxy_set_header Upgrade $http_upgrade; | ||
| + | proxy_set_header Connection " | ||
| + | proxy_cache_bypass $http_upgrade; | ||
| + | } | ||
| + | |||
| + | access_log / | ||
| + | error_log / | ||
| + | |||
| + | listen [::]:443 ssl ipv6only=on; | ||
| + | listen 443 ssl; # managed by Certbot | ||
| + | ssl_certificate / | ||
| + | ssl_certificate_key / | ||
| + | include / | ||
| + | ssl_dhparam / | ||
| + | } | ||
| + | |||
| + | server { | ||
| + | if ($host = kibana.acme.fr) { | ||
| + | return 301 https:// | ||
| + | } # managed by Certbot | ||
| + | |||
| + | |||
| + | listen 80; | ||
| + | listen [::]:80; | ||
| + | |||
| + | server_name kibana.acme.fr; | ||
| + | return 404; # managed by Certbot | ||
| + | } | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Sécurité | ||
| + | |||
| + | `/ | ||
| + | ~~~yaml | ||
| + | elasticsearch.username: | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | / | ||
| + | / | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Filebeat | ||
| + | |||
| + | Voir aussi fluentd | ||
| + | |||
| + | Dans certain cas, remplace Logstash | ||
| + | |||
| + | `filebeat.yml` | ||
| + | ~~~yaml | ||
| + | output.elasticsearch: | ||
| + | hosts: [" | ||
| + | username: " | ||
| + | password: " | ||
| + | |||
| + | setup.kibana: | ||
| + | host: " | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | filebeat modules enable system nginx | ||
| + | filebeat setup | ||
| + | filebeat -e | ||
| + | ~~~ | ||
| + | |||
| + | Il suffit de chercher des Dashboard commençant par " | ||
| + | |||
| + | |||
| + | ### Brouillons | ||
| + | |||
| + | ~~~bash | ||
| + | filebeat setup -e \ | ||
| + | -E output.logstash.enabled=false \ | ||
| + | -E output.elasticsearch.hosts=[' | ||
| + | -E output.elasticsearch.username=filebeat_internal \ | ||
| + | -E output.elasticsearch.password=YOUR_PASSWORD \ | ||
| + | -E setup.kibana.host=localhost: | ||
| + | |||
| + | |||
| + | filebeat setup -e \ | ||
| + | -E ' | ||
| + | -E ' | ||
| + | -E ' | ||
| + | -E ' | ||
| + | | ||
| + | filebeat keystore create | ||
| + | #filebeat keystore add ES_PWD | ||
| + | filebeat keystore add elastic | ||
| + | filebeat keystore list | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | FIXME | ||
| + | |||
