ELK 日志监控平台(一)- 快速搭建

文章目录

ELK 日志监控平台(一)- 快速搭建

1.ELK 简介

ELK(Elasticsearch, Logstash, Kibana)是一个目前主流的开源日志监控平台。由三个主要组件组成的:

  • Elasticsearch:是一个开源的分布式搜索和分析引擎,可以用于全文检索、结构化检索和分析,它构建在Lucene搜索引擎库之上,是当前使用较为广泛的开源搜索引擎之一。
  • Logstash:一个用于收集、处理和转发日志数据的数据处理管道。Logstash可以从不同的日志源(如文件、应用程序日志、数据库等)中收集日志数据,并对其进行过滤、解析和转换,然后将其发送到Elasticsearch中进行存储和索引。
  • Kibana:一个用于可视化和分析存储在Elasticsearch中的日志数据的用户界面。Kibana提供了一个直观且功能强大的仪表盘,可以根据特定需求创建各种图表、表格和地图,并进行实时数据可视化和监控。

官网地址:https://www.elastic.co/cn/

本篇文章重点在于,教你如何快速搭建ELK 日志监控平台,有关详细的使用操作会在后续文章进行讲解。

2.Elasticsearch安装部署

官方下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

在此,鄙人选择 7.17.16 版本,注意此版本号要记好。ELK 的版本最好统一,不然可能会出现版本不兼容的情况。

选择合适的安装包(本人MACOS系统,其他系统选择对应安装包就行)。

下载完成后,解压安装包。

打开终端,进入bin 目录,输入 ./elasticsearch 启动 ES。

sh 复制代码
cd /elasticsearch-7.17.16/bin
./elasticsearch

至此ES安装部署完毕。

3.Logstash安装部署

官方下载地址:https://www.elastic.co/cn/downloads/past-releases#logstash

Elasticsearch 一致,选择7.17.16版本。

选择本系统对应的安装包。

下载完成后,解压安装包。

打开终端,进入bin 目录,输入./logstash -e "input { stdin {} } output { stdout {} }"启动。

sh 复制代码
cd /logstash-7.17.16/bin      
./logstash -e "input { stdin {} } output { stdout {} }"

在控制台输入 hello ,会输出 Logstash 处理后的结果。

至此Logstash安装部署完毕。

4.Kibana安装部署

官方下载地址:https://www.elastic.co/cn/downloads/past-releases#kibana

Elasticsearch 一致,选择7.17.16版本。

选择与本系统对应的安装包。

下载完成后,解压安装包。

打开终端,进入bin 目录,输入./kibana 启动。

sh 复制代码
cd /kibana-7.17.16/bin      
./kibana

打开浏览器输入http://localhost:5601/,进入到Kibana界面。

至此Kibana安装部署完毕。

5.日志收集DEMO

以上完成了ELK的快速搭建。接下来有一个小demo,教你如何利用 ELK 收集日志并查询。

5.1.创建SpringBoot应用

我们先创建一个SpringBoot应用。

依赖导入
xml 复制代码
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.12</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>
    </dependencies>
日志配置文件 logback.xml
xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--日志文件所在目录-->
    <property name="LOG_HOME" value="../logs/log" />

    <!--采用打印到控制台,记录日志的方式-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--日志输出格式-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 采用保存到日志文件 记录日志的方式,
    %d{yyyy-MM-dd HH:mm:ss.SSS}:输出日志发生的时间,精确到毫秒。
    [%thread]:输出日志所在的线程名。
    %-5level:输出日志级别,使用占位符%5level可以保持日志级别的对齐。
    %logger{36}:输出日志所在的类名(只输出类名的后36个字符)。
    %msg:输出日志消息。
    %n:新行。
    -->
    <!--滚动记录文件-->
    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件地址-->
        <file>${LOG_HOME}/demoLog.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--粒度:天。等价于一天一个文件-->
            <fileNamePattern>${LOG_HOME}/demoLog-%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" additivity="false">
        <appender-ref ref="rollingFile" />
        <appender-ref ref="console" />
    </root>
