Implemente el sistema de recopilación de registros ELK a través de Docker


Nota: Las versiones de elasticsearch, kibana, logstash y filebeat deben ser consistentes. elasticsearch-head facilita la visualización del estado y los datos de índice de elasticsearch a través del navegador.

Principio de funcionamiento: después de recopilar registros a través de filebeat (motor de recopilación de datos liviano), envíelos a Logstash (motor de procesamiento y recopilación de datos) para filtrado, análisis, enriquecimiento, formato unificado y otras operaciones, y almacene los registros procesados ​​en Elasticsearch (búsqueda distribuida) Engine), y finalmente Kibana (plataforma de visualización) busca y muestra los datos indexados almacenados en Elasticsearch.

Descripción ambiental:

solicitud Versión
estibador 19.03.9
búsqueda elástica 7.17.2
kibana 7.17.2
logstash 7.17.2
archivo 7.17.2
cabezal de búsqueda elástico 5.0

1. Extracción de imágenes

docker pull  docker.elastic.co/elasticsearch/elasticsearch:7.17.2
docker pull  mobz/elasticsearch-head:5                           
docker pull  docker.elastic.co/kibana/kibana:7.17.2             
docker pull  docker.elastic.co/logstash/logstash:7.17.2     
docker pull  docker.elastic.co/beats/filebeat:7.17.2           

2. instalación de búsqueda elástica

  1. Prepare el archivo elasticsearch.yml
# 创建文件夹
mkdir /home/southgisdata/elasticsearch
# 创建 elasticsearch.yml 文件
vi  /home/southgisdata/elasticsearch/elasticsearch.yml
------------------------写入---------------------------
network.host: 0.0.0.0 
cluster.name: "docker-cluster" 
http.cors.enabled: true 
http.cors.allow-origin: "*" 
#cluster.initial_master_nodes: ["node-1"] 
xpack: 
 ml.enabled: false
 monitoring.enabled: false 
 security.enabled: false 
 watcher.enabled: false
#去除以下两项的注释,则开启身份认证
#xpack.security.enabled: true
#xpack.security.transport.ssl.enabled: true
------------------------结束---------------------------
  1. Ejecute el contenedor elasticsearch
docker run -d --restart=always -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v /home/southgisdata/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
--name elasticsearch docker.elastic.co/elasticsearch/elasticsearch:7.17.2
  1. Verifique
    la verificación del navegador: visite 192.168.1.100:9200
    Insertar descripción de la imagen aquí

Verificación de línea de comando: curl http://localhost:9200/_nodes/http?pretty
Insertar descripción de la imagen aquí

Nota: ¡ Si ocurre el siguiente error! ! !
Insertar descripción de la imagen aquí
El método de procesamiento es el siguiente:

  1. Modifique la memoria:
    en el archivo /etc/sysctl.conf, finalmente agregue el siguiente contenido:
vm.max_map_count=262144        
  1. Habilite la siguiente configuración del archivo de configuración elasticsearch.yml:
cluster.initial_master_nodes: ["node-1"]

3. instalación del cabezal de búsqueda elástico

  1. Ejecute el contenedor elasticsearch-head
docker run -d --restart=always -p 9100:9100 --name elasticsearch-head mobz/elasticsearch-head:5
  1. Modifique seller.js principalmente para permitir que los datos de índice se muestren en el lado derecho de la exploración de datos.
    Insertar descripción de la imagen aquí
# 创建文件夹
mkdir -p /home/southgisdata/elasticsearch-head
# 进入文件夹下
cd /home/southgisdata/elasticsearch-head
# 拷贝 vendor.js 文件到宿主机上
docker cp elasticsearch-head:/usr/src/app/_site/vendor.js ./
# 修改 vendor.js 文件内容
sed -i '/contentType:/s/application\/x-www-form-urlencoded/application\/json;charset=UTF-8/' vendor.js

sed -i '/var inspectData = s.contentType/s/application\/x-www-form-urlencoded/application\/json;charset=UTF-8/' vendor.js
  1. Ejecute el contenedor elasticsearch-head nuevamente
