ElK docker环境搭建

环境信息

Centos 7
docker 20.10.18
elasticsearch:7.17.4
kibana:7.17.4
logstash:7.17.4

elasticsearch安装

  1. 拉取镜像
docker pull elasticsearch:7.17.4
  1. 创建映射目录(方便将对应的文件映射)
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data/
mkdir -p /mydata/elasticsearch/plugins
  1. 写入配置信息elasticsearch.yml
vim /mydata/elasticsearch/config/elasticsearch.yml
  1. 配置elasticsearch.yml
#写入配置信息
vim /mydata/elasticsearch/config/elasticsearch.yml
http.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
#忽略安全认证
xpack.security.enabled: false

#给映射目录赋权限
chmod -R 777 /mydata/elasticsearch
  1. 启动docker 容器
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data/:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.17.4

docker安装kibana

  1. 拉取镜像
docker pull docker.elastic.co/kibana/kibana:7.17.4
  1. 启动镜像
docker run -d --name kibana  -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://192.168.1.122:9200" docker.elastic.co/kibana/kibana:7.17.4

注意:需要将ELASTICSEARCH_HOSTS对应的ip地址改成你自己的es的ip

docker安装head插件

如果有谷歌插件的就不需要安装了

docker pull mobz/elasticsearch-head:5
docker run --restart=always --name elasticsearch-head -di -p 9100:9100 docker.io/mobz/elasticsearch-head:5

docker安装 logstash

  1. 安装logstash时,需要先启动一下logstash,然后将对应的目录拷贝出来,拷贝出来后我们再将对应的容器删除后,再重新启动,并将对应的目录映射出来
#拉取镜像
docker pull logstash:7.17.4
#启动镜像
docker run -d --name=logstash logstash:7.17.4 
#查看日志是否启动成功
docker logs -f logstash

#复制文件到本地
docker cp logstash:/usr/share/logstash /mydata/logstash/

#创建文件夹
mkdir /mydata/logstash/config/conf.d

#修改文件夹权限
chmod 777 -R /mydata/logstash

  1. vim /mydata/logstash/config/logstash.yml配置
http.host: "0.0.0.0"
#根据实际修改es的ip:port
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.1.122:9200" ]
## 主管道的Logstash配置路径,如果指定目录或通配符,配置文件将按字母顺序从目录中读取
path.config: /usr/share/logstash/config/conf.d/*.conf
##Logstash将其日志写到的目录
path.logs: /usr/share/logstash/logs
  1. 配置输入输出vim /mydata/logstash/config/conf.d/test.conf
input {
  tcp {
    port => 5044
	#输入json格式
    codec => json_lines
  }
}
output {
  elasticsearch {
    hosts => ["http://192.168.1.122:9200"]
    index => "%{[server_name]}-log-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}
  1. 删除容器后重新启动容器
#删除容器
docker rm -f logstash 

#重新映射目录启动docker镜像
docker run -d --name=logstash -p 5044:5044 -v /mydata/logstash:/usr/share/logstash logstash:7.17.4 


#有需要再 安装logstash插件 不是必须安装
logstash-plugin install logstash-filter-multiline

项目配置

  1. 新建spring boot项目引入logstash对应的依赖
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.9</version>
</dependency>
  1. logback-spring.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<!-- 从高到地低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
<!-- 日志输出规则 根据当前ROOT 级别,日志输出时,级别高于root默认的级别时 会输出 -->
<!-- 以下 每个配置的 filter 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过filter 过滤只记录本级别的日志-->
<!-- 属性描述 scan:性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位, 默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration debug="false" scanPeriod="60 seconds" scan="true">
    <!-- 定义日志文件 输入位置 -->
    <property value="./test_log/" name="logPath"/>
    <!-- 日志最大的历史 30天 -->
    <property value="30" name="maxHistory"/>
    <!-- 配置项, 通过此节点配置日志输出位置(控制台、文件、数据库)、输出格式等-->
    <!-- ConsoleAppender代表输出到控制台 -->
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <!-- layout代表输出格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n</pattern>
        </layout>
    </appender>
    <!-- 日志输出文件 -->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n</pattern>
        </encoder>
        <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender-->
        <!-- 滚动策略,它根据时间来制定滚动策略.既负责滚动也负责触发滚动 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 输出路径 -->
            <fileNamePattern>${logPath}/info/es-demo-%d.log</fileNamePattern>
            <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6,则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除-->
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <!-- 按照固定窗口模式生成日志文件,当文件大于20MB时,生成新的日志文件。窗口大小是1到3,当保存了3个归档文件后,将覆盖最早的日志。 <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><fileNamePattern>${logPath}/%d{yyyy-MM-dd}/.log.zip</fileNamePattern><minIndex>1</minIndex><maxIndex>3</maxIndex></rollingPolicy> -->
        <!-- 查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动 <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>5MB</maxFileSize></triggeringPolicy> -->
    </appender>
    <!-- 特殊记录Error日志 -->
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 只记录ERROR级别日志,添加范围过滤,可以将该类型的日志特殊记录到某个位置 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logPath}/error/%d.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
    </appender>
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.1.122:5044</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" >
            <customFields>{"server_name":"es-demo"}</customFields>
        </encoder>
    </appender>
    <!-- 根节点,表名基本的日志级别,里面可以由多个appender规则 -->
    <!-- level="info"代表基础日志级别为info -->
    <root level="info">
        <!-- 引入控制台输出规则 -->
        <appender-ref ref="consoleLog"/>
        <appender-ref ref="fileInfoLog"/>
        <appender-ref ref="fileErrorLog"/>
        <appender-ref ref="LOGSTASH"/>
    </root>
</configuration>
  1. 需要将图片中对应的ip,端口号改成自己logstash对应的ip端口号
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值