安装 Logstash (本地及 Docker) - Elastic Stack 实战手册-阿里云开发者社区

开发者社区> Elasticsearch 技术团队> 正文
登录阅读全文

安装 Logstash (本地及 Docker) - Elastic Stack 实战手册

简介: Logstash 是一个功能强大的工具,可与各种部署集成。 它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据。 如果你的数据需要 Beats 中没有的其他处理,则需要将 Logstash 添加到部署中。

970X90.png

· 更多精彩内容,请下载阅读全本《Elastic Stack实战手册》

· 加入创作人行列,一起交流碰撞,参与技术圈年度盛事吧

创作人:冯江涛
审稿人:刘帅

Logstash 是一个功能强大的工具,可与各种部署集成。 它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据。 如果你的数据需要 Beats 中没有的其他处理,则需要将 Logstash 添加到部署中。

1.png

Logstash 是 Elastic Stack 非常重要的一部分,但是它不仅仅为 Elasticsearch 所使用。它可以接受广泛的各种数据源。Logstash 可以帮利用它自己的 Filter 帮我们对数据进行解析,丰富,转换等。

2.png

最后,它可以把自己的数据输出到各种需要的数据储存地,这其中包括 Elasticsearch。

3.png

本章介绍 Logstash 的安装和部署,包括以下几个方面:

  1. 环境准备
  2. Logstash 的下载和安装
  3. 启动 Logstash
  4. 收集数据
  5. Docker 方式安装

环境准备

  • JVM 运行环境 Logstash 依赖 JVM 运行环境,本文以 Java 8 版本进行介绍,支持以下 JVM 版本:8、11、15。

Logstash 的下载和安装

Logstash 的安装版本需要和 Elasticsearch 的版本一致,或至少是大版本号码一致。在下面以 7.10 版本为例来进行安装。如果你需要安装其它版本的 Logstash,那么请在相应的命令行替换相应的版本号码。

Linux:

> curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-7.10.0-linux-x86_64.tar.gz
> tar xzvf logstash-7.10.0-linux-x86_64.tar.gz

APT

# 下载安装公钥
> wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
> sudo apt-get install apt-transport-https
# 保存仓库地址到本地
> echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
# 安装Logstash
> sudo apt-get update && sudo apt-get install logstash

YUM

# 下载安装公钥
> sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
# 新建文件/etc/yum.repos.d/logstash.repo,并插入以下内容
[logstash-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

# 安装logstash
> sudo yum install logstash

Mac and Homebrew

# 安装Elastic Homebrew仓库
> brew tap elastic/tap
# 安装Logstash
> brew install elastic/tap/logstash-full
# 通过Homebrew设置开机启动logstash服务
> brew services start elastic/tap/logstash-full
# 重启主机后,启动Logstash
> logstash

启动 Logstash

本文采用 tar 包安装方式进行阐述。

  • 进入 Logstash 安装目录
  • 最简配置启动 Logstash
# 通过控制台输入输出收集数据
> bin/logstash -e 'input { stdin { } } output { stdout {} }'
# 在控制台中输入 "Hello world!",然后会看到控制台输出"Hello world!"
hello world
2013-11-21T01:22:14.405+0000 0.0.0.0 hello world

收集数据

Logstash 包含3个主要部分:输入(inputs),过滤器(filters)和输出(outputs)。下面以采集 log4j 日志并输出到 Elasticsearch 为例进行阐述。

创建收集数据的配置文件 bin/log4j2es.conf,插入以下内容

input {
  file {
  # 要采集的log文件路径
    path => "/data/logs/springboot.log"
  }
}

filter {
}

output {
  stdout {
    codec => rubydebug
  }

  elasticsearch {
    hosts => ["localhost:9200"]
  }
}

指定配置启动Logstash

> bin/logstash -f bin/log4j2es.conf
# 或者后台启动
> nohup bin/logstash -f bin/log4j2es.conf >/dev/null 2>&1 &

查看收集到ElasticSearch索引的数据

> curl http://localhost:9200/_cat/indices

默认 Logstash 生成以 Logstash 开头带有日期的索引

green open logstash-2021.04.09-000001          3UhrpKMlRRCsJ7e5BRzHpA 1 1    0   0    208b    208b

查看索引中的数据

> curl -XPOST 'http://localhost:9200/logstash-2021.04.09-000001/_search'  -H 'Content-Type: application/json' -d '{"query":{"match_all":{}}}'

返回如下结果;

{
    "took": 1,
    "timed_out": false,
    "hits": {
        "hits": [
            {
                "_index": "logstash-2021.04.09-000001",
                "_type": "_doc",
                "_id": "aTL3UHkBSh9MyZ_E_yVB",
                "_score": 1.0,
                "_source": {
                    "host": "elastichost",
                    "path": "/data/logs/springboot.log",
                    "message": "2021-04-09 17:58:47.172  INFO 23556 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed3.",
                    "@version": "1",
                    "tags": [
                        "_grokparsefailure"
                    ],
                    "@timestamp": "2021-04-09T11:51:40.390Z"
                }
            }
        ]
    }
}

Docker方式安装

拉取镜像

docker pull docker.elastic.co/logstash/logstash:7.10.0

Docker 模式运行 Logstash,

# 1.参考tar包中logstah/config文件夹下所有配置拷贝一份放在宿主机 /usr/share/logstash/config/
# 2.修改pipeline.yml,增加以下配置
pipeline.id: main
path.config: /usr/share/logstash/config/log4j2es.conf
# -v挂载Logstash的配置/usr/share/logstash/config/到docker的路径~/settings/中
docker run --rm -it -v ~/settings/:/usr/share/logstash/config/ docker.elastic.co/logstash/logstash:7.10.0

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: