elk(elasticsearch+logstash+kibana)安装入坑

本文介绍了如何搭建Elasticsearch、Logstash与Kibana(ELK)日志系统,以实现高效的数据存储、搜集传输及日志可视化等功能。

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

关于日志,大家应该都有所了解,日志的作用是为了排查问题,尤其是突发的问题,或者提供监控报警功能。传统的日志监控,都是在生产机上通过命令grep或less等命令查询日志文件,当服务器集群,数量多的时候,传统方式效率低下,无法及时确定问题,难以监控。最近公司打算优化日志监控,查阅大量资源,发现了一款开源日志系统-elasticsearch+logstash+kibana。

下面大致介绍一下elk的三大部分(由于水平有限,采用百科和官网解释):

Elasticsearch(数据存储):

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。基于elasticsearch搜索速度快、零配置等特点,我们使用它作为数据存储,来提高日志查询速度。

Logstash(搜集、数据转换、传输):

Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的 “存储库” 中。logstash具有三大组件—input、filter、output,input用来接收各种各样的数据,filter用来格式化数据,output输出数据到我们指定的地方。这里我们使用elasticsearch来作为我们的存储库。

Kibana(日志可视化):

Kibana是一个开源的分析与可视化平台,被设计与Elasticsearch一起使用。可以搜索、查看、交互(crud)存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等kibana能够很轻易地展示高级数据分析与可视化。

粗略介绍这三大工具的作用,至于具体使用,这里不是重点,也不是一两句话能够说清楚的,现在,我们先搭建出一个elk的环境,后续相关操作,再慢慢详谈。只要大家环境能够搭建正确,怎么使用,肯定难不倒大家的。

下面是一个正常安装流程,入坑开始:

Elasticsearch安装:

首先,我们开始下载最新elasticsearch(路径:/usr/local/):

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz

解压:

[root@localhost local]# tar -zvxf elasticsearch-6.2.4.tar.gz

进入bin目录,进行运行:

[root@localhost local]# cd elasticsearch-6.2.4/

[root@localhost elasticsearch-6.2.4]# ./bin/elasticsearch

这时,大家会发现如下错误:

从错误中,可以看出,elasticsearch不允许使用root账户进行启动,我们需要创建新的用户。

[root@localhost elasticsearch-6.2.4]# useradd elk

使用新用户启动,会报用户没有相应权限:

切换root配置权限,然后使用elk账户启动:

[root@localhost elasticsearch-6.2.4]# chown -R elk:elk /usr/local/elasticsearch-6.2.4

如果启动时,报出:

编辑 /etc/security/limits.conf,追加以下内容;

* soft nofile 65536

* hard nofile 65536

编辑 /etc/sysctl.conf,追加以下内容:

vm.max_map_count=262144

重新启动,elasticsearch启动成功,如果想要外网访问,开启远程访问:

[root@localhost elasticsearch-6.2.4]# vi config/elasticsearch.yml

访问9200端口,如开启远程还不能访问,关闭防火墙或开启9200端口:

另外,Elasticsearch后台启动:

[root@localhost elasticsearch-6.2.4]# ./bin/elasticsearch -d

Kibana安装:

开始下载最新安装包(路径:/usr/local/):

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz

解压:

[root@localhost local]# tar -zvxf kibana-6.2.4-linux-x86_64.tar.gz

后台启动:

[root@localhost kibana-6.2.4-linux-x86_64]# ./bin/kibana &

如需外网访问,开启远程,如果外网不能访问,关闭防火墙或开启5601端口:

访问5601端口,表示配置成功:

logstash安装:

开始下载最新安装包(路径:/usr/local/):

[root@localhost local]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.tar.gz

解压:

[root@localhost local]# tar -zvxf logstash-6.2.4.tar.gz

进入config目录,添加logstash.conf配置文件:

  1. input {
  2. tcp {
  3. host => "192.168.159.129"
  4. port => 4560
  5. mode => "server"
  6. tags => ["tags"]
  7. ##格式json
  8. codec => json_lines
  9. }
  10. }
  11. output {
  12. elasticsearch {
  13. hosts => "192.168.159.129:9200"
  14. #指定索引名字
  15. index => "applog"
  16. }
  17. stdout { codec => rubydebug}
  18. }

特别注意,其中的ip地址(192.168.159.129)换成本机ip地址,不能使用localhost或者127.0.0.1,否则连接不上本机的elasticsearch。

启动logstash:

[root@localhost logstash-6.2.4]# ./bin/logstash -f config/logstash.conf

这是笔者关于elk安装的一些心得,如果有不对的地方,希望大家能够指正,谢谢大家。

 

### 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、付费专栏及课程。

余额充值