elk日志系统的搭建

elk日志系统搭建

一、elk的介绍

ELK平台一般我们用来做日志系统。它是三个开源项目的首字母的总称。ELK主要是以这三个项目作为核心来搭建的日志处理系统。它们这个三个项目分别是Elasticsearch、Logstash 和 Kibana。

  • EalsticSearch 搜索和分析的功能
  • Logstach 搜集数据的功能,类似于flume(使用方法几乎跟flume一模一样),是日志收集系统
  • Kibana 数据可视化(分析),可以用图表的方式来去展示,文不如表,表不如图,是数据可视化平台

ELK日志处理的大概流程,主要是Logstach对日志进行采集然后转到EalsticSearch进行储存然后再经过Kibana进行展示。

二、Elk日志分析的作用

假设我们随着机器的增加,那我们的日志文件是否就分布到了不同的机器上?如果出现了错误那我们就需要一台一台机器的去查看他的日志,非常的麻烦。但是如果日志接入了ELK就不一样了。比如系统运行过程中,突然出现了异常,在日志中就能及时反馈,日志进入 ELK 系统中,我们直接在 Kibana 就能看到日志情况。如果再接入一些实时计算模块,还能做实时报警功能。这都依赖ES强大的反向索引功能,这样我们根据关键字就能查询到关键的错误日志了

三、ELK的安装部署

(1)、ElasticSearch的安装和部署
  1. 先下载 elasticsearch-8.6.2-linux-x86_64.tar.gz包,现在安装的版本是8.6.2官网下载地址https://www.elastic.co/cn/downloads根据自己安装的地址进行下载。我们使用的是linux安装。

在这里插入图片描述

  1. 解压 elasticsearch-8.6.2-linux-x86_64.tar.gz

    tar -zxvf elasticsearch-8.6.2-linux-x86_64.tar.gz
    
  2. 创建文件夹

    mkdir -p /usr/local/software/elk/elasticsearch-8.6.2/data/datacd
    mkdir -p /usr/local/software/elk/elasticsearch-8.6.2/data/logs
    
  3. 修改配置文件 elasticsearch.yml

    path.data:/usr/local/software/elk/elasticsearch-8.6.2/data/data # ES数据的存放路径
    path.logs: /usr/local/software/elk/elasticsearch-8.6.2/data/logs # ES日志的存放路径
    network.host: 10.211.55.3 # 当前节点绑定的IP地址
    
  4. 创建es用户和设置密码,由于es默认不可以利用root用户进行启动为了安全

     useradd es
     passwd es 
    
  5. 修改用户权限

    chown -R es:es /usr/local/software/elk/elasticsearch-8.6.2/
    chown -R es:es /usr/local/software/elk/elasticsearch-8.6.2/data/logs
    chown -R es:es /usr/local/software/elk/elasticsearch-8.6.2/data/data
    
  6. 修改用户最大可创建文件数 和修改最大虚拟内存大小 ,elasticsearch 要求比较高,liux默认的大小不能够满足,启动elasticsearch会报错

    第一:vim /etc/security/limits.conf修改用户最大可创建文件数,在文件的末尾添加:
    #给es用户添加
    es soft nofile 65536
    es hard nofile 65536
    验证: ulimit -Hn
    [es@pms-hadoop-data bin]$ ulimit -Hn
    65536
    
    第二:vim /etc/sysctl.conf修改最大虚拟内存大小,在文件的末尾添加:
    vm.max_map_count=262144
    验证:sysctl -p查看虚拟内存的大小
    
  7. 先将认证关了,不然后期会出现:**Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents xpack.security.http.ssl:
    enabled: false
    keystore.path: certs/http.p12 ** 是因为开启了ssl认证。只需要在 elasticsearch.yml修改配置就好了

    # Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
    xpack.security.http.ssl:
      enabled: false  #改为false
      keystore.path: certs/http.p12
    

    访问需要用户名和密码我们可以直接将校验关闭

    # Enable security: false
    
  8. 启动elasticsearch(进入elasticsearch-8.6.2目录)

    bin/elasticsearch #前台启动退出elasticsearch 也会直接退出
    ./elasticsearch -d   # elasticsearch-8.6.2下的目录后台启动
    
  9. 访问看看是否安装成功 http://linuxIp:9200/

    在这里插入图片描述

