大数据-189 Elasticsearch - ELK 日志分析实战 - 环境配置启动 Nginx、ZK、Kafka、ES、Kibana

embedded/2024/10/30 17:08:16/

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(已更完)
  • Elasticsearch(正在更新…)

章节内容

上节我们完成了如下的内容:

  • Logstash Output 插件
  • 工作原理、采集案例

在这里插入图片描述

整体架构

在这里插入图片描述

Nginx

Nginx 是一个高性能的 HTTP 和反向代理服务器,同时也能作为 IMAP/POP3 邮件代理服务器使用。它最初由 Igor Sysoev 于 2004 年开发,目的是解决高并发情况下的 C10K 问题,即同时处理 1 万个客户端连接的问题。Nginx 采用了事件驱动架构,能够使用较少的资源处理大量并发请求,因此在静态资源服务、反向代理、负载均衡等场景中表现得尤为出色。

Nginx 的主要功能包括:

  • 静态资源服务:Nginx 可以非常高效地处理静态文件的请求,如 HTML、CSS、JavaScript、图片等,适合作为前端服务器。
  • 反向代理:Nginx 可以作为反向代理,将客户端请求转发到后端服务器处理,再将响应返回给客户端。它支持 HTTP 和 HTTPS 协议,能够帮助隐藏后端服务器,增强安全性。
  • 负载均衡:Nginx 支持多种负载均衡算法,如轮询、加权轮询、IP 哈希等。它可以将流量分发到多个后端服务器,提高系统的可靠性和可扩展性。
  • 缓存:Nginx 可以缓存后端服务器的响应,减少对后端服务器的请求压力,提升性能。
  • 高并发支持:由于采用异步非阻塞的事件驱动模型,Nginx 可以处理非常高的并发连接,适合大规模网站的流量处理需求。
  • 模块化设计:Nginx 支持多种模块,如 gzip 压缩、SSL/TLS 加密、访问控制、连接限制等,方便定制和扩展。

配置Nginx

我这里直接用工具安装了,你也可以采用源码编译的方式等。

apt install nginx

安装完毕后,我们要修改一下Nginx的配置内容:

# 可能不一样
vim /etc/nginx/nginx.conf

原来的内容如下图所示,我们要修改内容:
在这里插入图片描述
修改日志的格式(方便后续的Logstash进行解析,虽然Logstash可以通过正则的方式来实现字段的提取,但是效率并不高)。

log_format json '{ "@timestamp": "$time_iso8601", ''"remote_addr": "$remote_addr", ''"remote_user": "$remote_user", ''"body_bytes_sent": "$body_bytes_sent", ''"request_time": "$request_time", ''"status": "$status", ''"request_uri": "$request_uri", ''"request_method": "$request_method", ''"http_referrer": "$http_referer", ''"http_x_forwarded_for": "$http_x_forwarded_for", ''"http_user_agent": "$http_user_agent"}';
access_log logs/access.log json;

修改的对应的截图如下所示:
在这里插入图片描述
同时我们监听一个别的端口,必须8888

server {listen 8888;server_name localhost;location / {root html;index index.html index.htm;}
}

这部分的截图为:
在这里插入图片描述

重启Nginx

nginx -s reload

访问页面

http://h121.wzk.icu:8888/

我们多访问几次,可以看到后台的日志的内容:

root@h121:/opt/wzk/logs# tail -f access.log 
{ "@timestamp": "2024-08-19T14:24:39+08:00", "remote_addr": "223.80.101.21", "remote_user": "-", "body_bytes_sent": "0", "request_time": "0.000", "status": "304", "request_uri": "/", "request_method": "GET", "http_referrer": "-", "http_x_forwarded_for": "-", "http_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"}
{ "@timestamp": "2024-08-19T14:24:39+08:00", "remote_addr": "223.80.101.21", "remote_user": "-", "body_bytes_sent": "0", "request_time": "0.000", "status": "304", "request_uri": "/", "request_method": "GET", "http_referrer": "-", "http_x_forwarded_for": "-", "http_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"}
{ "@timestamp": "2024-08-19T14:24:43+08:00", "remote_addr": "223.80.101.21", "remote_user": "-", "body_bytes_sent": "396", "request_time": "0.000", "status": "200", "request_uri": "/", "request_method": "GET", "http_referrer": "-", "http_x_forwarded_for": "-", "http_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"}
{ "@timestamp": "2024-08-19T14:24:43+08:00", "remote_addr": "223.80.101.21", "remote_user": "-", "body_bytes_sent": "197", "request_time": "0.000", "status": "404", "request_uri": "/favicon.ico", "request_method": "GET", "http_referrer": "http://h121.wzk.icu:8888/", "http_x_forwarded_for": "-", "http_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"}
{ "@timestamp": "2024-08-19T14:24:44+08:00", "remote_addr": "223.80.101.21", "remote_user": "-", "body_bytes_sent": "0", "request_time": "0.000", "status": "304", "request_uri": "/", "request_method": "GET", "http_referrer": "-", "http_x_forwarded_for": "-", "http_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"}

