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

私有部署ELK,搭建自己的日志中心(三)-- Logstash的安装与使用

一、部署ELK

上文把采集端filebeat如何使用介绍完,现在随着数据的链路,继续~~

同样,使用docker-compose部署:

version: "3"
services:elasticsearch:container_name: elasticsearchimage: elastic/elasticsearch:7.9.3restart: alwaysuser: rootports:- 9200:9200- 9300:9300volumes:- ./elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- ./elasticsearch/data:/usr/share/elasticsearch/data- ./elasticsearch/logs:/usr/share/elasticsearch/logsenvironment:- "discovery.type=single-node"- "TAKE_FILE_OWNERSHIP=true"- "ES_JAVA_OPTS=-Xms1500m -Xmx1500m"- "TZ=Asia/Shanghai"kibana:container_name: kibanaimage: elastic/kibana:7.9.3restart: alwaysports:- 5601:5601volumes:- ./kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.ymlenvironment:- elasticsearch.hosts=elasticsearch:9200- "TZ=Asia/Shanghai"depends_on:- elasticsearchlogstash:image: elastic/logstash:7.9.3restart: alwayscontainer_name: logstashvolumes:- ./logstash/conf/logstash.conf:/usr/share/logstash/pipeline/logstash.conf- ./logstash/template.json:/etc/logstash/template.jsonports:- "5044:5044"- "9600:9600"environment:- "LS_JAVA_OPTS=-Xms1024m -Xmx1024m"- elasticsearch.hosts=elasticsearch:9200- "TZ=Asia/Shanghai"depends_on:- elasticsearch

在这里插入图片描述
可以看到,logstash和kibana都依赖于ElasticSearch,填写es的地址使用容器名“elasticsearch:9200”,省去分配内网IP的过程。

es存储需要持久化,

    volumes:- ./elasticsearch/data:/usr/share/elasticsearch/data

三个组件的配置文件都开放,便于在宿主机上修改。

├── elasticsearch
│   ├── conf
│   │   └── elasticsearch.yml
│   ├── data
│   └── logs
│       ├── gc.log
│       ├── gc.log.00
│       ├── gc.log.01
│       ├── gc.log.02
│       ├── gc.log.03
│       ├── gc.log.04
│       ├── gc.log.05
│       └── gc.log.06
├── kibana
│   └── conf
│       └── kibana.yml
└── logstash├── conf│   └── logstash.conf└── template.json

由于es和kibana在后文将另外讲述,所以本文只进一步介绍logstash的使用。

二、logstash的配置

1、template.json

定义索引的mapping信息:

{"template": "jvm-*","settings": {"number_of_shards": 1,"number_of_replicas": 0},"mappings": {"properties": {"logclass": {"type": "text"},"appname": {"type": "keyword"}, "traceid": {"type": "keyword"},"spanid": {"type": "keyword"},"export": {"type": "boolean"},"logpid": {"type": "keyword"},"logdate": {"type": "date","format": "yyyy-MM-dd HH:mm:ss.SSS"},"loglevel": {"type": "keyword"},"threadname": {"type": "keyword"},"logmsg": {"type": "text"}}}
}

2、logstash.conf

input {beats {port => 5044}   
}filter {grok {pattern_definitions => {"QUALIFIED" => "[a-zA-Z0-9$_.]+"}match => {"message" => "%{TIMESTAMP_ISO8601:logdate}%{SPACE}%{WORD:loglevel}%{SPACE}\[%{DATA:appname},%{DATA:traceid},%{DATA:spanid},%{DATA:export}\]%{SPACE}%{NUMBER:logpid} --- \[%{USERNAME:threadname}\] %{DATA:logclass} - %{GREEDYDATA:logmsg}"}}}output {elasticsearch {hosts =>["elasticsearch:9200"]#索引的正则表达式,比如jvm-20231227index => "jvm-%{+yyyy.MM.dd}"template => "/etc/logstash/template.json"template_name => "logstash"}}

三、注意事项

1、logstash.conf中的注释#开头,不能加空格

下面是错误的注释:

# 索引的正则表达式,比如jvm-20231227

正确的注释是:

#索引的正则表达式,比如jvm-20231227

2、grok语法

已有在线的grok表达式,这里推荐一款kibana的开发工具:
在这里插入图片描述

具体的语法见其github官网:

https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/ecs-v1/grok-patterns

http://www.lryc.cn/news/270664.html

相关文章:

  • 2023就这样过去了,2024会更好吗?
  • SpringBoot加载配置的6种方式
  • 大语言模型(LLM)训练平台与工具
  • docker配置buildx插件
  • mysql 空间函数
  • vscode调试 反汇编c/c++ 查看汇编代码gdb/lldb
  • 总结项目中oauth2模块的配置流程及实际业务oauth2认证记录(Spring Security)
  • 传感器原理与应用复习
  • 蓝桥杯python比赛历届真题99道经典练习题 (8-12)
  • 八个理由:从java8升级到Java17
  • 使用poi将pptx文件转为图片详解
  • 【微服务】springboot整合skywalking使用详解
  • electron——查看electron的版本(代码片段)
  • 【Electron】富文本编辑器之文本粘贴
  • 【哈希数组】697. 数组的度
  • GO语言工具函数库--Lancet
  • 25、商城系统(七):商城项目基础功能pom.xml(重要),mybatis分页插件
  • 【Docker-Dev】Mac M2 搭建docker mysql
  • idea中终端Terminal页面输入命令git log后如何退出
  • 程序员必备IDEA插件,什么是是IDE?
  • SkyWalking UI 修改发布Nginx
  • 移动硬盘打不开怎么办?没有比这更好的办法了
  • [场景实现]:多选框与树形结构递归
  • 从0到1浅析Redis服务器反弹Shell那些事
  • JavaScript中alert、confrim、prompt的使用及区别【精选】
  • Docker Compose容器编排实战
  • 科技创新实验室数据管理优选:高效企业网盘推荐
  • 记录一次云服务器使用docker搭建kafka的过程
  • 微信小程序与vue区别
  • GIT提交、回滚等基本操作记录