Logstash
,作为Elastic Stack
家族中的核心成员之一,是一个功能强大的开源数据收集引擎。它专长于从各种来源动态地获取、解析、转换和丰富数据,并将这些结构化或非结构化的数据高效地传输到诸如Elasticsearch
等存储系统中进行集中分析和可视化展现。在本文中,我们将详细介绍如何借助Docker
容器技术快速安装配置Logstash
,以实现日志及各类事件数据的无缝集成与实时处理。
1 2 3 4 5 6 7 |
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 的地址
12 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条认证配置:
1 2 |
xpack.monitoring.elasticsearch.username: "elastic" xpack.monitoring.elasticsearch.password: "123456" |
最终示例:
1 2 3 4 |
http.host: "0.0.0.0" xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ] xpack.monitoring.elasticsearch.username: "elastic" xpack.monitoring.elasticsearch.password: "123456" |
在Elasticsearch
、Logstash
或其他使用Java
虚拟机(JVM
)的应用程序中,jvm.options
文件是用来配置JVM
运行时参数的重要文件。当你需要调整JVM
相关的设置,比如堆内存大小、垃圾回收策略、线程数量等时,就需要修改这个文件。
1 2 3 |
# 增加JVM堆内存大小 -Xms512m -Xmx512m |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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部分:
output部分:
这样配置后,Logstash
将作为一个TCP
日志收集服务器运行,并且能够接收JSON
格式的日志数据,然后将其按照指定的规则写入到Elasticsearch
集群中相应的索引里,便于后续进行搜索、分析和可视化展示。
1 2 3 4 5 6 7 8 9 10 11 |
#注意先删除之前的容器 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 |
1 |
docker logs -f logstash |
引入Maven依赖
1 2 3 4 5 6 |
<!-- logstash --> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> version>7.1.1</version> </dependency> |
修改项目内的 logback.xml 文件 增加 logstash 配置
1 2 3 4 5 6 7 8 9 10 11 12 |
<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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
from:https://www.jb51.net/server/31819669s.htm