当前位置: 首页 > news >正文

20220104 - liyan

本文主要对 ELK 套件中的 filebeat, logstash, elasticsearch 的安装进行实践,以及简单运行。

Elasticsearch 安装

这里参照官网给出的docker-compose.yml文件设置elasticsearch集群。elastisearch支持single-nodemulti node cluster两种部署模式。在本文中,实际上两种方式都能达到效果。使用single-node启动的环境,查看集群状态时会出现status:yellow。将docker-compose.yml文件放置在一个单独的目录下,然后创建data01, data02, data03目录。依据实际需要,还可创建plugins目录映射。

version: '2'
services:es01:container_name: es01image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0ports:- 9200:9200- 9300:9300volumes:- ./data01:/usr/share/elasticsearch/dataenvironment:- node.name=es01- cluster.name=es-docker-cluster- discovery.seed_hosts=es02- cluster.initial_master_nodes=es01,es02- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms128m -Xmx128m"ulimits:memlock:soft: -1hard: -1networks:- elastices02:container_name: es02image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0environment:- node.name=es02- cluster.name=es-docker-cluster- discovery.seed_hosts=es01- cluster.initial_master_nodes=es01,es02- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms128m -Xmx128m"volumes:- ./data02:/usr/share/elasticsearch/dataulimits:memlock:soft: -1hard: -1networks:- elastices03:container_name: es03image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0environment:- node.name=es03- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es02- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms128m -Xmx128m"volumes:- data03:/usr/share/elasticsearch/dataulimits:memlock:soft: -1hard: -1networks:- elasticvolumes:data01:driver: localdata02:driver: localdata03:driver: localnetworks:elastic:driver: bridgeexternal: true

注意这里将集群的网络设置为external,这样后续的logstash才能找到服务节点。此外,由于笔者的机器可用存储较小,因此设置es的存储占用设置为128m。实际使用时,可以按照需求进行调整。
运行docker-compose up -d即可后台启动。启动后,curl -X GET "localhost:9200/_cat/nodes?v=true&pretty" 判断集群状态。

Logstash 安装

collect, parse transform logs

version: '2'
services:logstash:image: docker.elastic.co/logstash/logstash:7.15.0container_name: logstashuser: rootports:- 5004:5004volumes:- ./config:/usr/share/logstash/config/- /etc/localtime:/etc/localtimecommand: bash -c "cd /usr/share/logstash && logstash -f config/online.conf"networks:- elasticnetworks:elastic:driver: bridgeexternal: true
# ./config/online.conf
input {# 这里支持多种 inputbeats {port => 5004codec => "json"}
}filter {# 这里基于 ruby 脚本进行过滤ruby {path => "./config/filter.rb"}
}output {# 这里将过滤后的结果输出到标准输出及 es 中stdout {codec => json}elasticsearch {hosts => ["es01:9200"]index => "logstash"#user => ""#password => ""}
}
# config/filter.rb
# 按照 online.conf 中的配置,logstash 启动后,会读取 filter.rb,并使用 filter 函数作为过滤函数。
require "json"BEGIN{puts "start event filter"
}END{puts "end event filter"
}def filter(event)puts eventif event.get("[errno]") != 0return []endvalid_age = 0event.get("[data]").each{ | info |if info["age"] < 10valid_age += info["age"]end}event.set("[data]", valid_age)return [event]
end

logstash 启动后,会监听容器内的 5004 接口(配置于online.conf中),如果有信息传入,则会经过filter.rb中的 filter() 函数对数据进行处理。而后输出到标准输出及 es01容器5004端口的elasticsearch服务。由于elasticsearchlogstash容器使用了相同的网络,因此可以互相感知。

filebeat 安装

filebeat 作为轻量级的日志收集器,仅占用很少的资源,即可完成日志的采集,并且转发至配置的logstash进行后续的处理、归档等操作。

