Docker 安装 LogStash的详细过程

 更新时间:2024年03月20日 16:21:36   作者:花伤情犹在  
Logstash,作为Elastic Stack家族中的核心成员之一,是一个功能强大的开源数据收集引擎,在本文中,我们将详细介绍如何借助Docker容器技术快速安装配置Logstash,以实现日志及各类事件数据的无缝集成与实时处理,感兴趣的朋友一起看看吧
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

关于LogStash

Logstash,作为Elastic Stack家族中的核心成员之一,是一个功能强大的开源数据收集引擎。它专长于从各种来源动态地获取、解析、转换和丰富数据,并将这些结构化或非结构化的数据高效地传输到诸如Elasticsearch等存储系统中进行集中分析和可视化展现。在本文中,我们将详细介绍如何借助Docker容器技术快速安装配置Logstash,以实现日志及各类事件数据的无缝集成与实时处理。

拉取镜像并拷贝配置

docker run -d --name logstash logstash:7.14.1
# 拷贝数据
docker cp logstash:/usr/share/logstash/config ./config
docker cp logstash:/usr/share/logstash/data ./data
docker cp logstash:/usr/share/logstash/pipeline ./pipeline
#文件夹赋权
chmod -R 777 ./config ./data ./pipeline

修改相应配置文件

修改config 下的 logstash.yml 文件,主要修改 es 的地址

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
  • http.host:当设置为 “0.0.0.0” 时,意味着服务将在所有可用网络接口上监听HTTP请求,允许任何IP地址的客户端连接。
  • xpack.monitoring.elasticsearch.hosts:指向Elasticsearch服务的URL ->http://elasticsearch:9200,但这里没有使用具体的IP地址,而是用了一个名为 elasticsearch 的服务名或容器名。

elasticsearch:9200 就是通过内部DNS解析机制引用在同一网络命名空间下的Elasticsearch服务容器的9200端口,这意味着Logstash或相关组件收集的监控信息将被自动发送到关联的Elasticsearch容器进行存储和分析。

安全考虑
如果为了安全考虑给ElasticSearch设置了访问认证,则需要配置用户名与密码,需要新增2条认证配置:

xpack.monitoring.elasticsearch.username: "elastic"
xpack.monitoring.elasticsearch.password: "123456"

最终示例:

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.elasticsearch.username: "elastic"
xpack.monitoring.elasticsearch.password: "123456"

修改config下的jvm.options

ElasticsearchLogstash或其他使用Java虚拟机(JVM)的应用程序中,jvm.options 文件是用来配置JVM运行时参数的重要文件。当你需要调整JVM相关的设置,比如堆内存大小、垃圾回收策略、线程数量等时,就需要修改这个文件。

# 增加JVM堆内存大小
-Xms512m
-Xmx512m

修改pipeline 下的 logstash.conf

input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 5044
    codec => json_lines
  }
}
output {
  elasticsearch {
      hosts  => ["http://124.221.147.235:9200"]
      user => elastic
      password => 123456
      index  => "logs-%{+YYYY.MM}"
      codec  => "json"
  }
  stdout {
    codec => rubydebug
  }
}

input部分:

  • 使用TCP输入插件(tcp)创建一个服务器监听器,等待来自客户端的连接。
    • mode => "server" 指定为服务器模式,接受来自其他服务或应用的日志数据。
    • host => "0.0.0.0" 表示在所有网络接口上监听连接请求。
    • port => 5044 设置了监听端口为5044。
    • codec => json_lines 指定了编解码器类型,这意味着每个TCP消息应该包含一个或多条JSON格式的数据,每行一条JSON记录。

output部分:

  • 使用Elasticsearch输出插件(elasticsearch)将处理后的日志事件发送到Elasticsearch集群。
    • hosts => "127.0.0.1:9200" 设置了Elasticsearch集群的地址与端口,这里指本地主机上的默认Elasticsearch实例。
    • index => "%{[spring.application.name]}-%{+YYYY.MM.dd}" 定义了索引名称模板。该模板会根据事件中的字段动态生成索引名,其中:
      • %{[spring.application.name]} 是从日志事件中提取的Spring Boot应用的名字作为索引前缀。
      • %{+YYYY.MM.dd} 是基于当前日期时间动态生成的索引后缀,每天都会创建一个新的索引以存储当天的日志数据。

这样配置后,Logstash将作为一个TCP日志收集服务器运行,并且能够接收JSON格式的日志数据,然后将其按照指定的规则写入到Elasticsearch集群中相应的索引里,便于后续进行搜索、分析和可视化展示。

启动容器并挂载

#注意先删除之前的容器
docker rm -f logstash
# 启动容器并挂载
docker run --name logstash \
-p 5044:5044 \
-p 9600:9600 \
--privileged=true \
-e ES_JAVA_OPTS="-Duser.timezone=Asia/Shanghai" \
-v /mydata/logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
-v /mydata/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \
-d logstash:7.14.2

查看运行情况

docker logs -f logstash

SpringBoot 整合 ELK

引入Maven依赖

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

修改项目内的 logback.xml 文件 增加 logstash 配置

    <springProperty scope="context" name="appName" source="spring.application.name"/>
    <!--输出到logstash的appender-->
    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--可以访问的logstash日志收集端口-->
        <destination>127.0.0.1:5044</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"spring.application.name":"${appName}"}</customFields>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="logstash"/>
    </root>

启动项目查看是否成功推送日志

到此这篇关于Docker 安装 LogStash的文章就介绍到这了,更多相关Docker 安装 LogStash内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • docker 已经运行的容器重命名

    docker 已经运行的容器重命名

    有时我们将容器名字起的不太好,想改一下,本文主要介绍了docker 已经运行的容器重命名,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • docker实现跨宿主机的容器之间网络互联

    docker实现跨宿主机的容器之间网络互联

    本文主要介绍了docker实现跨宿主机的容器之间网络互联,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • docker?build运行报错source:?not?found解决分析

    docker?build运行报错source:?not?found解决分析

    这篇文章主要为大家介绍了docker?build运行报错source:?not?found解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 使用docker部署grafana+prometheus配置

    使用docker部署grafana+prometheus配置

    这篇文章主要介绍了docker部署grafana+prometheus配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • 详解Ubuntu16.04安装Docker、nvidia-docker的教程

    详解Ubuntu16.04安装Docker、nvidia-docker的教程

    这篇文章主要介绍了详解Ubuntu16.04安装Docker、nvidia-docker的教程,需要的朋友可以参考下
    2019-10-10
  • Docker中使用Nginx代理多个应用站点的方法

    Docker中使用Nginx代理多个应用站点的方法

    这篇文章主要介绍了Docker中使用Nginx代理多个应用站点的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • docker离线部署docker,部署业务方式

    docker离线部署docker,部署业务方式

    这篇文章主要介绍了docker离线部署docker,部署业务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Docker?创建centos容器集群并实现远程登录功能

    Docker?创建centos容器集群并实现远程登录功能

    这篇文章主要介绍了Docker?创建centos容器集群并实现远程登录,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 详解六种减小Docker镜像大小的方法

    详解六种减小Docker镜像大小的方法

    这篇文章主要介绍了详解六种减小Docker镜像大小的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • docker容器无法访问宿主机端口的解决

    docker容器无法访问宿主机端口的解决

    这篇文章主要介绍了docker容器无法访问宿主机端口的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论

?


http://www.vxiaotou.com