单机ELK环境搭建

547 阅读2分钟

公司新上线了ELK分布式日志系统,本着好奇的心态自己动手搭建一套单机系统,特此记录。本文主要参考了ELK实践(一):基础入门,有些小坑做了改动。

整体架构

image.png

Step 1 准备一台干净的虚拟机

准备一台干净的虚拟机接入本地局域网,可参考本人文章Ubuntu 16虚拟机原型创建,之后ELK所有的软件都在这一台服务器上安装并运行。

Step 2 安装JDK1.8环境

这个就不再赘述,网上有很多教程,后面有时间会整理一期。

Step 3 安装ELK和Filebeat

总共安装四个软件:ElasticSearch,Logstash,Kibana和Filebeat。以ElasticSearch为例:

  1. 首先下载软件
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.2.tar.gz
  1. 解压
tar zxvf elasticsearch-5.6.2.tar.gz -C /usr/local/elk

把解压后的目录重命名为elasticsearch

  1. 配置权限:ELK需要用非root用户操作
chown -R elk:elk /usr/local/elk/elasticsearch
  1. 修改JVM设置,把内存调小一点。
vi /usr/local/elk/elasticsearch/config/jvm.options
-Xms256m 
-Xmx1g
  1. 运行
/usr/local/elk/elasticsearch/bin/elasticsearch -d

查看是否运行成功

$ netstat -lntup | grep 9200
tcp        0      0 127.0.0.1:9200              0.0.0.0:*                   LISTEN      121/java 

$ curl http://127.0.0.1:9200
{
  "name" : "6e1PMnr",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "Uahv9iLnSLyMjIxX57lbMQ",
  "version" : {
    "number" : "5.6.2",
    "build_hash" : "bd92e7f",
    "build_date" : "2017-12-17T20:23:25.338Z",
    "build_snapshot" : false,
    "lucene_version" : "7.1.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

注意下载时保证相同版本

Step 4 Logstash配置

调小Logstash JVM内存

vim /usr/local/elk/logstash/config/jvm.options

测试运行,默认运行在5044端口

$ ./logstash/bin/logstash -e 'input { stdin { } } output { stdout {}}'

Step 5 Kibana配置:

只需要更改一个地方,不需要显式指定ElasticSearch的url,Kibana会自动采集http://127.0.0.1:9200 这个url

vim /usr/local/elk/kibana/config/kibana.yml
改为
server.host: "0.0.0.0"

测试运行,默认运行在5601端口

/usr/local/elk/kibana/bin/kibana

打开浏览器 http://ip地址:5601 就可以看到 kibana 的界面了

Step 6 整合ELK

模拟两个日志文件

echo "test - test2" >> /tmp/test1.log
echo "test - test2" >> /tmp/test2.log

新建一个Filebeat配置文件:

cd /usr/local/elk
vim beats/filebeat/filebeat.test.yml

配置内容:

filebeat.prospectors:
- type: log
  paths:
    - /tmp/test1.log
  tags: ["test1"]

- type: log
  paths:
    - /tmp/test2.log
  tags: ["test2"]

output.logstash:
  hosts: ["127.0.0.1:5046"]

修改Logstash的stdin为Filebeat,stdout为ElasticSearch

vim /usr/local/elk/logstash/config/logstash.yml

改为

path.config: /usr/local/elk/logstash/config/conf.d

在conf.d目录下新建一个配置文件

vim logstash/config/conf.d/filebeat.test.conf

内容为

input {
    beats {
        port => 5046
    }
}

output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "test-filebeat"
    }
    stdout { codec => rubydebug }
}

启动Logstash和Filebeat

./logstash/bin/logstash &
./beats/filebeat/filebeat -c beats/filebeat/filebeat.test.yml

Step 7 整体ELK测试

往模拟的日志文件里新增内容:

echo "new msg" >> /tmp/test2.log
echo "new msg3" >> /tmp/test2.log

稍等几秒钟,就可以在ELK里看到内容,Kibana可视化界面也可以查询到。

端口汇总

image.png