Centos7 安装 Logstash

来源:互联网 发布:淘宝上卖的觅心猎手 编辑:程序博客网 时间:2024/06/06 05:06

0.介绍

Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件。

http://kibana.logstash.es/content/logstash/

1.下载和安装

下载地址
https://www.elastic.co/downloads/logstash

目前最新版 2.4.0
这里使用 tar.gz 源码安装

下载

wget https://download.elastic.co/logstash/logstash/logstash-2.4.0.tar.gz

解压

tar -zxvf logstash-2.4.0.tar.gz

2.配置

2.1 创建logstash配置文件

进入 logstash 目录,创建 config 配置文件存放目录。

mkdir configvim config/nginx-gitlab.conf

config/nginx-gitlab.conf 文件内容

input {    file {        path => "/var/opt/gitlab/nginx/logs/*.log"        start_position => beginning    }}filter {    grok {        match => { "message" => "%{COMBINEDAPACHELOG} %{QS:x_forwarded_for}"}    }    date {        match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]    }    geoip {        source => "clientip"    }}output {    elasticsearch {    hosts => "192.168.235.32:9200"    }    stdout { codec => rubydebug }}

启动:

./bin/logstash -f config/nginx-gitlab.conf

这里写图片描述

配置说明

http://kibana.logstash.es/content/logstash/plugins/input/file.html

2.2 Nginx 日志格式定义

log_format access '$remote_addr - $remote_user [$time_local] "$request" $http_host $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $upstream_addr $upstream_status $upstream_cache_status "$upstream_http_content_type" $upstream_response_time > $request_time';

3.启动和停止

3.1 测试命令

测试logstash

./bin/logstash -e ""

然后输入:hello world

hello worldSettings: Default pipeline workers: 2Pipeline main started{       "message" => "hello world",      "@version" => "1",    "@timestamp" => "2017-09-19T02:11:41.423Z",          "type" => "stdin",          "host" => "localhost.localdomain"}
# ./bin/logstash -e 'input { stdin { } } output { stdout {codec=>rubydebug} }'

然后你会发现终端在等待你的输入。没问题,敲入 Hello World,回车,然后看看会返回什么结果!

hello world{       "message" => "hello world",      "@version" => "1",    "@timestamp" => "2017-09-19T01:43:22.733Z",          "host" => "localhost.localdomain"}

3.2 测试配置文件是否正确

# ./bin/logstash -t -f config/nginx_to_es.confConfiguration OK

3.3 启动

加载 etc文件夹下所有 *.conf 的文本文件,然后在自己内存里拼接成一个完整的大配置文件

# ./bin/logstash -f config/

后台运行

# nohup ./bin/logstash -f config/ &

3.4 停止

查找进程 ID

# ps -ef |grep logstash

或查看 9600 端口

# netstat -ntlp|grep java

杀死

# kill -9  pid

4. 测试

http://localhost:9600

5. 命令行中常用的命令

  • -f:通过这个命令可以指定Logstash的配置文件,根据配置文件配置logstash
  • -e:后面跟着字符串,该字符串可以被当做logstash的配置(如果是“” 则默认使用stdin作为输入,stdout作为输出)
  • -l:日志输出的地址(默认就是stdout直接在控制台中输出)
  • -t:测试配置文件是否正确,然后退出。

6. 实例

6.1 读取日志文件

命令终端标准输入:stdin
文件头读入。

命令终端标准输出:stdout
输入到 Elasticsearch。

input {    file {        path => "/opt/www/boot/logs/*.log"        start_position => beginning    }    stdin {    }}filter {  #Only matched data are send to output.}output {    stdout {      codec => rubydebug    }    elasticsearch {    action => "index"          #The operation on ES    codec  => rubydebug    hosts  => "192.168.235.32:9200"   #ElasticSearch host, can be array.    index  => "logstash-%{+YYYY.MM.dd}"         #The index to write data to.  }}

6.2 读取TCP端口

注意:
* host 要与log4j中的地址一样。
* port 不要用“”
* codec 必需要解析为json,不然整体json格式字符串都为消息体。

input {    tcp {        host => "localhost"        port => 4560        codec => json    }    stdin {    }}filter {  #Only matched data are send to output.}output {    stdout {      codec => rubydebug    }    elasticsearch {        action => "index"                #The operation on ES        codec  => rubydebug        hosts  => "192.168.235.32:9200"      #ElasticSearch host, can be array.        index  => "logstash-%{+YYYY.MM.dd}"      #The index to write data to.    }}

这里写图片描述

原创粉丝点击