ELK安装部署手册

本文主要探讨开发过程中,如何快速构建一个ELK工具,帮助调试ELK,不涉及正式环境的部署。
用当前最新版本 Elasticsearch 8.17.0 、Kibana 8.17.0 、Logstash 8.17.0,
ELK 8.* 版本默认启用SSL,由于单纯的开发需要,采用最简化配置,手动关闭了安全验证。

后续会介绍,Nlog 和 ELK集成相关内容,以及ELK 8.* 和 Net 8.0集成中遇见的问题

1. 简介

Elastic Stack核心产品包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)等等。能够安全可靠地从任何来源获取任何格式的数据,然后对数据进行搜索、分析和可视化。

2.系统要求

  • 操作系统:Linux、macOS 或 Windows
  • 内存:至少 4 GB(推荐 8 GB 或更多)
  • Docker 和 Docker Compose

3. 安装 Docker

如果您尚未安装 Docker 和 Docker Compose,请按照以下步骤进行安装:

在 Windows 上安装 Docker

Docker 官方网站 下载并安装 Docker Desktop

4. Docker 部署 Elasticsearch,Kibana,Logstash

创建Docker Compose 文件

在工作目录创建一个 docker-compose.yml 文件

services:
  elasticsearch:
    image: elasticsearch:8.17.0
    container_name: elasticsearch
    environment:
      - node.name=es01
      - cluster.name=es-cluster
      - discovery.type=single-node
      - xpack.security.enabled=false
      - xpack.ml.enabled=false
      - xpack.watcher.enabled=false
      - xpack.graph.enabled=false
    ports:
      - "9200:9200"
    #   - "9300:9300"
    networks:
      - elk
 
  logstash:
    image: logstash:8.17.0
    container_name: logstash
    environment:
      - xpack.monitoring.enabled=false
      - xpack.monitoring.elasticsearch.hosts=http://elasticsearch:9200
    ports:
      - "5044:5044"
    networks:
      - elk
    volumes:
      - ./logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf

  kibana:
    image: kibana:8.17.0
    container_name: kibana
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
      - xpack.security.enabled=false
    ports:
      - "5601:5601"
    networks:
      - elk
 
networks:
  elk:
    driver: bridge

logstash 配置文件

在 ./logstash/pipeline 目录下创建 logstash.conf 配置文件

input {
   http {
    host => "0.0.0.0"
    port => 5044
  }
}

filter {  
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}
 
output {
  elasticsearch {
    hosts => ["http://elasticsearch:9200"]
    index => "logstash-%{+yyyy.MM.dd}"
   }
}

目录结构

ELK-Install/
├── docker-compose.yml
├── logstash/
│ └── pipeline/
│ └── logstash.conf

执行docker-compose 命令

docker-compose up -d

等待镜像下载完成

ELK启动

验证是否安装完成

alt text

elasticsearch验证
浏览器访问 http://localhost:9200

验证Kibana
浏览器访问 http://localhost:5601

验证logstash
浏览器访问 http://localhost:5044/

演示ELK 简单使用

Elasticsearch 直接保存数据

curl --location --request PUT 'http://localhost:9200/log-index/_doc/1' \
--header 'Content-Type: application/json' \
--header 'Accept: */*' \
--header 'Host: localhost:9200' \
--header 'Connection: keep-alive' \
--data-raw '{
    "name": "1984",
    "author": "George Orwell",
    "release_date": "1985-06-01",
    "page_count": 328
}'

Response 返回结果

{
    "_index": "log-index",
    "_id": "1",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}

按照步骤配置Kibana


选择自己需要的时间字段,此处可以选择release_date,大多数情况选择 @timestamp

查询数据

通过logstash 保存数据到elasticsearch

curl --location --request POST 'http://localhost:5044/' \
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \
--header 'Content-Type: application/json' \
--header 'Accept: */*' \
--header 'Host: localhost:5044' \
--header 'Connection: keep-alive' \
--data-raw '{
    "name": "2025",
    "author": "logstash",
    "release_date": "2025-01-12",
    "page_count": 1000
}'


常见问题

由于网络情况不同,docker 部署环境不同,在docker容器中访问 http://elasticsearch:9200 可能出现访问拒绝的情况,可以修改windows的hosts配置,在其中增加 127.0.0.1 elasticsearch

通过以上步骤,就可以搭建一个属于自己的ELK,请尽情使用它吧。

posted @ 2025-01-12 17:28  海盗迎风浪  阅读(870)  评论(0)    收藏  举报