首页 系统教程 操作系统 详解Elasticsearch的基友Logstash

详解Elasticsearch的基友Logstash

Jul 18, 2024 am 06:56 AM
linux linux教程 红帽 linux系统 linux命令 linux认证 红帽linux linux视频

详解Elasticsearch的基友Logstash

Logstash 是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理。

一、原理

Input

可以从文件中、存储中、数据库中抽取数据,Input有两种选择一个是交给Filter进行过滤、修剪。另一个是直接交给Output

Filter

能够动态地转换和解析数据。可以通过自定义的方式对数据信息过滤、修剪

Output

提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。

详解Elasticsearch的基友Logstash

二、安装使用
1.安装
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.0.1.rpm
yum install -y ./logstash-6.0.1.rpm
2.Logstash配置文件
vim /etc/logstash/logstash.yml
path.data: /var/lib/logstash                                    # 数据存放路径
path.config: /etc/logstash/conf.d/*.conf                        # 其他插件的配置文件,输入输出过滤等等
path.logs: /var/log/logstash                                    # 日志存放路径
3.Logstash中的JVM配置文件

Logstash是一个基于Java开发的程序,需要运行在JVM中,可以通过配置jvm.options来针对JVM进行设定。比如内存的最大最小、垃圾清理机制等等。这里仅仅列举最常用的两个。

JVM的内存分配不能太大不能太小,太大会拖慢操作系统。太小导致无法启动。

vim /etc/logstash/jvm.options                               # logstash有关JVM的配置
-Xms256m                                                    # logstash最大最小使用内存
-Xmx1g
4.最简单的日志收集配置

安装一个httpd用于测试,配置Logstash收集Apache的accless.log日志文件

yum install httpd
echo "Hello world" > /var/www/html/index.html               # 安装httpd,创建首页用于测试
vim /etc/logstash/conf.d/test.conf
input {
    file {                                                  # 使用file作为数据输入
        path => ['/var/log/httpd/access_log']               # 设定读入数据的路径
        start_position => beginning                         # 从文件的开始处读取,end从文件末尾开始读取
    }
}
output {                                                    # 设定输出的位置
    stdout {
        codec => rubydebug                                  # 输出至屏幕
    }
}
5.测试配置文件

logstash是自带的命令但是没有再环境变量中,所以只能使用绝对路径来使用此命令。

/usr/share/logstash/bin/logstash -t  -f  /etc/logstash/conf.d/test.conf   # 测试执行配置文件,-t要在-f前面
Configuration OK                                                          # 表示测试OK
6.启动logstash

在当前会话运行logstash后不要关闭这个会话暂时称其为会话1,再打开一个新的窗口为会话2

/usr/share/logstash/bin/logstash  -f  /etc/logstash/conf.d/test.conf

启动以后在会话2中使用curl命令进行测试

curl 172.18.68.14

然后在回到之前的会话1可以看到输出的信息

{
      "@version" => "1",
          "host" => "logstash.shuaiguoxia.com",
          "path" => "/var/log/httpd/access_log",
    "@timestamp" => 2017-12-10T14:07:07.682Z,
       "message" => "172.18.68.14 - - [10/Dec/2017:22:04:44 +0800] \"GET / HTTP/1.1\" 200 12 \"-\" \"curl/7.29.0\""
}

至此最简单的Logstash配置就已经完成了,这里仅仅是将收集到的直接输出没有进行过滤或者修剪。

三、Elasticsearch与Logstash

上面的配置时Logsatsh从日志文件中抽取数据,然后输出至屏幕。那么在生产中往往是将抽取的数据过滤后输出到Elasticsearch中。下面讲解Elasticsearch结合Logstash

Logstash抽取httpd的access.log文件,然后经过过滤(结构化)之后输出给Elasticsearch Cluster,在使用Head插件就可以看到抽取到的数据。(Elasticsearch Cluster与Head插件搭建请查看前两篇文章)

详解Elasticsearch的基友Logstash

配置Logstash

    vim /etc/logstash/conf.d/test.conf
    input {
    file {
        path => ['/var/log/httpd/access_log']
        start_position => "beginning"
    }
    }
    filter {
    grok {
        match => {
            "message" => "%{COMBINEDAPACHELOG}"
        }

        remove_field => "message"   
    }
    }
    output {
    elasticsearch {
        hosts => ["http://172.18.68.11:9200","http://172.18.68.12:9200","http://172.18.68.13:9200"]
        index => "logstash-%{+YYYY.MM.dd}"
        action => "index"
        document_type => "apache_logs"
    }
    }

启动Logstash

     /usr/share/logstash/bin/logstash -t -f /etc/logstash/conf.d/test.conf       # 测试配置文件
    Configuration OK
     /usr/share/logstash/bin/logstash  -f /etc/logstash/conf.d/test.conf         # 启动Logstash

测试

每个执行10次172.18.68.14,位Logstash的地址

    curl 127.0.0.1
    curl 172.18.68.14

验证数据

使用浏览器访问172.18.68.11:9100(Elastisearch 安装Head地址,前面文章有讲)

选择今天的日期,就能看到一天内访问的所有数据。

详解Elasticsearch的基友Logstash

四、监控其他

监控Nginx日志

仅仅列了filter配置块,input与output参考上一个配置

    filter {
        grok {
                match => {
                        "message" => "%{HTTPD_COMBINEDLOG} \"%{DATA:realclient}\""
                }
                remove_field => "message"
        }
        date {
                match => ["timestamp","dd/MMM/YYYY:H:m:s Z"]
                remove_field => "timestamp"
        }
    }

监控Tomcat

仅仅列了filter配置块,input与output参考上一个配置

    filter {
        grok {
                match => {
                        "message" => "%{HTTPD_COMMONLOG}"
                }
                remove_field => "message"
        }
        date {
                match => ["timestamp","dd/MMM/YYYY:H:m:s Z"]
                remove_field => "timestamp"
        }
    } 
五、Filebeat

现在已经搭建成在节点安装Logstash并发送到Elasticsearch中去,但是Logstash是基于Java开发需要运行在JVM中,所以是一个重量级采集工具,仅仅对于一个日志采集节点来说使用Logstash太过重量级,那么就可以使用一个轻量级日志收集工具Filebeat来收集日志信息,Filebeat同一交给Logstash进行过滤后再Elasticsearch。这些在接下来的文章在进行讲解,先放一张架构图吧。

详解Elasticsearch的基友Logstash

以上是详解Elasticsearch的基友Logstash的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

PHP教程
1596
276
如何让PHP容器支持自动构建 PHP环境持续集成CI配置方式 如何让PHP容器支持自动构建 PHP环境持续集成CI配置方式 Jul 25, 2025 pm 08:54 PM

要让PHP容器支持自动构建,核心在于配置持续集成(CI)流程。1.使用Dockerfile定义PHP环境,包括基础镜像、扩展安装、依赖管理和权限设置;2.配置GitLabCI等CI/CD工具,通过.gitlab-ci.yml文件定义build、test和deploy阶段,实现自动构建、测试和部署;3.集成PHPUnit等测试框架,确保代码变更后自动运行测试;4.使用Kubernetes等自动化部署策略,通过deployment.yaml文件定义部署配置;5.优化Dockerfile,采用多阶段构

如何搭建独立PHP任务容器环境 PHP定时脚本运行容器配置方法 如何搭建独立PHP任务容器环境 PHP定时脚本运行容器配置方法 Jul 25, 2025 pm 07:27 PM

搭建独立PHP任务容器环境可通过Docker实现,具体步骤如下:1.安装Docker与DockerCompose作为基础;2.创建独立目录存放Dockerfile、crontab文件;3.编写Dockerfile定义PHPCLI环境并安装cron及必要扩展;4.编写crontab文件定义定时任务;5.编写docker-compose.yml挂载脚本目录并配置环境变量;6.启动容器并验证日志。相比Web容器内执行定时任务,独立容器具备资源隔离、环境纯粹、稳定性强、便于扩展等优势。为确保日志与错误捕

Linux vs Windows:哪个操作系统更适合您? Linux vs Windows:哪个操作系统更适合您? Jul 29, 2025 am 03:40 AM

Windowsisbetterforbeginnersduetoeaseofuse,seamlesshardwarecompatibility,andsupportformainstreamsoftwarelikeMicrosoftOfficeandAdobeapps.2.LinuxoutperformsWindowsonolderorlow-resourcehardwarewithfasterboottimes,lowersystemrequirements,andlessbloat.3.Li

如何使用Cron和Anacron在Linux上安排任务 如何使用Cron和Anacron在Linux上安排任务 Aug 01, 2025 am 06:11 AM

cronisusedforpreciseschedulingonalways-onsystems,whileanacronensuresperiodictasksrunonsystemsthataren'tcontinuouslypowered,suchaslaptops;1.Usecronforexacttiming(e.g.,3AMdaily)viacrontab-ewithsyntaxMINHOURDOMMONDOWCOMMAND;2.Useanacronfordaily,weekly,o

如何使用终端在Linux上安装软件? 如何使用终端在Linux上安装软件? Aug 02, 2025 pm 12:58 PM

在Linux上安装软件主要有三种方法:1.使用包管理器,如apt、dnf或pacman,通过更新源后执行install命令安装,例如sudoaptinstallcurl;2.对于.deb或.rpm文件,分别使用dpkg或rpm命令安装,并在需要时修复依赖;3.使用snap或flatpak跨平台安装应用,如sudosnapinstall软件名,适用于追求版本更新的用户,推荐优先使用系统自带包管理器以获得更好的兼容性和性能。

Linux上高性能游戏的最终指南 Linux上高性能游戏的最终指南 Aug 03, 2025 am 05:51 AM

ChoosePop!_OS,Ubuntu,NobaraLinux,orArchLinuxforoptimalgamingperformancewithminimaloverhead.2.InstallofficialNVIDIAproprietarydriversforNVIDIAGPUs,ensureup-to-dateMesaandkernelversionsforAMDandIntelGPUs.3.EnabletheperformanceCPUgovernor,usealow-latenc

Linux与Windows的主要利弊是什么? Linux与Windows的主要利弊是什么? Aug 03, 2025 am 02:56 AM

Linux适合老旧硬件、安全性高、可定制,但软件兼容性弱;Windows软件丰富、易用,但资源占用高。1.性能上,Linux轻量高效,适合旧设备;Windows对硬件要求高。2.软件上,Windows兼容性更广,尤其专业工具和游戏;Linux需借助工具运行部分软件。3.安全上,Linux权限管理更严格,更新便捷;Windows虽有防护但仍易受攻击。4.使用难度上,Linux学习曲线陡峭;Windows操作直观。根据需求选择:重性能与安全选Linux,重兼容与易用选Windows。

时间同步在Linux上与NTP的重要性 时间同步在Linux上与NTP的重要性 Aug 01, 2025 am 06:00 AM

timessynchronizationiscroucialforsystemriabilitile andsecurityBecurityBecurityBecurityTimecauseslogConfusion,SecurityFailures,不正确的SCHEDULEDTASKS,and distributedSystementerors; 1.CheckntpStatusptatususistimeDimeDimeDatectlstatectlstatustatustoconFirmSynChronChronChronChronizationServiciative and servicivity; 2

See all articles