搭建 ELK 日志平台

前言

    Elastic Stack 是原 ELK Stack 在 5.0 版本加入 Beats 套件后的新称呼,ELK 套件成了开源日志处理领域的第一选择;java

    从Elasticsearch 5.0版本开始,Elastic公司全线产品升级到5.0版本。并且由于Beats的加入,再也不使用ELK简称。
    23 Oct 2016 是 5.0GA发布的日子,因此本次release,也标志着ELK的结束。之后的更新,将基于Elastic Stack 5.0继续;node

                                                                                                            -- chenrynbootstrap

    按照官方 https://www.elastic.co 介绍:vim

    Visualize your data. Navigate the Elastic Stack.        ------- Kibana浏览器

    Search, analyze, and store your data.                      ------- Elasticsearchtomcat

    Ingest any data, from any source, in any format       ------- Beats 和 Logstashruby

    

ELK 版本环境

    ELasticsearch:5.2.2bash

    Logstash:5.2.2服务器

    Kibana:5.2.2jvm

    jdk:1.8.0_77

   

Elasticsearch 安装

    官网下载程序包

$ tar xvf elasticsearch-5.2.2.zip
$ cd elasticsearch-5.2.2

# elasticsearch 默认是不能用 root 启动的,须要使用别的用户启动

$ su userother

    目前仍有许多插件不支持 5.x 版本,好比 mobz/elasticsearch-head 就不支持 5.x,有关插件参考官方文档

    修改配置文件。建立 /tmp/elasticsearch/data /tmp/elasticsearch/logs 文件夹:

# 添加以下配置

cluster.name: es_cluster
node.name: node0
path.data: /tmp/elasticsearch/data
path.logs: /tmp/elasticsearch/logs
network.host: 0.0.0.0
# network.port: 9200 默认

    ./bin/elasticsearch 启动报错:

...
Exception in thread "main" java.lang.RuntimeException: bootstrap checks failed
initial heap size [268435456] not equal to maximum heap size [2147483648]; this can cause resize pauses and prevents mlockall from locking the entire heap
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
please set [discovery.zen.minimum_master_nodes] to a majority of the number of master eligible nodes in your cluster
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
...

# fix
一、提升 vm.max_map_count
    $ su root
    $ sysctl -w vm.max_map_count=262144
    $ sysctl -a | grep vm.max_map_count
    vm.max_map_count = 262144

# 永久修改,须要修改 /etc/sysctl.conf 文件里面 vm.max_map_count=262144
    $ sysctl -p # 生效

二、修改 jvm 内存
    $ vim elasticsearch/config/jvm.options 
    将 -Xms2g -Xmx2g 改成 -Xms256m -Xmx256m 值为 [268435456] / 1024 / 1024
    
三、修改系统 limit
    $ su root
    $ vim /etc/security/limits.conf 
    添加(userother 为启动 elasticsearch 的用户)
    userother hard nofile 65536
    userother soft nofile 65536

    ./bin/elasticsearch 启动程序,访问 http://IP:9200 

 

Logstash 安装

    Logstash 其实就是一个收集器,能够指定 Input 和 Output( Input 和 Output 能够为多个)

    Logstash 能够获取服务器上的日志,编写 Logstash 配置文件便可;

# Remember: if a new user has a bad time, it's a bug in logstash

    从官网下载二进制包,推荐使用软件仓库完成批量安装(将二进制包打包成 rpm 包,放入自搭建的 yum 库中,用于服务器批量安装,避免出现版本而致使的错误)

    Logstash 是须要 java 环境支持的,从 orecle 下载 java jdk,添加至环境变量 /etc/profile

JAVA_HOME=/usr/lib/jdk1.8.0_77
JAVA_BIN=$JAVA_HOME/bin
PATH=$JAVA_BIN:$PATH:.
export JAVA_HOME JAVA_BIN PATH

 简单的 Hello World:

$ bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'

{
       "message" => "Hello World",
      "@version" => "1",
    "@timestamp" => "2017-03-10T10:30:59.937Z",
          "host" => "pcdeMacBook-Pro.local",
}

    Logstash 配置文件中用 {} 来定义区域,区域内能够包括插件区域的定义,插件区域内则能够定义键值对设置,详细语法能够参考官方文档。

    

    编辑配置文件:

$ cat ./config/tomcat_to_es.conf
# 从指定位置读取日志,并输出到 elasticsearch 服务器中
input {
    file {
        path => "/usr/tomcat/tomcat-10005/logs/*"
        exclude => "s10005.log*"
        start_position => beginning
        }
}

filter {
}

output {
    elasticsearch {
        hosts => ["http://10.12.41.127:9200"]
        index => "tomcats10005"
}
}

# 启动 Logstash
$ ./bin/logstash -f ./config/tomcat_to_es.conf

    Logstash 还支持从 syslog 中获取日志,从 java log4j 获取等方式。

    filter 区域则能够配置须要获取日志的规则,很强大;

 

Kibana 安装

    Kibana 安装仅需从官网下载 Kibana 二进制包,解压缩便可运行;

    修改配置文件,告诉 Kibana 须要搜索哪一个 Elasticsearch 索引

$ cat ./config/kibana.yml
# 添加配置
server.port: 5601
server.host: 10.12.41.127
elasticsearch.url: http://localhost:9200
kibana.index: ".kibana"

# 启动 Kibana
$ ./bin/kibana

    打开浏览器,访问 http://10.12.41.127:5601,配置至少一个 Index 名字或者 Pattern,用于在分析时肯定 ES 中的 Index,输入以前在 Logstash 中配置的 Index 名字,Kibana 会自动加载该 Index 下的 doc 的 field,并自动选择合适的 field 用于图标中的时间字段;

 

    至此,简单的 ELK 日志平台部署基本完成了;

相关文章
相关标签/搜索