Elastic Stack

来自tomtalk
Tom讨论 | 贡献2017年5月3日 (三) 07:05的版本 plugin的安装

跳转至: 导航搜索

通用

  • 安装java8,java9不兼容。
  • ElasticSearch、Kinaba在config里默认是用localhost,指定IP,否则用IP无法访问。

Beats

Logstash

Hello World

# bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
 
{
    "@timestamp" => 2017-05-03T05:34:41.343Z,
      "@version" => "1",
          "host" => "elk",
       "message" => "hello world"
}

Logstash会给事件添加一些额外信息。最重要的就是 @timestamp,用来标记事件的发生时间。

此外,大多数时候,还可以见到另外几个:

  • host 标记事件发生在哪里。
  • type 标记事件的唯一类型。
  • tags 标记事件的某方面属性。这是一个数组,一个事件可以有多个标签。

每个logstash过滤插件,都会有四个方法:

  1. add_tag
  2. remove_tag
  3. add_field
  4. remove_field

配置语法

Logstash社区通常习惯用shipper,broker和indexer来描述数据流中不同进程各自的角色。

不过我见过很多运用场景里都没有用logstash作为shipper,或者说没有用elasticsearch作为数据存储也就是说也没有indexer。所以,我们其实不需要这些概念。只需要学好怎么使用和配置logstash进程,然后把它运用到你的日志管理架构中最合适它的位置就够了。

./logstash -e 'input{stdin{}}output{stdout{}}' 
 
2017-05-03T06:15:51.690Z elk hello world
 
./logstash -e ''  
 
{
    "@timestamp" => 2017-05-03T06:16:38.373Z,
      "@version" => "1",
          "host" => "elk",
       "message" => "hello world",
          "type" => "stdin"
}


命令行参数
bin/logstash -e ''               #-e 意即执行。
bin/logstash -f agent.conf       #-f 意即文件。
bin/logstash -f /etc/logstash.d/ #读取目录下所有文本文件,然后在自己内存里拼接成一个完整的大配置文件,再去执行。

logstash列出目录下所有文件时,是字母排序的。而logstash配置段的filter和output都是顺序执行,所以顺序非常重要。采用多文件管理的用户,推荐采用数字编号方式命名配置文件。


设置文件

从Logstash 5.0开始,新增了$LS_HOME/config/logstash.yml文件,可以将所有的命令行参数都通过YAML文件方式设置。同时为了反映命令行配置参数的层级关系,参数也都改成用.而不是-了。

pipeline:
    workers: 24
    batch:
        size: 125
        delay: 5

plugin的安装

从logstash 1.5.0版本开始,logstash将所有的插件都独立拆分成gem包。这样,每个插件都可以独立更新,不用等待logstash自身做整体更新的时候才能使用了。

为了达到这个目标,logstash配置了专门的plugins管理命令。

bin/logstash-plugin list                                       查看本机现在有多少插件可用
bin/logstash-plugin install logstash-output-webhdfs            安装插件
bin/logstash-plugin update logstash-input-tcp                  更新插件
bin/logstash-plugin install /path/to/logstash-filter-crash.gem 安装本地插件

长期运行

  • 标准的service方式 : service logstash start
  • 最基础的nohup方式 : nohup command &> /dev/null
  • 更优雅的SCREEN方式
  • 最推荐的daemontools方式

Elastic Search

Linux max_map_count参数修改的问题

vm.max_map_count=200000直接写到/etc/sysctl.conf中,然后执行sysctl -p

kibana