GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

软件开发 --- ELK 之初体验

功能强大的监控系统
ELK 是一个由 Elasticsearch、Logstash 和 Kibana 组成的开源技术栈,常用于日志收集、存储、搜索和分析。它的名称取自三个组件的首字母(E、L 和 K)。ELK 堆栈非常适用于大规模数据的实时分析,尤其在日志管理、监控和业务数据分析中广泛使用。

具体组成部分:
Elasticsearch:

是一个分布式搜索和分析引擎,能够存储大量数据,并提供高效的实时搜索和分析功能。Elasticsearch 基于 Apache Lucene,使用文档格式存储数据(通常是 JSON 格式),并支持全文搜索、结构化搜索、聚合分析等功能。
它是 ELK 的核心,负责存储数据并提供快速查询。
Logstash:

是一个强大的数据收集和处理工具。它能够从不同的来源(如日志文件、数据库、网络端口等)收集数据,对数据进行解析和转换,并将处理后的数据发送到 Elasticsearch 或其他存储系统。
Logstash 支持多种输入、过滤和输出插件,使得它在数据处理和转发方面非常灵活。
Kibana:

是一个可视化工具,用于展示存储在 Elasticsearch 中的数据。Kibana 提供了强大的图表、仪表板、报告等功能,帮助用户以图形化方式查看和分析数据。
通过 Kibana,用户可以创建交互式仪表板,实时查看数据分析结果,进行数据探索,发现潜在问题和趋势。
ELK 的常见使用场景:
日志管理:ELK 堆栈被广泛用于收集和分析各种日志(如应用程序日志、系统日志、安全日志等)。它能够帮助开发人员和运维人员快速定位问题,实时监控系统健康状态。

实时数据分析:使用 ELK 堆栈可以对大规模的日志数据进行实时分析,监控应用和系统的性能,及时发现异常。

性能监控:通过 Kibana 可视化数据,分析不同服务和系统的响应时间、错误率、访问量等指标,帮助进行性能调优。

安全事件检测:ELK 可以用于安全日志的收集与分析,帮助发现潜在的安全威胁和攻击行为。例如,监控失败的登录尝试,异常的网络访问等。

业务数据分析:ELK 不仅用于日志,还可以收集其他业务数据进行分析,帮助企业分析客户行为、网站访问量、销售情况等。

场景:网站访问日志分析

目标

  • 收集和分析网站访问日志:我们要收集网站的访问日志,分析用户访问情况,查看访问量、页面浏览量等,并通过 Kibana 来可视化展示和生成报告。
  • 实时监控和报警:比如,当某些页面的访问量异常时,触发报警。

步骤 1:准备数据源 — 网站访问日志

  1. 假设我们的网站访问日志格式如下:

    127.0.0.1 - - [10/Oct/2020:13:55:36 +0000] "GET /index.html HTTP/1.1" 200 1024
    127.0.0.1 - - [10/Oct/2020:13:55:37 +0000] "POST /login HTTP/1.1" 404 512
    

    这些日志记录了访问 IP、请求时间、请求方法、请求的 URL、响应状态码和返回的数据量。

  2. 假设这些日志存储在文件 /var/log/nginx/access.log 中。


步骤 2:安装 ELK 堆栈

安装 Elasticsearch

Elasticsearch 是一个分布式搜索引擎,它将存储和索引我们收集到的日志数据。

# 下载并安装 Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz
tar -xzf elasticsearch-7.10.0-linux-x86_64.tar.gz
cd elasticsearch-7.10.0
./bin/elasticsearch
  • 启动成功后,Elasticsearch 默认会运行在 localhost:9200

安装 Logstash

Logstash 是一个强大的数据收集和处理工具,能够从不同来源收集数据、进行处理并将其输出到 Elasticsearch。

# 下载并安装 Logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.0.tar.gz
tar -xzf logstash-7.10.0.tar.gz
cd logstash-7.10.0

安装 Kibana

Kibana 用于数据可视化,它将通过 Elasticsearch 存储的数据来生成图表、仪表板等。

# 下载并安装 Kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.0-linux-x86_64.tar.gz
tar -xzf kibana-7.10.0-linux-x86_64.tar.gz
cd kibana-7.10.0

步骤 3:配置 Logstash

