Docker 安裝 LogStash的詳細過程
關于LogStash
Logstash
,作為Elastic Stack
家族中的核心成員之一,是一個功能強大的開源數(shù)據(jù)收集引擎。它專長于從各種來源動態(tài)地獲取、解析、轉換和豐富數(shù)據(jù),并將這些結構化或非結構化的數(shù)據(jù)高效地傳輸?shù)街T如Elasticsearch
等存儲系統(tǒng)中進行集中分析和可視化展現(xiàn)。在本文中,我們將詳細介紹如何借助Docker
容器技術快速安裝配置Logstash
,以實現(xiàn)日志及各類事件數(shù)據(jù)的無縫集成與實時處理。
拉取鏡像并拷貝配置
docker run -d --name logstash logstash:7.14.1 # 拷貝數(shù)據(jù) 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” 時,意味著服務將在所有可用網(wǎng)絡接口上監(jiān)聽HTTP請求,允許任何IP地址的客戶端連接。xpack.monitoring.elasticsearch.hosts
:指向Elasticsearch
服務的URL
->http://elasticsearch:9200
,但這里沒有使用具體的IP
地址,而是用了一個名為elasticsearch
的服務名或容器名。
elasticsearch:9200 就是通過內(nèi)部DNS解析機制引用在同一網(wǎng)絡命名空間下的Elasticsearch服務容器的9200端口,這意味著Logstash或相關組件收集的監(jiān)控信息將被自動發(fā)送到關聯(lián)的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
在Elasticsearch
、Logstash
或其他使用Java
虛擬機(JVM
)的應用程序中,jvm.options
文件是用來配置JVM
運行時參數(shù)的重要文件。當你需要調(diào)整JVM
相關的設置,比如堆內(nèi)存大小、垃圾回收策略、線程數(shù)量等時,就需要修改這個文件。
# 增加JVM堆內(nèi)存大小 -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)創(chuàng)建一個服務器監(jiān)聽器,等待來自客戶端的連接。
- mode => "server" 指定為服務器模式,接受來自其他服務或應用的日志數(shù)據(jù)。
- host => "0.0.0.0" 表示在所有網(wǎng)絡接口上監(jiān)聽連接請求。
- port => 5044 設置了監(jiān)聽端口為5044。
- codec => json_lines 指定了編解碼器類型,這意味著每個TCP消息應該包含一個或多條JSON格式的數(shù)據(jù),每行一條JSON記錄。
output部分:
- 使用Elasticsearch輸出插件(elasticsearch)將處理后的日志事件發(fā)送到Elasticsearch集群。
- hosts => "127.0.0.1:9200" 設置了Elasticsearch集群的地址與端口,這里指本地主機上的默認Elasticsearch實例。
- index => "%{[spring.application.name]}-%{+YYYY.MM.dd}" 定義了索引名稱模板。該模板會根據(jù)事件中的字段動態(tài)生成索引名,其中:
- %{[spring.application.name]} 是從日志事件中提取的Spring Boot應用的名字作為索引前綴。
- %{+YYYY.MM.dd} 是基于當前日期時間動態(tài)生成的索引后綴,每天都會創(chuàng)建一個新的索引以存儲當天的日志數(shù)據(jù)。
這樣配置后,Logstash
將作為一個TCP
日志收集服務器運行,并且能夠接收JSON
格式的日志數(shù)據(jù),然后將其按照指定的規(guī)則寫入到Elasticsearch
集群中相應的索引里,便于后續(xù)進行搜索、分析和可視化展示。
啟動容器并掛載
#注意先刪除之前的容器 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>
修改項目內(nèi)的 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內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
基于alpine用dockerfile創(chuàng)建的爬蟲Scrapy鏡像的實現(xiàn)
這篇文章主要介紹了基于alpine用dockerfile創(chuàng)建的爬蟲Scrapy鏡像的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12docker?build運行報錯source:?not?found解決分析
這篇文章主要為大家介紹了docker?build運行報錯source:?not?found解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09docker-compose build使用參數(shù)args方式
這篇文章主要介紹了docker-compose build使用參數(shù)args方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01在 Ubuntu 下通過 Docker 部署 Mastodon&nbs
在Ubuntu系統(tǒng)上通過Docker部署Mastodon服務器的步驟,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2025-03-03使用?Docker?Compose?構建復雜的多容器?App的方法
Docker Compose 工具相當于 C/C++ 的 make 工具,使用 make 需要 Makefile,所有的編譯鏈接設置都在Makefile 中指定,不需要為了運行程序而每次都在終端手動輸入長串的指令,這篇文章主要介紹了使用?Docker?Compose?構建復雜的多容器?App,需要的朋友可以參考下2022-04-04