阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

ElasticSearch 和Logstash使用详解

164次阅读
没有评论

共计 4128 个字符,预计需要花费 11 分钟才能阅读完成。

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 教程系列文章

Linux 上安装部署 ElasticSearch 全程记录  http://www.linuxidc.com/Linux/2015-09/123241.htm

Linux 下 Elasticsearch 1.7.0 安装配置 http://www.linuxidc.com/Linux/2017-05/144215.htm

在 Ubuntu 16.04 中安装 Elasticsearch 5.4 分析引擎  http://www.linuxidc.com/Linux/2017-07/145588.htm

Elasticsearch1.7 升级到 2.3 实践总结  http://www.linuxidc.com/Linux/2016-11/137282.htm

Ubuntu 14.04 中 Elasticsearch 集群配置  http://www.linuxidc.com/Linux/2017-01/139460.htm

Elasticsearch-5.0.0 移植到 Ubuntu 16.04 http://www.linuxidc.com/Linux/2017-01/139505.htm

ElasticSearch 5.2.2 集群环境的搭建  http://www.linuxidc.com/Linux/2017-04/143136.htm

Linux 下安装搜索引擎 Elasticsearch  http://www.linuxidc.com/Linux/2017-05/144105.htm

CentOS 上安装 ElasticSearch 详解  http://www.linuxidc.com/Linux/2017-05/143766.htm

Elasticsearch5.3 安装插件 head  http://www.linuxidc.com/Linux/2017-09/147008.htm

ElasticSearch 的详细介绍:请点这里
ElasticSearch 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149343.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计4128字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中