Logstash 需要配置输入、过滤和输出,以便从网站访问日志文件中提取信息并将其存储到 Elasticsearch 中。

创建 Logstash 配置文件

  1. 创建一个名为 logstash.conf 的配置文件:
input {
  file {
    path => "/var/log/nginx/access.log"  # 设置访问日志文件路径
    start_position => "beginning"         # 从文件的开头开始读取
    sincedb_path => "/dev/null"           # 不跟踪读取位置
  }
}

filter {
  grok {
    match => { "message" => "%{IPV4:client_ip} - %{DATA:ident} %{DATA:auth} \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATH:request} HTTP/%{NUMBER:http_version}\" %{INT:status_code} %{INT:bytes}" }
  }

  date {
    match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "access-log-%{+YYYY.MM.dd}"  # 将数据存储到 Elasticsearch 中,按日期分索引
  }
}

配置解释:

  • 输入:从 /var/log/nginx/access.log 中读取日志文件内容。
  • 过滤器:使用 grok 来解析日志行,将其拆解为 IP 地址、请求方法、URL 路径、响应状态码等字段。
  • 输出:将解析后的日志数据输出到 Elasticsearch,存储在 access-log-日期 索引中。

启动 Logstash

运行 Logstash,开始收集和处理数据:

./bin/logstash -f logstash.conf

Logstash 会读取 /var/log/nginx/access.log 文件中的日志,并将解析后的数据发送到 Elasticsearch。


步骤 4:查看和分析数据 — Kibana

  1. 启动 Kibana
cd kibana-7.10.0
./bin/kibana

Kibana 默认在 localhost:5601 上运行。

  1. 创建索引模式

    在 Kibana 中,创建一个索引模式来匹配 Logstash 输出到 Elasticsearch 的数据。步骤如下:

    • 访问 Kibana,进入 Management -> Index Patterns
    • 点击 Create index pattern,输入 access-log-*,以匹配所有日志索引。
    • 选择 timestamp 字段作为时间字段,然后点击 Create index pattern
  2. 查看实时日志

    Discover 页面,你可以实时查看日志数据。根据需要,你可以查看日志的不同字段(如 IP、请求方法、状态码等),并进行筛选、排序。

  3. 创建可视化图表

    • 请求方法统计:展示 GET 和 POST 请求的数量。
    • 状态码统计:展示每种 HTTP 状态码的访问量,例如 200、404、500 等。
    • 页面访问量:分析每个页面的访问量,以便找出最受欢迎的页面。
  4. 创建仪表板

    Dashboard 页面,你可以将多个图表和可视化展示集成在一个页面中,帮助你全面分析网站访问情况。比如:

    • 网站访问趋势图:展示每日的访问量。
    • 页面访问热度:展示不同页面的访问量。
    • 错误页面监控:展示 404 错误页面的访问量。

步骤 5:实时监控与报警

  1. 设置报警规则

    在 Kibana 中,你可以设置监控和报警规则。例如:

    • 如果某个页面的 404 错误次数超过某个阈值(如 100 次),则触发报警。
    • 如果网站访问量突然暴增,可以设置阈值报警,提醒管理员检查服务器是否被攻击。

    设置方式:进入 Alerts and Actions,定义你的报警规则,并选择报警通知方式(如邮件、Slack 等)。

  2. 监控仪表板

    设置定时刷新功能,确保你在 Kibana 中看到的是最新的数据。可以设置每隔 5 分钟或更短的时间间隔自动刷新仪表板,帮助你实时监控网站访问情况。


总结

在这个场景中,ELK 堆栈帮助你实现了:

  • 集中化日志收集与存储:通过 Logstash 从网站日志文件中提取数据,并将其存储到 Elasticsearch。
  • 数据分析与可视化:通过 Kibana,你可以查看、分析网站的访问量、错误率、流量趋势等数据。
  • 实时监控与报警:利用 Kibana 的报警功能,实时监控网站的状态,并在出现异常时及时通知管理员。

例如,如果网站某个页面的 404 错误突然激增,Kibana 会通过报警通知你,帮助你及时修复问题,避免用户体验受损。

posted on 2024-12-10 06:12  GKLBB  阅读(8)  评论(0编辑  收藏  举报