(2)、Kibana的安装
  1. 先下载 kibana-8.6.2-linux-x86_64.tar.gz,和elasticsearch相同的下载地址,在下载页面找到kibana,解压

    tar -zxvf  kibana-8.6.2-linux-x86_64.tar.gz
    
  2. 进入kibana目录找到config里面的kibana.yml文件,添加一下配置

    server.host: "10.211.55.3"
    #绑定的es地址如果是集群请用逗号分隔
    elasticsearch.hosts: ["http://10.211.55.3:9200"]
    #端口
    server.port: 5601 
    #默认是英文,修改成中文
    i18n.locale: "zh-CN"
    
  3. 启动kibana,找到kibana目录下的bin目录

    ./kibana   #前台启动
    nohup bin/kibana & #后台启动
    
    
  4. 访问http://linuxIp:5601/,测试验证是否整合成功elasticsearch,找到首页开发者工具

  5. 在这里插入图片描述

5.创建索引,获取索引测试可以发现已经连上了elasticsearch

  1. 在这里插入图片描述

  2. 在这里插入图片描述

  3. 测试数据

    
    #创建索引
    PUT /test
    #查询索引
    GET /test;
    #新增向索引中添加数据
    PUT /test/_doc/1
    {
      "name":"snail",
      "sex":0,
      "age":22
    }
    PUT /test/_doc/2
    {
      "name":"周依琳",
      "sex":0,
      "age":22
    }
    PUT /test/_doc/3
    {
      "name":"周结论",
      "sex":0,
      "age":22
    }
    PUT /test/_doc/4
    {
      "name":"周蜗牛",
      "sex":0,
      "age":22
    }
    PUT /test/_doc/5
    {
      "name":"牛粪粪",
      "sex":0,
      "age":22
    }
    
(3)、Logstach的安装
  1. 解压 logstash-oss-8.6.2-linux-x86_64.tar.gz

    tar -zxvf logstash-oss-8.6.2-linux-aarch64.tar.gz
    
  2. 在logstash的config目录下创建一个文件logstash.conf

    touch logstash.conf
    
  3. 配置

    input {
      stdin{} 
    }
    
    output {
      elasticsearch {
          hosts  => ["http://192.168.200.130:9200"]   # ElasticSearch 的地址和端口
          index  => "log-%{+YYYY.MM.dd}"         # 指定索引名,可以根据自己的需求指定命名
          codec  => "json"
      }
      stdout {
        codec => rubydebug
      }
    }
    
    
  4. 启动logstash

    bin/logstash -f config/logstash.conf
    

在这里插入图片描述

在控制台输入内容,它就会同步到我们的elasticsearch中了 我们建立的索引格式是**"log-%{+YYYY.MM.dd}**

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

可以查看到刚刚创建的索引。通过索引可以查看到我们刚刚插入的信息

在这里插入图片描述

这说明elk已经搭建完成了。我们需要使用他做一个日志系统那我们重新配置一下logstash.conf,将其修改成为

input {
  tcp {
    mode => "server"
    host => "0.0.0.0"  # 允许任意主机发送日志
    port => 5044       #监听的端口号
    codec => json_lines    # 数据格式
  }
}

output {
  elasticsearch {
      hosts  => ["http://192.168.200.130:9200"]   # ElasticSearch 的地址和端口
      index  => "log-%{+YYYY.MM.dd}"         # 指定索引名,可以根据自己的需求指定命名
      codec  => "json"
  }
  stdout {
    codec => rubydebug
  }
}

创建一个springboot项目,引入以下jar包进行测试

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>6.6</version>
</dependency>

在resource目录下新建一个文件logback-spring.xml(注意命名,不要修改)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <springProperty scope="context" name="springAppName" source="spring.application.name"/>
    <springProperty scope="context" name="serverPort" source="server.port"/>
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--logstash的服务地址和端口,可以实际情况设置-->
        <destination>192.168.200.130:5044</destination>
        <!-- 日志输出编码 -->
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
            <providers>
                <timestamp>
                    <timeZone>UTC</timeZone>
                </timestamp>
                <pattern>
                    <pattern>
                        {
                        <!--应用名称 -->
                        "app": "${springAppName}_${serverPort}",
                        <!--打印时间 -->
                        "timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",
                        <!--线程名称 -->
                        "thread": "%thread",
                        <!--日志级别 -->
                        "level": "%level",
                        <!--日志名称 -->
                        "logger_name": "%logger",
                        <!--日志信息 -->
                        "message": "%msg",
                        <!--日志堆栈 -->
                        "stack_trace": "%exception"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>
    <!--定义日志文件的存储地址,使用绝对路径-->
    <property name="LOG_HOME" value="/home/logs"/>
    <!-- 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <fileNamePattern>${LOG_HOME}/${springAppName}-${serverPort}-%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="LOGSTASH" />
        <appender-ref ref="FILE" />
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>

然后进行测试。可以发先es已经可以接受到打印的日志了。

在这里插入图片描述

现在es的基本搭建已经完成了。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

久★伴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值