</configuration>
启动类
java 复制代码
@SpringBootApplication
@Slf4j
public class DemoLogApplication implements ApplicationRunner {

    public static void main(String[] args) {
        SpringApplication.run(DemoLogApplication.class,args);
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        SimpleDateFormat format = new SimpleDateFormat("hh时mm分ss秒 SSS");
        Random random = new Random();
        while (true){
            TimeUnit.MILLISECONDS.sleep(1000+random.nextInt(1000));
            String format1 = format.format(new Date());
            log.info("测试案例。当前时间:{}",format1);
        }
    }
}
目录结构
启动项目

5.2.创建Logstash配置文件

进入Logstashconfig目录,创建一个名为 demoLog.conf 文件

文件内容如下:

tex 复制代码
input {
  file {
    path => ".../logs/log/demoLog.log"
    start_position => "beginning"
    stat_interval => "3"
    type => "demo_log"
  }
}

output {
   if [type] == "demo_log" {
     elasticsearch {
       hosts => ["http://127.0.0.1:9200"]
       index => "demo_log-%{+YYYY.MM.dd}"
    }
  }
}

属性说明:

  • input:指定Logstash接收数据的输入插件,使用file插件作为输入。file插件用于读取并处理文件中的数据。

    • file:指定使用的输入插件是file插件。

    • path:指定要读取的文件路径。

    • start_position:指定从文件的哪个位置开始读取数据。设置为"beginning"表示从文件的开始位置开始读取数据

    • stat_interval:指定文件的状态检查间隔(以秒为单位)。设置为"3"表示每隔3秒检查一次文件状态,以判断是否有新数据。

    • type:指定数据的类型名称。设置为"nginx-access-log"表示数据的类型是Nginx访问日志。

  • output:指定Logstash处理完数据后的输出插件。使用elasticsearch插件将处理后的日志数据发送到Elasticsearch。

    • type:指定数据的类型名称。
    • elasticsearch:指定使用的输出插件是elasticsearch插件。
      • hosts:指定Elasticsearch集群的主机地址。Logstash将处理后的数据发送到位于"192.168.140.100"主机上,HTTP端口9200的ES节点
      • index:指定数据在Elasticsearch中的索引名称,比如【 filebeat-8.4.1-2023.07.02 】使用[@metadata][version]字段和当前日期来构建索引名称 可以根据采集数据的来源和版本动态创建索引。

5.3.重新启动Logstash

输入以下命令:

sh 复制代码
./logstash -f ../config/demo_log.conf

5.4.Kibana配置Index

进入Stack Management,选择索引管理,可以看到我们配置的日志文件。

创建索引模式

输入索引模式名称,其实相当于检索索引的正则表达式。

5.5.Kibana查询日志

进入Discover,即可检索日志信息。

相关推荐
A-刘晨阳1 小时前
ELFK 8.12.2 部署 -- docker部署方式⚽
linux·运维·elk·docker·容器
玉标2 小时前
ELK日志系统和Filebeat采集器的学习总结
学习·elk
水蓝烟雨10 小时前
Elasticsearch基本操作
大数据·elasticsearch·搜索引擎
艰苦奋斗中14 小时前
ELK 企业级日志分析系统
elk
猴子微胖15 小时前
ElasticSearch常用操作
大数据·elasticsearch·jenkins
日出等日落16 小时前
Windows系统安装分布式搜索和分析引擎Elasticsearch与远程访问详细教程
windows·分布式·elasticsearch
AI程序猿人19 小时前
聚焦大模型应用落地,2024全球数字经济大会人工智能专题论坛在京举办
人工智能·搜索引擎·百度·自然语言处理·大语言模型·agent·ai大模型
流月up1 天前
k8s离线安装单节点elasticsearch7.x
elasticsearch·kubernetes
凤凰谷11 天前
使用elasticsearch完成多语言搜索的三种方式
大数据·elasticsearch·搜索引擎
csdn5659738501 天前
阿里云Elasticsearch-趣味体验-仪表板
大数据·elasticsearch·搜索引擎·仪表板