# 删除容器
docker rm -f elasticsearch-head
# 运行容器
docker run -d --restart=always -p 9100:9100 -v /home/southgisdata/elasticsearch-head/vendor.js:/usr/src/app/_site/vendor.js --name elasticsearch-head mobz/elasticsearch-head:5
  1. Verificación
    **Verificación del navegador:**Visite 192.168.1.100:9100
    Insertar descripción de la imagen aquí

4. instalación de logstash

  1. Prepare los archivos de configuración logstash.yml y pipelines.yml
# 创建文件夹
mkdir -p /home/southgisdata/logstash/config
# 创建 logstash.yml 文件
vi /home/southgisdata/logstash/config/logstash.yml
------------------------写入---------------------------
config:
  reload:
    automatic: true
    interval: 3s
xpack:
  management.enabled: false
  monitoring.enabled: false
------------------------结束---------------------------

# 创建 pipelines.yml 文件
vi /home/southgisdata/logstash/config/pipelines.yml
------------------------写入---------------------------
- pipeline.id: test
  path.config: "/usr/share/logstash/pipeline/logstash-filebeat.conf"
------------------------结束---------------------------
  1. Prepare el archivo de configuración logstash-filebeat.conf
# 创建文件夹
mkdir -p /home/southgisdata/logstash/pipeline
# 创建 logstash.yml 文件
vi /home/southgisdata/logstash/pipeline/logstash-filebeat.conf
------------------------写入---------------------------
# 访问端口配置
input {
  beats {
    port => 5044
  }
}

# 过滤条件配置
#filter{
#  grok{
#    match => {
#    "message" => "%{COMBINEDAPACHELOG}"
#   }
#  }
#}

# 输出到ES配置
output {
  elasticsearch {
    hosts => ["http://192.168.1.100:9200"]	            
    index => "nginx_log"
  }
}
------------------------结束---------------------------
  1. Ejecute el contenedor logstash
docker run -d  -p 5044:5044 \
-v /home/southgisdata/logstash/pipeline:/usr/share/logstash/pipeline \
-v /home/southgisdata/logstash/config:/usr/share/logstash/config \
--name logstash docker.elastic.co/logstash/logstash:7.17.2
  1. Verificación:
    tarda unos dos minutos en iniciarse, después de eso, intente acceder a la web y podrá ver el índice de nginx_log en la interfaz web de es-head.
    Insertar descripción de la imagen aquí

5. instalación de kibana

  1. Prepare el archivo de configuración kibana.yml
# 创建文件夹
mkdir -p /home/southgisdata/kibana
# 创建 kibana.yml 配置文件
vi /home/southgisdata/kibana/kibana.yml
------------------------写入---------------------------
server.name: kibana
# 允许所有地址访问
server.host: "0.0.0.0"
# elasticsearch的地址
elasticsearch.hosts: ["http://192.168.1.100:9200/"] 
xpack.monitoring.ui.container.elasticsearch.enabled: true
------------------------写入---------------------------
  1. Ejecutar contenedor kibana
docker run -d --restart=always -p 5601:5601 \
-v /home/southgisdata/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \
--name kibana docker.elastic.co/kibana/kibana:7.17.2
  1. Verificación
    Verifique elasticsearch-head y encontrará que hay varios índices más, que son generados por kibanna.
    Insertar descripción de la imagen aquí

6. instalación de filebeat

  1. Prepare el archivo de configuración filebeat.yml
# 创建文件夹
mkdir -p /home/southgisdata/filebeat
# 创建 kibana.yml 配置文件
vi /home/southgisdata/filebeat/filebeat.yml
------------------------写入---------------------------
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/access.log   #日志文件路径

output.logstash:
  hosts: ["192.168.1.100:5044"]  #logstash访问地址
------------------------写入---------------------------
  1. La ejecución del contenedor filebeat
    asigna el archivo de configuración de filebeat y el registro nginx, de modo que cuando el registro nginx cambie, los archivos asignados también se sincronizarán.
docker run -d --restart=always --name filebeat \
-v /home/southgisdata/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /usr/local/nginx/logs/access.log:/var/log/access.log \
-d docker.elastic.co/beats/filebeat:7.17.2
  1. Verificar
    Verifique el índice de nginx_log y podrá ver los datos de registro de nginx.
    Insertar descripción de la imagen aquí

7. Muestra los datos recopilados a través de kibana.

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_41166785/article/details/124293408
Recomendado
Clasificación