CentOS7 安装 Logstash

本文介绍了如何在CentOS7上安装Logstash,包括下载源码、创建配置文件、测试配置及启动停止Logstash的步骤。内容涵盖了从基本的配置文件创建到读取日志文件和TCP端口的实例应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 config

vim 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 world
Settings: Default pipeline workers: 2
Pipeline 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.conf

Configuration 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.
    }
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值