version: '2'
services:filebeat:image: docker.elastic.co/beats/filebeat:7.16.0container_name: filebeatuser: rootenvironment:- strict.perms=falsevolumes:- ./filebeat.yml:/usr/share/filebeat/filebeat.yml- ./data:/usr/share/filebat/datanetworks:- elasticcommand: bash -c "cd /usr/share/filebeat && filebeat -e -c ./filebeat.yml"networks:elastic:driver: bridgeexternal: true
# filebeat.yml
filebeat.inputs:- type: logenabled: truepaths:- /usr/share/filebeat/input.logfilebeat.config:modules:path: ${path.config}/modules.d/*.ymlreload.enabled: falsefilbeat.autodiscover:providers:- type: dockerhints.enabled: trueoutput.logstash:hosts: "logstash:5004"

容器启动后,会监听/usr/share/filebeat/input.log文件。当该文件发生变更时,filebeat会读取增量的内容并进行转发。

let it run

经过上述步骤,一个简单的日志监听、采集、处理、存档的流程就构建了。为了测试,可以在filebeat容器的/usr/share/filebeat/input.log中写入:

{"errno": 0,"data": [{"age": 9,"name": "tt"},{"age": 8,"name": "gg"}]}

按照logstash:online.conf的逻辑,会向elasticsearchlogstash写入信息。

参考文献

  1. Linux-ELK日志收集
  2. Install Elasticsearch with Docker
  3. Logstash介绍
http://www.jsqmd.com/news/416685/

相关文章:

  • 2026最新财税代理服务商TOP5评测!权威榜单发布 - 十大品牌榜
  • 专业提交,决胜千里奋飞咨询卢老师、王老师成功提交EcoVadis问卷 - 奋飞咨询ecovadis
  • scikit-learn 生成样本数据集总结
  • 探讨国科(广州)化妆品研究公司品牌,产品在广州的口碑排名如何 - mypinpai
  • 2026广州/佛山代理报税/财税代理/代账/公司注册/营业执照代办TOP5评测 - 十大品牌榜
  • 编译器:类型系统的架构设计
  • [Record] 杂题选做-省选2.0
  • “木香槟榔”经典药对的配伍与应用
  • 2026年口碑好的美甲打磨机/余姚美甲打磨机最新TOP厂家排名 - 品牌宣传支持者
  • 2026年评价高的pp塑料中空板周转箱/汽车零部件PP中空板周转箱厂家推荐及选择指南 - 品牌宣传支持者
  • 神八五苔的抛圆硫酸钾适合什么作物,性价比高? - 工业设备
  • 2026年知名的取向电工钢/江苏取向电工钢实力工厂参考怎么选 - 品牌宣传支持者
  • 告别 “期刊焦虑”:Paperxie 如何用 AI 重构期刊论文写作全流程?
  • 讲讲2026年有机肥设备制造厂选购秘诀,商品有机肥设备厂哪个值得选 - 工业品网
  • 2026年 纸箱厂家推荐排行榜:彩色/运输/打包/瓦楞/工业品/日用品/水果/蔬菜/饮料/电子包装纸箱,精选优质定制源头工厂! - 品牌企业推荐师(官方)
  • Paperxie 期刊论文智能写作:AI 重构学术创作,让期刊发表不再是 “玄学”
  • APM521带网口的电能表厂家靠谱吗,价格大概多少钱呢 - 工业设备
  • 细聊北京可靠的遗产继承律师机构怎么收费? - 工业品牌热点
  • 2026年全国企业管理咨询公司哪家靠谱?实力强 靠谱度高 口碑出众 可以应对多种场景 - 深度智识库
  • 2026年口碑好的楼梯板石砖机/石砖机高口碑厂家推荐(评价高) - 品牌宣传支持者
  • 2026 最新代理报税服务商TOP5评测!专业财税服务权威榜单发布 - 十大品牌榜
  • 2026年知名的电缆桥架/热浸锌电缆桥架厂家推荐及选择指南 - 品牌宣传支持者
  • 奇怪问题解决记录:System.Management.ManagementException: 找不到
  • RAID 详解与配置指南
  • 2026年质量好的美甲店用美甲灯/美甲灯高评分品牌推荐(畅销) - 品牌宣传支持者
  • Ant Design 6.3.1 发布,企业级 UI 设计语言和 React 实现
  • 了解下破店肥哈磨街文创园店靠不靠谱?有啥特色推荐? - 工业推荐榜
  • GoJS 开发环境去除水印
  • 花灯选购指南:优质源头厂家盘点与推荐,大型户外花灯/十二生肖花灯/古镇花灯/马年花灯/水上花灯,花灯制造厂家怎么选 - 品牌推荐师
  • 2026年质量好的卫浴下水管/横竖两用下水管厂家选购指南与推荐 - 品牌宣传支持者