搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(一) Logstash demo演示

本文介绍了如何在CentOS 7上安装并运行Logstash 5.5.1,通过实例演示了基本的日志收集过程及JSON格式输出。Logstash用于收集、解析和处理日志数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于ELK的介绍在这里就不多说了,网上一大堆,直接上干货,先把Logstash跑起来!

  1. 运行环境—— Vmware 12 + Centos7 + Logstash5.5.1  

一)运行Logstash 

1、首先在官网下载Logstash,这里我选择的是5.5.1版本,点击下载Logstash,如果是在Linux上运行,就下载TAR.GZ,如果是Windows,就下载ZIP sha1,这里我下载了GZ压缩包。




2、通过FTP软件上传下载好的压缩包,我这里是虚拟机,直接拖拽到虚拟机里即可,这里我把它放到了 /home/husen 目录下

   

3、解压压缩包,进入logstash目录

4、先来个最简单的把Logstash跑起来,输入以下命令

  1. ./bin/logstash -e 'input{stdin{}} output{stdout{}}'  

看到途中圈选的   Pipeline main started则说明启动成功!接下来做个简单的测试

5、在前面终端接着输入 “Hello”,可以看到Logstash 将输入字符串的时间、主机名称 内容都格式化输出了



6、接着来体验Logsatsh的JSON格式,在终端同时按下 Crtl+C 退出当前Logstash,然后输入以下命令启动Logstash

  1. ./bin/logstash -e 'input{stdin{}} output{stdout{codec => rubydebug}}'  

7、启动成功之后,再次输入 Hello ,可以看到这次输入的字符串以JSON格式输出了,很有趣,有么有!

)原理剖析

Logstash就是用来收集日志的,刚刚在终端的输入其实就模拟在收集日志的过程,当然还可以从 文件、Redis、Log4J等等地方实时收集日志;
而刚刚终端的输出,就是模拟了将收集的日志格式化后输出的场景。在时间使用时,Logstash一般将格式化后的日志输出到ElasticSearch搜索引擎。

  1. ./bin/logstash -e 'input{stdin{}} output{stdout{codec => rubydebug}}'  

这条命令的含义是:
1、-e代表执行的意思,其实在我们写 ./bin/logstash -e 'input{stdin{}} output{stdout{}}' 的时候-e后面不写也可以,会执行默认配置;
2、input即输入的意思,input里面即是输入的方式,这里选择了stdin,就是标准输入(从终端输入),也可以选择文件(file)、redis等等;
3、output即输出的意思,output里面是输出的方式,这里选择了stdout,就是标准输出(输出到终端),也可以选择elasticSearch、redis等等;
4、这里的codec是个插件,表明格式。这里放在stdout中,定义了输出的格式,rubydebug是专门用来做测试的格式,一般用来在终端输出JSON格式。

其实我们在这里在忽略了Logstash最重要的一个过滤器(Filter),这个我们在下一更接续介绍......


### ELK 堆栈的日志管理和分析 #### 工作原理概述 ELK 是由 ElasticsearchLogstashKibana 组成的个开源工具链,用于日志管理与分析。其基本工作流如下: - **Logstash** 负责从各种来源收集日志数据,并对其进行过滤和格式化后发送至 Elasticsearch[^1]。 - **Elasticsearch** 提供强大的搜索引擎功能,负责对接收到的数据进行索引和存储。 - **Kibana** 则作为前端界面,允许用户通过图形化的方式查询、分析以及可视化这些数据[^3]。 #### 安装与配置步骤说明 ##### 1. 安装 Elasticsearch Elasticsearch 是整个系统的基石,它提供了分布式搜索和数据分析的能力。安装过程中需要注意版本兼容性问题。下载地址可以通过官方链接获取[^2]。完成安装后需调整 `elasticsearch.yml` 文件中的集群名称、节点名称以及其他必要的网络设置参数以适应实际环境需求。 ##### 2. 部署 Logstash Logstash 主要承担着数据输入端的角色,可以从文件系统、数据库或其他服务中提取原始记录再经过系列插件处理之后传送给下游组件即 Elasticsearch 实例群组里去。具体操作包括解压软件包到目标目录下然后编辑对应的 configuration file 来定义 pipeline 的行为模式比如 source type filter output destination等等。 ##### 3. 设置 Kibana 最后步就是启动 Kibana 应用来连接已有的 ES 数据库实例从而实现交互式的探索体验。同样地也需要修改默认路径下的 kibana.config.json 或者其他形式的初始化脚本来指定正确的 backend URL 地址确保两者之间能够正常通信握手成功建立联系。 以下是简单的 Python 示例演示如何向运行中的 logstash 发送消息: ```python import logging import socket def send_log_to_logstash(message): host = 'localhost' # 替换为您的logstash主机名/IP port = 5000 # 替换为您所使用的TCP端口号 try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((host, port)) sock.sendall(bytes(message + '\n', 'utf-8')) sock.close() except Exception as e: logger.error(f"Failed to send message {message} due to error: {e}") if __name__ == "__main__": test_message = "This is a test log entry" send_log_to_logstash(test_message) ``` 此代码片段展示了怎样利用标准库里的套接字模块构建起基础版客户端程序以便于测试目的验证我们的pipeline是否按预期那样运作良好。 #### 总结 综上所述,通过合理规划各部分之间的协作关系再加上细致入微得当的各项设定就可以顺利达成基于ELK框架之上高效稳定可靠的解决方案来满足企业级应用场合当中对于海量结构化半结构性乃至完全非结构化的各类事件追踪审计等方面提出的苛刻要求了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值