ELK Stack 日志监控系统完整安装与配置步骤

文章目录

本文将详细介绍如何搭建 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 错误日志设置时区:

  1. 通过 GET _ingest/pipeline/ 查找 Nginx 错误日志的 pipeline 名称(如 filebeat-6.3.0-nginx-error-pipeline)。
  2. 复制其 pipeline 配置,添加时区设置:
{
  "date": {
    "field": "nginx.error.time",
    "target_field": "@timestamp",
    "formats": ["YYYY/MM/dd H:m:s"],
    "timezone": "Asia/Shanghai"
  }
}
  1. 将更新后的 pipeline 提交到 Elasticsearch:
PUT _ingest/pipeline/filebeat-6.3.0-nginx-error-pipeline

注意:需重启 Elasticsearch 以使设置生效。

结论

通过以上步骤,您将成功搭建起基于 Filebeat、Elasticsearch 和 Kibana 的日志管理环境。利用 Elasticsearch 的 pipeline 特性,您可以高效处理日志内容,获取更深入的数据分析。确保根据您的需求调整配置,并及时查看日志以排查潜在问题。


也可以看看