🧱 快速部署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 中查看日志
- 确保 Logstash 配置了
beats
输入(如前面提到的logstash.conf
)。 - 在 Kibana 中创建 Index Pattern,例如:
filebeat-*
或nginx-logs-*
- 进入 Kibana → Discover,查看日志数据。
✅ 可选增强
使用 Filebeat modules 自动解析日志格式:
sudo filebeat modules enable nginx system sudo filebeat setup
- 使用 TLS 加密 和 认证 保护数据传输。
- 使用 Kafka 或 Redis 作为中间缓冲层(适合高并发场景)。
✅ 验证日志采集
- 在 Kibana 中创建 Index Pattern:
filebeat-*
- 进入 Discover 页面查看日志数据