本文主要记录ELK的测试环境的搭建过程

1.环境以及架构

Jumper 系统版本 IP地址 主机名 角色
d1000 CENTOS 7 10.2.0.10 centosELK10 Kibana
d1000 CENTOS 7 10.2.0.11 centosELK11 Logstash
d1000 CENTOS 7 10.2.0.12 centosELK12 ElasticSearch

本次的所有环境均是基于CENTOS7系统进行搭建。
首先是准备环境,安装JAVA运行环境JDK。

yum install java-1.8.0-openjdk-devel

2.安装配置Elasticsearch

首先需要下载最新版本:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.tar.gz  

下载后解压至/usr/local/目录下,解压后的路径即为/usr/local/elasticsearch-6.3.1/,做一个软链接

ln -s /usr/local/elasticsearch-6.3.1 /usr/local/elasticsearch

修改配置文件/usr/local/elasticsearch/config/elasticsearch.yml,需要修改以下几项:

network.host: 10.2.0.12  #设置为本机外网可访问的IP
http.port: 9200          #设置监听端口为9200  
cluster.name: my-es      #设置集群名字
node.name: node-1        #设置节点名字
path.data: /data/es_data #设置数据文件存储目录
path.logs: /data/es_logs #设置日志文件目录

修改完成后,启动elasticsearch

/usr/local/elasticsearch/bin/elasticsearch  

启动直接就报错了,报错信息如下:

Exception in thread "main" java.nio.file.AccessDeniedException: /usr/local/elasticsearch/config/jvm.options
        at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
        at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:215)
        at java.base/java.nio.file.Files.newByteChannel(Files.java:369)
        at java.base/java.nio.file.Files.newByteChannel(Files.java:415)
        at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
        at java.base/java.nio.file.Files.newInputStream(Files.java:154)
        at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:58)

经过查询是由于执行该命令的用户没有运行jvm的权限导致该报错,所以我们新建一个elk用户:

sudo useradd elk  

然后修改目录归属:

sudo chown -R elk.elk /usr/local/elasticsearch* 
sudo chown -R elk.elk /data/es_*               #修改/data/es_data和/data/es_log目录的权限 
sudo su

在root用户下运行elasticsearch也会报错can not run elasticsearch as root,所以我们需要切换到elk用户下面再启动elasticsearch

su elk
/usr/local/elasticsearch/bin/elasticsearch -d  #-d参数是后台运行

修改之后仍然还是有报错,报错如下:

ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

需要在/etc/sysctl.conf中修改配置

vm.max_map_count=262144

或者在命令行中执行sysctl -w vm.max_map_count=262144
如此折腾一番之后,可以正常运行elasticsearch了。

3.安装配置Logstash

  • 需要注意的一点是新版的logstash-6.3.2不支持最新版的jdk-10.0.2,需要降为上一个稳定版jdk-8u181。否则会报错Unrecognized VM option 'UseParNewGC'参考链接https://github.com/elastic/logstash/issues/9345

下载最新版本的Logstash:

sudo wget https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.tar.gz
sudo tar xzf logstash-6.3.2.tar.gz -C /usr/local/
sudo ln -s logstash-6.3.2 logstash

/esr/local/logstash/config目录下面新建log.conf配置文件,并添加以下修改内容:

input {
  stdin {
    type => "syslog"
  }
  #file {
  #  type => "hadoop-yarnlog"
  #  path => "/usr/local/hadoop/logs/yarn-hadoop-resourcemanager-m000.log"
  #}
}

output {
  elasticsearch {
    hosts => "10.2.0.12:9200"
    index => "logstash-%{type}-%{+YYYY.MM.dd}"
    template_overwrite => true
  }
}

关于logstash配置文件的解释可以参考 csdn blog 的说明

关于logstash的启动命令如下:

sudo /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/log.conf > /dev/null 2>&1

这样的方式启动主要是为了防止其产生不必要的输出,占用磁盘存储。

4.安装配置Kibana

到官网进行下载最新版本:

cd /usr/local/src/
sudo wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-linux-x86_64.tar.gz

然后解压缩到/usr/local/目录下面

sudo tar xzf kibana-6.3.2-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/
sudo ln -s kibana-6.3.2-linux-x86_64 kibana

修改配置文件/usr/local/kibana/config/kibana.yml中的以下参数:

server.port: 5601                           #kibana的监听端口
server.host: "10.2.0.10"                    #kibana的绑定IP
elasticsearch.url: "http://10.2.0.12:9200"  #kibana的后端数据查询链接

修改完成后启动kibana到后台

sudo /usr/local/kibana/bin/kibana > /dev/null 2>&1 &