本文将详细介绍如何搭建 ELK Stack 的最新版本 6.3.0,使用 Filebeat 进行日志收集,统一存储到 Elasticsearch,并通过 Kibana 展示数据。以下内容将涵盖从安装到配置的完整过程,确保您的日志管理和监控环境高效运行。
环境架构概述
Filebeat → Elasticsearch → Kibana → 浏览器
1. 安装 Elasticsearch 和 Kibana
首先,在用于存放日志的机器上安装 Elasticsearch 和 Kibana。
安装 Kibana
可以直接使用 RPM 包进行安装:
rpm -ivh kibana-6.3.0-x86_64.rpm
默认配置文件位于 /etc/kibana/
,需修改以下配置项:
server.port: 5601
server.host: "YOUR_HOST_IP"
elasticsearch.url: "https://YOUR_ELASTICSEARCH_IP:9200"
重启 Kibana 服务:
service kibana restart
访问 Kibana 状态接口以确认安装成功:
curl https://10.120.93.150:5601/api/status
查看日志:
tail -f /var/log/kibana/kibana.std*
安装 Elasticsearch
由于 Elasticsearch 不能以 root 用户运行,建议使用 tar 包安装,切换为非 root 用户。
tar xzf elasticsearch-6.3.0.tar.gz
配置文件在 elasticsearch-6.3.0/config/
目录下,需修改以下配置:
path.data: /path/of/data
path.logs: /path/of/save/logs
bootstrap.system_call_filter: false
network.host: YOUR_HOST_IP
http.port: 9200
启动 Elasticsearch:
(./bin/elasticsearch &)
2. 安装 Filebeat
在需要收集日志的机器上,使用 RPM 包安装 Filebeat:
rpm -ivh filebeat-6.3.0-x86_64.rpm
默认配置文件在 /etc/filebeat/
,需修改以下配置:
filebeat.inputs:
- type: log
enabled: true
paths:
- /your/log/*.log
setup.kibana:
host: "your.kibana.host:5601"
output.elasticsearch:
hosts: ["your.elasticsearch.host:9200"]
重启 Filebeat 服务:
service filebeat restart
查看 Filebeat 日志:
tail -f /var/log/filebeat/filebeat
3. 使用 Elasticsearch 的 Pipeline 处理日志内容
在 ELK Stack 6.3.0 版本中,Filebeat 可以直接将数据写入 Elasticsearch。如果需要对日志内容进行处理,可以设置对应的 pipeline。
示例:处理 Gunicorn 访问日志
以下是 Gunicorn 访问日志的示例内容:
[05/Jul/2018:11:13:55 +0800] 10.242.169.166 "-" "Jakarta Commons-HttpClient/3.0" "POST /message/entry HTTP/1.0" 200 <13968> 0.061638
为了从中提取请求时间、IP、Referer、User-Agent、状态线、状态码、进程 ID 和执行时间,需要在 Elasticsearch 中增加相应的 pipeline。可以在 Kibana 的 Dev Tools 界面中执行以下命令:
PUT _ingest/pipeline/gunicorn-access
{
"description": "my gunicorn access log pipeline",
"processors": [
{
"grok": {
"field": "message",
"patterns": ["\\[%{HTTPDATE:timestamp}\\] %{IP:remote} \"%{DATA:referer}\" \"%{DATA:ua}\" \"%{DATA:status_line}\" %{NUMBER:status_code:int} <%{NUMBER:process_id:int}> %{NUMBER:use_time:float}"]
}
}
]
}
在配置中使用 grok
处理器,并确保正则表达式的格式正确。可以通过 Dev Tools 中的 Grok Debugger 进行测试。
配置 Filebeat
在 Filebeat 配置中,设置 inputs:
- type: log
enabled: true
paths:
- /path/to/gunicorn-access.log
fields:
type: gunicorn-access
multiline.pattern: ^\[
multiline.negate: true
multiline.match: after
在 Elasticsearch output 中添加:
pipelines:
- pipeline: gunicorn-access
when.equals:
fields.type: gunicorn-access
重启 Filebeat 服务以应用配置更改。
Nginx 日志时区设置
在监控 Nginx 日志时,可能会遇到时间差问题。可通过以下步骤为 Nginx 错误日志设置时区:
- 通过
GET _ingest/pipeline/
查找 Nginx 错误日志的 pipeline 名称(如filebeat-6.3.0-nginx-error-pipeline
)。 - 复制其 pipeline 配置,添加时区设置:
{
"date": {
"field": "nginx.error.time",
"target_field": "@timestamp",
"formats": ["YYYY/MM/dd H:m:s"],
"timezone": "Asia/Shanghai"
}
}
- 将更新后的 pipeline 提交到 Elasticsearch:
PUT _ingest/pipeline/filebeat-6.3.0-nginx-error-pipeline
注意:需重启 Elasticsearch 以使设置生效。
结论
通过以上步骤,您将成功搭建起基于 Filebeat、Elasticsearch 和 Kibana 的日志管理环境。利用 Elasticsearch 的 pipeline 特性,您可以高效处理日志内容,获取更深入的数据分析。确保根据您的需求调整配置,并及时查看日志以排查潜在问题。