ELK(Elasticsearch+Logstash+Kibana)安装、使用

ELK作为一套高性能查询、数据收集、分析工具全家桶,在项目和平台中实用性很高,最近在想尝试安装elk工具,并集成spring-boot+log4j2 方便自身排查问题时查询日志以及后续运维时查询日志的便利性,本文为安装ELK工具,集成springboot+log4j2+ELK可以看下面的这篇文章参考

Springboot通过log4j2+logstash整合日志到Elasticsearch中_醉酒横刀的博客-优快云博客

谨以此文记,本人安装使用过程中遇到的一些坑,希望能帮助到大家。

本文参考:Linux虚拟机中ELK的安装配置_turkizat?的博客-优快云博客_虚拟机安装elk

首先介绍下elk各个组成部分:

Elasticsearch:是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。

Logstash:是具有实时流水线能力的开源的数据收集引擎。常用于日志系统中做日志采集设备,最常用于ELK中作为日志收集器使用

Kibana:是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和Elasticsearch 协作。

1、环境准备

centos虚拟机3台(1台也可以)

需要配置jdk、关闭防火墙(或者后续设置防火墙对指定端口开放)

下载ELK,我下载的是7.11.0版本的(尽量选一致的版本),下载地址如下:

https://www.elastic.co/cn/downloads/past-releases#

2、文件拷贝解压

在虚拟机中新建文件夹(位置、名称自定义)

/opt/ELK7.11.0

将文件拷贝到文件夹,进行解压

tar -zxvf elasticsearch-7.11.0-linux-x86_64.tar.gz

tar -zxvf logstash-7.11.0-linux-x86_64.tar.gz

tar -zxvf kibana-7.11.0-linux-x86_64.tar.gz

修改解压包名称为(名称自定义):

elasticsearch-7.11.0、logstash-7.11.0、kibana-7.11.0

3、修改配置

        1)修改系统配置

                # 设置最大内存映射区域数

               vi /etc/sysctl.conf, 在底部插入  vm.max_map_count=655360,

                # 查看是否配置成功
               sysctl -w vm.max_map_count=655360 若出现vm.max_map_count = 655360即配置成功
                # 设置句柄数等参数

                vi /etc/security/limits.conf,底部插入如下配置(如果不生效则重启电脑)

* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096

               # 添加普通用户es,为后续启动es、kibna等做准备

                useradd es

              # head插件

                google浏览器添加head插件用来访问es

         2)修改elasticsearch配置

               # 进入es的配置文件夹

               cd elasticsearch-7.11.0/config/

               # 修改elasticsearch.yml配置,在最底部插入如下配置

                vi  elasticsearch.yml                      

# 集群名称
cluster.name: bigdata
# 节点名称
node.name: bigdata01
# 是否主节点
node.master: true
# ip地址
network.host: 192.168.36.129
#集群地址 我这是三节点的所以三个ip,根据实际节点数调整
discovery.zen.ping.unicast.hosts: ["192.168.36.129","192.168.36.130","192.168.36.131"]
# 是否允许跨域访问
http.cors.enabled: true
# 跨域访问配置,*为所有访问
http.cors.allow-origin: "*"
# 主节点名称
cluster.initial_master_nodes: ["bigdata01"] 

        3)修改logstash配置

              # 进入logstash的配置文件

                cd logstash-7.11.0/config/

              # 编辑logstash配置

                logstash配置是在使用时配置的,下篇文章《集成springboot+log4j2+ELK》时会配置                    l,启用时 选择配置即可,此处由于未使用到,暂时不做处理

         4)修改kibana配置

               # 进入kibana的配置文件

                  cd kibana-7.11.0/config/

                # 进入logstash的配置文件,在最底部插入

                  vi kibana.yml                

# 服务地址
server.host: "192.168.36.129"
# 连接es地址,此处可以连接集群
elasticsearch.hosts: ["http://192.168.36.129:9200"]

4、启动

      1) 启动elasticsearch

             # 切换用户

             su es

             # 给用户赋予elasticsearch文件夹的权限

             sudo chown -R es:es elasticsearch7.11

             # 进入bin目录

             cd elasticsearch-7.11.0/bin/

             # 后台启动es

             ./elasticsearch -d

             # 关闭es,先查找进程,再kill掉

                ps -ef|grep elasticsearc

      2)启动logstash

             # 进入logstash的bin目录

                cd logstash-7.11.0/bin/

            # 启动logstash

                ./logstash -f /opt/ELK7.11.0/logstash-7.11.0/config/logstash.yml

            # 关闭logstash,先查找进程,再kill掉

ps -ef|grep logstash

      

      3)启动kibana

           # 切换用户

              su es

           # 进入kibana目录

              cd kibana-7.11.0/bin/

           # 启动kibana

               ./kibana

           # 后台启动kibana

               nohup ./kibana &

           # 关闭kibana,先查看端口号,再kill掉

             netstat -tunlp|grep 5601

5、验证

        1)登录kibana

            http://192.168.36.129:5601/

       2)使用kibana管理、查询elasticsearch数据

# 新建索引

### 5分片2副本(根据自己情况自定义)

 ### 新建mapping

### 新增一条数据

# 管理索引

  # 新建查询规则    

 

 ### 这里根据自己情况来,如果不想用默认的规则可以不选

# 查询数据

### 根据需要建立查询条件

# 其他使用

其他功能可以百度查询或者自己探索

       3)使用head插件

 # 谷歌浏览器集成head插件

# 使用head插件新建索引、增删改查数据

由于head插件使用内容比较多所以另写一篇专门介绍,感兴趣的同学可以查看一下链接:

    Elasticsearch head插件安装及数据的基本操作_醉酒横刀的博客-优快云博客

6、遇到的问题及解决

       问题(1): max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

        解决方案:参考3-1部分的设置

        问题(2): with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing with lock id [1]?

        解决方案:ps -ef|grep elasticsearch ,看是否有有运行的es  杀掉重启

        问题(3):failed to join {bigdata01}{BTZDQpfGTcK0c-Dk0bQXWg}{OC39JXh_SKiUjN1BCsVXGg}{192.168.36.129}{192.168.36.129:9300}  No route to host: 192.168.36.130/192.168.36.130:9300

        解决方案:

           防火墙没关掉,一般第一种就关掉了,如果不行再使用第二种
          1、systemctl stop firewalld 先关闭本次的防火墙
                systemctl disable firewalld 再设置每次启动时自动关闭防火墙

          2、systemctl status iptables     =查看防火墙状态
                systemctl stop iptables       = 关闭防火墙
                systemctl status iptables     = 查看防火墙状态是否关闭

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

余额充值