对应的截图如下所示:
在这里插入图片描述

Zookeeper

Zookeeper 是一个分布式协调服务,用于分布式应用程序中的配置管理、命名服务、分布式同步和集群管理等功能。它提供了一种简单但可靠的机制,能够协调多个服务器之间的状态,使得分布式系统可以像单个系统一样进行管理。Zookeeper 的核心理念是通过一个树状的目录结构来存储配置信息,类似于文件系统,每个节点称为 znode。

Zookeeper 的主要功能包括:

  • 命名服务:Zookeeper 能够存储和提供分布式系统中的资源名称信息,例如分布式集群中的服务器名称和地址。
  • 配置管理:Zookeeper 可以实时跟踪和分发配置数据,确保分布式系统中的各个节点拥有一致的配置状态。
  • 分布式同步:Zookeeper 提供了一种原语,帮助分布式系统中的节点在操作时保持同步,避免数据冲突和竞争条件。
  • 集群管理:Zookeeper 能够监控集群中节点的存活状态,提供节点的动态加入、移除以及失败恢复的功能。

我们需要去启动 ZooKeeper 的集群服务,需要在:

  • h121
  • h122
  • h123
    上述节点分别启动 ZK 服务:
zkServer.sh start

Kafka

Kafka 是由 LinkedIn 开发的一个分布式流处理平台,现由 Apache 基金会维护。Kafka 最初是为了处理 LinkedIn 内部的大规模数据流而设计的,现在已成为各类企业用于处理实时数据流的重要工具。

Kafka 的优势包括:

  • 高吞吐量:Kafka 能够处理大量的数据流,支持低延迟的实时消息处理。
  • 持久化存储:消息存储在磁盘上,可以设置保留策略来控制消息的生命周期。
  • 可扩展性:Kafka 通过增加分区和 Broker 来水平扩展,无需中断服务。
  • 容错性:通过副本机制,Kafka 可以在部分 Broker 失效的情况下仍然继续运行。

我们需要去启动Kafka的集群服务,需要在:

  • h121
  • h122
  • h123
    上述节点分别启动 Kafka 服务:
kafka-server-start.sh -daemon /opt/servers/kafka_2.12-2.7.2/config/server.properties

Elasticsearch

Elasticsearch 是一个分布式、RESTful 搜索和分析引擎,基于 Apache Lucene 开发。它能够快速存储、搜索和分析大量数据,广泛应用于日志处理、全文搜索、数据分析等场景。

Elasticsearch 通常和其他工具如 Logstash 和 Kibana 一起使用,组成 ELK(Elasticsearch、Logstash、Kibana)堆栈,来实现从日志采集、处理到可视化展示的一体化解决方案。

我们需要去启动Elasticsearch的集群服务,需要在:

  • h121
  • h122
  • h123
    上述节点分别启动 Elasticsearch 服务:
su es_server
/opt/servers/elasticsearch-7.3.0/bin/elasticsearch -d

Kibana

Kibana 是一个开源的数据可视化和探索工具,专门为 Elasticsearch 设计,用来帮助用户对存储在 Elasticsearch 中的数据进行实时分析、可视化和管理。它提供了一个图形用户界面,用户可以轻松地创建不同类型的图表、仪表盘、以及数据监控工具,快速获取关键信息。

