ELK搭建以及使用教程(多pipiline)

1、环境准备

服务器:Centos7

Jdk版本:1.8

Es版本:7.12.1

kibana版本:7.12.1

logstash版本:7.12.1

IP地址安装软件
192.168.50.211Es,Kibana,logstash

2、安装docker

安装步骤参考:https://blog.csdn.net/weixin_38405770/article/details/87979242

3、安装es

# 创建容器网络 elk-net
docker network create elk-net
# docker 安装 es 
docker run -d \
	--name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/share/elasticsearch/data \
    -v es-plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network elk-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.12.1

# 开通端口
sudo iptables -A INPUT -p tcp --dport 9200 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9300 -j ACCEPT

命令解释:

-e "cluster.name=es-docker-cluster":设置集群名称
-e "http.host=0.0.0.0":监听的地址,可以外网访问
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
-e "discovery.type=single-node":非集群模式
-v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
-v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
-v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
--privileged:授予逻辑卷访问权
--network elk-net :加入一个名为es-net的网络中
-p 9200:9200:端口映射配置

在浏览器中输入:http://192.168.50.211:9200 (按照自己的ip访问)即可看到elasticsearch的响应结果:

在这里插入图片描述

4、安装kibana

# docker 安装 kibana
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
-e "I18N_LOCALE=zh-CN" \
--network=elk-net \
-p 5601:5601  \
kibana:7.12.1
# 开通端口
sudo iptables -A INPUT -p tcp --dport 5601 -j ACCEPT
--network elk-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
-e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
-p 5601:5601:端口映射配置

在浏览器中输入:http://192.168.50.211:5601 (按照自己的ip访问)即可看到安装成功的结果:

在这里插入图片描述

5、安装Logstash

5.1 安装Logstash
# docker 安装 Logstash
docker run -d \
-p 5044:5044 -p 5045:5045 -p 9600:9600 \
--name logstash --network=elk-net logstash:7.12.1
# 开通端口
sudo iptables -A INPUT -p tcp --dport 5044 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 5045 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9600 -j ACCEPT
-p 5044:5044 -p 5045:5045 # 为演示多管道开通的两个端口
5.2 设置ES的地址

创建完容器之后,需要在容器修改一些配置

#进入容器
docker exec -it logstash /bin/bash

找到config目录中的logstatsh.yml文件

在这里插入图片描述

修改里面的内容,设置es服务的地址,如下

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.50.211:9200" ] #设置跟es的服务地址
5.3 设置logstash收集日志的输入和输出
#进入容器
docker exec -it logstash /bin/bash

在pipline目录中创建两个文件 logstash-demo.conf,logstash-test.conf

在这里插入图片描述

logstash-demo.conf 内容如下:

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

output {
  elasticsearch {
      hosts  => ["http://192.168.50.211:9200"]   # ElasticSearch 的地址和端口
      index  => "demo"         # 指定索引名,可以根据自己的需求指定命名
      codec  => "json"
  }
  stdout {
    codec => rubydebug
  }
}

logstash-test.conf 内容如下:

input {
  tcp {
    mode => "server"
    host => "0.0.0.0"  # 允许任意主机发送日志
    port => 5045
    codec => json_lines    # 数据格式
  }
}

output {
  elasticsearch {
      hosts  => ["http://192.168.50.211:9200"]   # ElasticSearch 的地址和端口
      index  => "test"         # 指定索引名,可以根据自己的需求指定命名
      codec  => "json"
  }
  stdout {
    codec => rubydebug
  }
}
5.4 配置管道 pipline
#进入容器
docker exec -it logstash /bin/bash

进入config目录下找到 pipline.yml 配置文件

在这里插入图片描述

修改为如下配置:

- pipeline.id: demo
  path.config: "/usr/share/logstash/pipeline/logstash-demo.conf"
- pipeline.id: test
  path.config: "/usr/share/logstash/pipeline/logstash-test.conf"

配置两个pipline只想不通的配置文件,我们记住 demo 端口为 5044; test 端口为 5045

6、应用系统对接logstash

创建两个springboot应用

加入如下依赖:

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

配置 logback-spring.xml 该配置应于 application.yml 同级

在这里插入图片描述

注意:这里需要注意下一下 logstash的服务地址和端口!!!

demo 应配置为:192.168.200.211:5044

test 应配置为:192.168.200.211:5045

<?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.211: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>

在application.yml文件中设置logback配置的目录

logging:
  config: classpath:logback-spring.xml

分别编写一个定时任务,产生日志数据

package com.example.demo.task;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 测试定时任务
 */
@Slf4j
@Component
public class TestTask {
    // 这个变量 如果在 demo 中 值为 demo ;如果在 test 中 值为 test 用来标记日志来源!
    private static final String APP = "demo";

    @Scheduled(cron = "0/5 * * * * ?")
    public void runTask() {
        log.info("{} 中定时任务 runTask 方法 执行了", APP);
    }
}

在启动类中开启Scheduled

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class DemoApplication {

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

}

分别启动两个应用,记住启动端口要改一下,不然端口占用起不来!!!

7、ELK基本使用

7.1 查看索引文件

对接项目之后,可以启动项目,产生一些日志数据

然后打开kibana 地址为:http://192.168.50.211:5601/ 根据实际情况修改地址,找到索引管理

在这里插入图片描述

可以查看已创建的日志索引
在这里插入图片描述

在这里插入图片描述

7.2 添加索引模式

如果想用kibana方便的查看日志的数据,可以添加索引模式,如下图:

在这里插入图片描述

输入索引名称然后点击下一步

在这里插入图片描述

选择时间字段后点击创建索引模式即可

在这里插入图片描述

test 应用创建索引模式同上,动手练一下吧。

7.3 检索日志

打开Discover

在这里插入图片描述

在筛选这里选择demo应用

在这里插入图片描述

可以看到有日志输出

切换到test应用查看
在这里插入图片描述

可以看到日志都正常输出了。

至此,elk简单的多pipiline就搭建并应用完成了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
搭建和使用ELK平台,您需要按照以下步骤进行操作: 1. 安装和配置Elasticsearch:首先,您需要安装Elasticsearch。您可以从官方网站下载适用于您的操作系统的包,并按照官方文档中的指南进行安装。安装完成后,您需要进行一些基本的配置,如设置集群名称和节点名称。 2. 安装和配置Logstash:Logstash 是一个用于数据收集、处理和传输的工具。您可以从官方网站下载适用于您的操作系统的包,并按照官方文档中的指南进行安装。安装完成后,您需要配置Logstash来定义输入、过滤器和输出,以便从不同的数据源收集日志数据并将其发送到Elasticsearch。 3. 安装和配置Kibana:Kibana 是一个用于数据可视化和分析的工具。您可以从官方网站下载适用于您的操作系统的包,并按照官方文档中的指南进行安装。安装完成后,您需要配置Kibana来连接到Elasticsearch,并创建可视化仪表板、图表和搜索查询等。 4. 配置和优化ELK集群:一旦您完成了Elasticsearch、Logstash和Kibana的安装和配置,您可以开始进行集群配置和优化。您可以调整Elasticsearch集群的硬件资源分配,配置索引和搜索的优化参数,以满足您的需求。 5. 生产环境使用:在将ELK平台投入生产环境之前,您需要确保您的日志数据源正确地发送到Logstash,并且通过Kibana可以正确地进行搜索和可视化。您还应该设置适当的安全性措施,如访问控制和身份验证,以保护您的数据。 以上是搭建和使用ELK平台的一般步骤。具体操作可能因环境和需求而有所不同,建议您参考官方文档以获取更详细的指南和最佳实践。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值