🧱 快速部署ELK,此方案部署后ELK无密码访问

✅ 1. 创建项目主目录

打开终端或命令行工具,运行:

mkdir -p elk-docker/logstash/pipeline
cd elk-docker

这会创建如下结构:

elk-docker/
└── logstash/
    └── pipeline/

✅ 2. 创建 docker-compose.yml 文件

elk-docker/ 目录下创建文件:

touch docker-compose.yml

然后编辑它(使用你喜欢的编辑器,如 VS Code、vim、nano):

nano docker-compose.yml

粘贴以下内容进去:

version: '3.7'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.4.3
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
      - ES_JAVA_OPTS=-Xms1g -Xmx1g
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - esdata:/usr/share/elasticsearch/data
    networks:
      - elk

  logstash:
    image: docker.elastic.co/logstash/logstash:8.4.3
    container_name: logstash
    ports:
      - "5044:5044"
      - "9600:9600"
    volumes:
      - ./logstash/pipeline:/usr/share/logstash/pipeline
    depends_on:
      - elasticsearch
    networks:
      - elk

  kibana:
    image: docker.elastic.co/kibana/kibana:8.4.3
    container_name: kibana
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    depends_on:
      - elasticsearch
    networks:
      - elk

volumes:
  esdata:

networks:
  elk:
    driver: bridge

保存并退出。

✅ 3. 创建 Logstash 配置文件

进入 logstash/pipeline 目录:

cd logstash/pipeline

创建配置文件:

touch logstash.conf

编辑内容:

nano logstash.conf

粘贴以下内容作为示例:

input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => { "message" => "%{COMMONAPACHELOG}" }
  }
}

output {
  elasticsearch {
    hosts => ["http://elasticsearch:9200"]
    index => "logstash-%{+YYYY.MM.dd}"
  }
}

保存并退出。

🚀 启动 ELK 服务

回到项目根目录:

cd ../../

启动服务:

docker-compose up -d

✅ 验证部署

  • Elasticsearch: http\://localhost:9200
  • Kibana: http\://localhost:5601

✅自此ELK部署完成。


下面介绍如何采集一台ubuntu服务器的日志信息

要采集一台 Ubuntu 服务器的日志信息,最推荐的方法是使用 Filebeat 安装在该服务器上,然后将日志发送到你的 ELK Stack(Logstash 或 Elasticsearch)。下面是完整的步骤:

📍 场景说明

  • 目标服务器:Ubuntu,运行 Filebeat
  • 日志类型:系统日志(如 /var/log/syslog/var/log/auth.log)、应用日志(如 Nginx)
  • 日志流向:Filebeat → Logstash → Elasticsearch → Kibana

🧰 步骤一:在 Ubuntu 上安装 Filebeat

1. 添加 Elastic APT 源

curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list

sudo apt update

2. 安装 Filebeat

sudo apt install filebeat

⚙️ 步骤二:配置 Filebeat

编辑配置文件:

sudo vim /etc/filebeat/filebeat.yml

下面是一份适用于 Ubuntu 服务器 的完整 filebeat.yml 配置文件,用于采集系统日志、Nginx 日志,并通过 Logstash 转发到 Elasticsearch。

📄 完整 filebeat.yml 配置文件(适用于 Ubuntu)

# ============================== Filebeat Inputs ===============================

filebeat.inputs:
  # 系统日志
  - type: log
    enabled: true
    paths:
      - /var/log/syslog
      - /var/log/auth.log

  # Nginx 日志
  - type: log
    enabled: true
    paths:
      - /var/log/nginx/access.log
      - /var/log/nginx/error.log
    fields:
      service: nginx
    fields_under_root: true

# ============================== Filebeat Modules =============================

# 启用系统模块(可选)
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

# ======================= Elasticsearch or Logstash Output ====================

# 使用 Logstash 作为输出
output.logstash:
  hosts: ["<LOGSTASH_SERVER_IP>:5044"]

# ============================== Kibana Setup =================================

setup.kibana:
  host: "<KIBANA_SERVER_IP>:5601"

# ============================== Processors ===================================

processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  - add_fields:
      target: ""
      fields:
        environment: production
        region: ubuntu-server

# ============================== Logging ======================================

logging.level: info
logging.to_files: true
logging.files:
  path: /var/log/filebeat
  name: filebeat
  keepfiles: 7
  permissions: 0644

# ============================== Monitoring ===================================

monitoring.enabled: true
monitoring.elasticsearch:
  hosts: ["http://<ELASTICSEARCH_SERVER_IP>:9200"]

📝 使用说明

  • 替换以下字段为你的实际地址:

    • <LOGSTASH_SERVER_IP>:Logstash 所在服务器的 IP 地址
    • <KIBANA_SERVER_IP>:Kibana 所在服务器的 IP 地址
    • <ELASTICSEARCH_SERVER_IP>:Elasticsearch 所在服务器的 IP 地址(用于监控)

🚀 启动 Filebeat

sudo systemctl enable filebeat
sudo systemctl start filebeat

查看状态:

sudo systemctl status filebeat

步骤四:在 ELK 中查看日志

  1. 确保 Logstash 配置了 beats 输入(如前面提到的 logstash.conf)。
  2. 在 Kibana 中创建 Index Pattern,例如:filebeat-*nginx-logs-*
  3. 进入 Kibana → Discover,查看日志数据。

✅ 可选增强

  • 使用 Filebeat modules 自动解析日志格式:

    sudo filebeat modules enable nginx system
    sudo filebeat setup
    
  • 使用 TLS 加密认证 保护数据传输。
  • 使用 KafkaRedis 作为中间缓冲层(适合高并发场景)。

✅ 验证日志采集

  • 在 Kibana 中创建 Index Pattern:filebeat-*
  • 进入 Discover 页面查看日志数据
Copyright © https://yan-jian.com 2023 all right reserved更新时间: 2025-07-29 09:35:21

results matching ""

    No results matching ""