核心功能和特点:

  • 数据可视化:Kibana 支持创建多种图表,包括条形图、折线图、饼图、地理图等。用户可以通过拖拽界面元素,将复杂的数据转换为可读性强的可视化图表。
  • 仪表盘:Kibana 允许用户将多个图表、地图、搜索结果组合成一个统一的仪表盘,以便实时监控系统运行状态或者追踪特定指标。仪表盘可以进行动态更新,显示最新的数据。
  • 数据探索:用户可以使用 Kibana 的 Discover 功能,快速搜索、过滤和浏览 Elasticsearch 中的文档。通过 Kibana 提供的查询语言(例如 Lucene 查询语法或 Elasticsearch Query DSL),用户可以灵活地筛选所需的数据。
  • 时间序列分析:Kibana 提供了强大的时间序列数据分析工具(如 Timelion 和 TSVB),可以帮助用户分析和展示按时间顺序排列的数据,适用于日志分析和监控系统性能。
  • 安全与用户管理:在集成了 Elasticsearch 的 X-Pack 安全模块后,Kibana 可以实现细粒度的权限控制和用户管理。用户可以对不同的团队或用户分配不同的访问权限,确保数据安全。
  • 报警与通知:Kibana 的 Alerting 功能允许用户设置告警规则,当监控的数据达到特定阈值时,自动触发通知(例如通过电子邮件或 webhook 发送告警信息)。
  • 交互式地图:Kibana 提供了地理空间可视化功能,用户可以将地理数据绘制在交互式地图上,适合进行地理信息系统(GIS)相关的分析和展示。

我们需要启动Kibana服务,这里我是启动了 h122 节点。

su es_server
cd /opt/servers/kibana-7.3.0-linux-x86_64
bin/kibana

http://www.ppmy.cn/embedded/133655.html

相关文章

MySQL安装配置教程

以下是 MySQL 在 Windows 系统下的安装配置教程: 1. 下载 MySQL 访问 MySQL 官方网站(https://dev.mysql.com/downloads/mysql/),根据您的操作系统版本(32 位或 64 位)选择合适的 MySQL 安装包。一般建议下载社区版(Community Server),它是免费且功能丰富的版本。2. …

Android启动流程_Init阶段

前言 本文将会介绍 Android 启动流程,将基于 Android 10 代码逻辑介绍原生启动过程。 bootloader 上电 -> 加载 recovery 镜像或者 boot 镜像 -> linux kernel 启动 -> 加载 init 进程 -> 加载 zygote 进程 -> systemserver 进程 -> 系统启动 …

【ArcGISPro】制作简单的ArcGISPro-AI助手

【python】AI Navigator的使用及搭建本机大模型_anaconda ai navigator-CSDN博客 【Python】AI Navigator对话流式输出_ai大模型流式输出效果(打字效果) python-CSDN博客 【C#】调用本机AI大模型流式返回_怎么实现调用本地大模型时实现流式输出-CSDN博客 【ArcGISPro】宣布推…

【大数据分析与挖掘模型】matlab实现——非线性回归预测模型

一、实验目的 掌握有关非线性回归的理论知识,通过变量代换把本来应该用非线性回归处理的问题近似转化为线性回归问题,并进行分析预测。 二、实验任务 对非线性回归实例进行编码计算,实例如下: 三、实验过程 1.运行非线性回归中…

没有对象来和我手撕红黑树吧

1. 红黑树的介绍 红黑树也是一种自平衡的二叉搜索树,在每一个节点增加了一个存储位来表示节点的颜色,可以是红色也可以是黑色,通过约束颜色来维持树的平衡,具有以下的性质: 每个节点不是红色就是黑色根节点为黑色如果…

手机照片怎么转换成jpg格式?分享6种图片格式转换方法

照片已成为我们记录生活的重要方式。然而,不同设备和应用生成的图片格式各异,有时我们需要将照片转换成JPG格式以便更广泛地分享和使用。很多小伙伴不清楚该怎样将照片的格式进行转换,尤其是在手机上,不用担心,下面给大…

Excel 单元格小数点精确位数机制

在 Excel 中,单元格的 .Value2 属性是用来表示数字或日期值的,它是 Excel 内部的数值存储方式,不包含货币或日期的格式信息。**对于小数位的支持,Excel 的内部精度可以达到 15 位有效数字**,这包括整数和小数部分。 因…

C++学习:类和对象(一)

一、面向过程与面向对象编程 1. 什么是面向过程编程? 面向过程编程(Procedural Programming)是一种以过程(或函数)为中心的编程范式。程序被视为一系列按顺序执行的步骤,主要通过函数对数据进行操作 特点…