ELK + filebeat 日志分析工具的部署和简单应用

参考文章:https://www.ibm.com/developerworks/cn/opensource/os-cn-elk/

环境: 
    - 两台 CentOS 6.5
    - elasticsearch-2.4.1
    - kibana-4.6.1
    - logstash-2.4.0
    - filebeat-1.3.1
过程:
    - 安装 JDK
    - 安装 Elasticsearch
    - 安装 Kibana
    - 安装 Nginx
    - 安装 Logstash
    - 配置 Logstash
    - 安装 filebeat
    - 访问

ELK 服务器中:

安装 Java 环境

  • https://www.java.com/zh_CN/download/manual.jsp中下载java安装包

  • 解压到/usr/local/jdk 目录下

  • /etc/profile文件中追加:

export JAVA_HOME=/usr/local/jdk
export CLASS_PATH=$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
  • 使设置的环境变量生效。 source /etc/profile

安装 Elasticsearch

  • https://www.elastic.co/downloads中下载Elasticsearch的安装包。

  • 解压,并移动到/usr/local/elasticsearch目录下。

$ tar xvf elasticsearch-2.4.1.zip
$ mv  elasticsearch-2.4.1  /usr/local/elasticsearch
  • 修改/usr/local/elasticsearch/config/elasticsearch.yml,来更改监听端口,监听127.0.0.1,提高安全性。
# 如下更改
network.host: 127.0.0.1
  • 启动(会有报错)
$ cd /usr/local/elasticsearch/
$ bash bin/elasticsearch -d
# 会有报错,信息如下:
Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.

-d是让es保持后台运行。
报错信息提示我们es无法用root用户启动,所以可以创建elk用户,来启动es

安装 kibana

  • https://www.elastic.co/downloads中下载kibana的安装包。

  • 解压,并移动到/usr/local/kibana目录下。

  • 修改/usr/local/kibana/config/kibana.yml,来更改监听端口,监听127.0.0.1

# 修改如下
server.host: "127.0.0.1"
  • 启动,观察/usr/local/kibana/nohup.out是否有报错信息
$ cd /usr/local/kibana
$ nohup bin/kibana &

安装 Nginx

  • 直接yum安装
$ yum install nginx
  • 修改/etc/nginx/conf.d/default.conf文件,如下:
server {
    listen       80;
    server_name  _;

    location / {
        proxy_pass http://127.0.0.1:5601/;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
}

    error_page 404 /404.html;
        location = /40x.html {
    }
    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}
  • 启动nginx
# 测试配置是否正常
$ nginx -t
# 启动
$ /etc/init.d/nginx start

安装 Logstash

  • https://www.elastic.co/downloads中下载Logstash的安装包。

  • 解压,并移动到/usr/local/logstash目录下。

  • 验证服务可用性

$ cd /usr/local/logstash
$ bin/logstash -e 'input { stdin { } } output { stdout {} }'
Settings: Default pipeline workers: 2
Pipeline main started
# 任意输入,看输出是否正常,如下:
hello
2016-10-13T10:07:01.502Z satezheng hello
# CTRL-D 退出

配置 Logstash

我们需要配置 Logstash 以指明从哪里读取数据,向哪里输出数据。这个过程我们称之为定义 Logstash 管道(Logstash Pipeline)。
通常一个管道需要包括必须的输入(input),输出(output),和一个可选项目 Filter

配置 ssl

客户端和服务器之间通信使用ssl来认证身份,更加安全。

  • 修改/etc/pki/tls/openssl.cnf文件
# 找到 [v3_ca] 段,添加下面一行,保存退出。
subjectAltName = IP: logstash_server_ip
  • 生成srt文件
$ cd /etc/pki/tls
$ openssl req -config openssl.cnf -x509 -days 2650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
  • 发送srt文件到客户端
$ cd /etc/pki/tls
$ scp certs/logstash-forwarder.crt 客户端IP:/etc/pki/tls/certs
配置 Logstash 管道文件
  • 创建filebeat-input.conf文件
$ mkdir /usr/local/logstash/conf
$ cd /usr/local/logstash/conf
$ vim filebeat-input.conf
# 写入:
input {
  beats {
    port => 5044
        type => "logs"
        ssl => true
        ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
        ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}
  • 创建filebeat-output.conf文件
$ vim filebeat-input.conf
# 写入:
output {
  elasticsearch { hosts => ["127.0.0.1:9200"] }
  stdout { codec => rubydebug }
}
启动
$ cd /usr/local/logstash
$ nohup bin/logstash -f conf/ &

客户端安装 filebeat

filebeat代替之前的ogstash-forwarder

  • https://www.elastic.co/downloads/beats/filebeat下载

  • 解压并放到/usr/local/filebeat目录下

  • 修改filebeat.yml

$ cd /usr/local/filebeat
$ vim filebeat.yml

写入:

filebeat:
  prospectors:
    -
      paths:
        - /var/log/*
      input_type: log
      document_type: log
  registry_file: /var/lib/filebeat/registry

output:
  logstash:
    hosts: ["服务端IP:5044"]
    tls:
      certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

shipper:

logging:
  files:
    rotateeverybytes: 10485760 # = 10MB
  • 启动
$ cd /usr/local/filebeat
$ nohup ./filebeat -e -c filebeat.yml &

访问服务端IP来验证是否成功,有问题可以根据输出日志来解决。

你可能感兴趣的:(ELK + filebeat 日志分析工具的部署和简单应用)