docker搭建elk

1.拉取镜像

docker pull elasticsearch:7.16.3
docker pull logstash:7.16.3
docker pull kibana:7.16.3

2.ES配置

elasticsearch.yml

http.host: 0.0.0.0
xpack.security.enabled: false
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: false
network.host: 0.0.0.0

3.logstash配置

logstash.yml

http.host: 0.0.0.0
xpack.monitoring.elasticsearch.hosts: [ "http://es7163:9200" ]

logstash.conf:

input {
  tcp {
          mode => "server"
          host => "0.0.0.0"
          port => 5044
          codec => json_lines
      }
}
filter{

}
output {
  elasticsearch {
      hosts => "es7163:9200"
      index => "tingshu-%{+YYYY.MM.dd}"
  }
}

4.kibana配置

kibana.yml:

server.host: "0.0.0.0"
elasticsearch.hosts: ["http://es7163:9200"]
i18n.locale: "zh-CN"

5.创建自定义网络

docker network create elk

6.docker-compose.yml文件

version: '3'

services:
  elasticsearch:
    image: elasticsearch:7.16.3
    container_name: es7163
    networks:
      - elk
    environment:
      - ES_JAVA_OPTS=-Xms1024m -Xmx1024m
      - discovery.type=single-node
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - /usr/local/es/data:/usr/share/elasticsearch/data
      - /usr/local/es/plugins:/usr/share/elasticsearch/plugins
      - /usr/local/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    restart: always

  logstash:
    image: logstash:7.16.3
    container_name: logstash7163
    networks:
      - elk
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 4g
    ports:
      - "5044:5044"  # Logstash 默认端口
      - "9600:9600"
    volumes:
      - /usr/local/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml  # 配置文件
      - /usr/local/logstash/config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf  # 配置文件
    restart: always
    depends_on:
      - elasticsearch

  kibana:
    image: kibana:7.16.3
    container_name: kibana7163
    networks:
      - elk
    ports:
      - "5601:5601"
    volumes:
      - /usr/local/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
    restart: always
    depends_on:
      - elasticsearch

networks:
  elk:
    driver: bridge

7.springboot对接Logstash

1.创建一个springboot项目引入主要依赖
<dependency>
     <groupId>net.logstash.logback</groupId>
     <artifactId>logstash-logback-encoder</artifactId>
     <version>6.6</version>
</dependency>
2.application.yml配置
server:
  port: 8080
logging:
  config: classpath:logback-spring.xml
spring:
  application:
    name: linging-test
3.resources目录中新增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.159.100: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>
4.启动项目,搞点日志

在这里插入图片描述

5.进入kibana控制台

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

6.添加索引模式

在这里插入图片描述

7.检索日志,打开Discover

在这里插入图片描述

### 使用Docker部署ELK Stack教程 #### 准备工作 为了确保顺利部署,在开始之前需确认已安装好Docker环境。对于初次使用者来说,建议先熟悉基本的Docker命令操作。 #### 下载镜像 首先需要拉取官方提供的Elasticsearch、Logstash以及Kibana三个组件对应的最新版本Docker镜像: ```bash docker pull elasticsearch:7.12.1 docker pull logstash:7.12.1 docker pull kibana:7.12.1 ``` #### 创建网络 为了让各个服务之间能够互相通信,创建一个新的自定义桥接网络是非常必要的: ```bash docker network create elk ``` #### 启动Elasticsearch实例 配置文件可以根据实际需求调整,默认情况下无需额外设置即可正常运行。通过下面这条指令来启动Elasticsearch容器,并将其加入到刚刚建立好的`elk`网络中去[^1]: ```bash docker run -d --name elasticsearch \ -e "discovery.type=single-v $PWD/elasticsearch/data:/usr/share/elasticsearch/data \ --net=elk \ elasticsearch:7.12.1 ``` #### 启动Logstash实例 同样地,这里也提供了默认配置适用于大多数场景下的日志处理流程;如果有特殊要求,则可以修改本地路径下相应的`.conf`文件再挂载进去。执行如下命令以启动Logstash容器并连接至同一网络内[^2]: ```bash docker run -d --name=logstash \ -v $PWD/logstash/pipeline/:/usr/share/logstash/pipeline/ \ --net=elk \ logstash:7.12.1 ``` #### 启动Kibana实例 最后一步就是让可视化工具Kibana上线啦!指定端口映射关系后就可以轻松访问Web界面了。按照以下方式启动Kibana容器并与前面两个节点互联[^3]: ```bash docker run -d --name=kibana \ -p 5601:5601 \ -v $PWD/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \ --net=elk \ kibana:7.12.1 ``` 完成上述步骤之后,整个基于Docker构建起来的小型ELK平台就已经准备就绪了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值