文章目录

  • 1、安装ElasticSearch
  • 1.创建elasticsearch目录
  • 2.下载Elasticsearch
  • 2、安装Logstash
  • 1.下载Logstash
  • 2.解压Logstash
  • 3.测试Logstash
  • 4.读取文件输出到Redis
  • 3、安装Kibana
  • 1.修改配置
  • 2.启动Kibana



里在对ELK做一下简述,ELK是有Elastic公司的三个组件配合进行日志收集,分别是:

  • ElasticSearch:用于存储日志信息。
  • Logstash:用于收集、处理和转发日志信息。
  • Kibana:提供可搜索的Web可视化界面。

1、安装ElasticSearch

1.创建elasticsearch目录

cd /usr/local/
mkdir tool
cd tool
mkdir elasticsearch
cd elasticsearch

2.下载Elasticsearch

curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.2.tar.gz

解压es包

tar -xvf elasticsearch-5.4.2.tar.gz

进入es/bin包

cd elasticsearch-5.4.2/bin

启动es

./elasticsearch

错误整理

单机部署elk服务 elk安装_服务器

这个问题是由于内存分配不够造成的,修改适合本机的内存,修改文件config/jvm.options

vi ../config/jvm.options

单机部署elk服务 elk安装_elasticsearch_02

由于我的服务器内存较小,修改为512m,具体可以根据情况修改,如下:

单机部署elk服务 elk安装_elasticsearch_03

修改后在次启动:

./elasticsearch

用户权限不足

单机部署elk服务 elk安装_elasticsearch_04

这个问题很明显,不允许使用root用户启动,那么我们新建一个es用户,并赋予权限:

添加es用户

useradd es

添加es用户密码

passwd es

将文件夹elasticsearch-5.4.2赋予es权限

chown -R es:es /usr/local/tool/elasticsearch/elasticsearch-5.4.2

切换为es用户

su es

再次启动es

./elasticsearch

这次启动成功了,我们在使用一个窗口登录root用户,输入命令:

curl -X GET http://localhost:9200

如图所示,可以成功访问

单机部署elk服务 elk安装_单机部署elk服务_05

在浏览器访问http://118.24.242.170:9200/拒绝访问(118.24.242.170为服务器ip)

使用root用户,打开elasticsearch.yml文件,如下:

vi /usr/local/tool/elasticsearch/elasticsearch-5.4.2/config/elasticsearch.yml

文件内增加如下代码

network.host: 0.0.0.0

使用es用户启动,发现又出现了错误如下,得到错误信息如图

单机部署elk服务 elk安装_单机部署elk服务_06


使用root用户打开如下文件:

vim /etc/sysctl.conf

添加如下配置:

vm.max_map_count = 655360

使配置生效

/sbin/sysctl -p

然后使用es用户启动Elasticsearch,这次可以成功启动了,如果需要后台启动的话,在启动命令后加&,如下所示:

./elasticsearch &

2、安装Logstash

1.下载Logstash

官网下载地址:https://www.elastic.co/downloads/logstash

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.4.2-linux-x86_64.tar.gz

!!这边声明下,我这里写错了,请复制上面的链接直接在linux命令行在线下载!E和L版本必须保持一致!!!!!这边声明下,我这里写错了,请复制上面的链接直接在linux命令行在线下载!E和L版本必须保持一致!!!!!这边声明下,我这里写错了,请复制上面的链接直接在linux命令行在线下载!E和L版本必须保持一致!!!!!这边声明下,我这里写错了,请复制上面的链接直接在linux命令行在线下载!E和L版本必须保持一致!!!!!这边声明下,我这里写错了,请复制上面的链接直接在linux命令行在线下载!E和L版本必须保持一致!!!!!这边声明下,我这里写错了,请复制上面的链接直接在linux命令行在线下载!E和L版本必须保持一致!!!

本人是从本地上传到服务器上的,使用的是6.6.1。

单机部署elk服务 elk安装_elasticsearch_07

2.解压Logstash

进入上传目录解压Logstash

tar -zxvf logstash-5.4.2.tar.gz

3.测试Logstash

进入logstash目录

cd logstash-6.6.1

简单输出到控制台

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

若出现内存错误和es的解决方案相同

如图所示,即为启动成功

单机部署elk服务 elk安装_单机部署elk服务_08

输入dalaoyang,如下所示

单机部署elk服务 elk安装_服务器_09

4.读取文件输出到Redis

input {
    file {
        type => "test_log"
        path => ["/Users/dalaoyang/logs/my.log"]
        start_position => "beginning"
        sincedb_path => "/dev/null"
    }
}
filter {
  if [type] == 'test_log' {
     multiline {
       pattern => "^%{TIMESTAMP_ISO8601} "
       negate => true
       what => previous
     }
  }
}
output {
    if [type] == "test_log" {
        redis {
            host => "ip"
            port => "6379"
            data_type => "list"
            key => "log"
            #redis密码
            password => "123456"
        }
      #  stdout {codec => rubydebug}
    }
}

启动命令 bin/logstash -f 上面配置的文件位置
比如

bin/logstash -f logstash.conf

安装多行解析插件logstash-filter-multiline

logstash-plugin install logstash-filter-multiline

3、安装Kibana

这一步需要下载与Elasticsearch版本相同的kibana,本人是从本地上传到服务器上的,使用的是6.6.1。

https://www.elastic.co/downloads/kibana

单机部署elk服务 elk安装_Elastic_10

在服务器上传目录解压kibana:

tar -zxvf kibana-6.6.1-linux-x86_64.tar.gz

1.修改配置

修改config/kibana.yml文件配置:

vim config/kibana.yml

kibana.yml常见配置项

# pingElasticsearch超时时间
elasticsearch.pingTimeout
# 读取Elasticsearch数据超时时间
elasticsearch.requestTimeout  
#Elasticsearch主机地址
elasticsearch.url: "http://ip:9200" 
# 允许远程访问
server.host: "0.0.0.0" 
# Elasticsearch用户名 这里其实就是我在服务器启动Elasticsearch的用户名
elasticsearch.username: "es"  
# Elasticsearch鉴权密码 这里其实就是我在服务器启动Elasticsearch的密码
elasticsearch.password: "es"

根据情况增加配置即可,本人测试使用的是如下:

#Elasticsearch主机地址
elasticsearch.url: "http://ip:9200" 
# 允许远程访问
server.host: "0.0.0.0" 
# Elasticsearch用户名 这里其实就是我在服务器启动Elasticsearch的用户名
elasticsearch.username: "es"  
# Elasticsearch鉴权密码 这里其实就是我在服务器启动Elasticsearch的密码
elasticsearch.password: "es"

2.启动Kibana

直接启动,进入bin目录后

./kibana

后台启动,进入bin目录后

nohup ./kibana &

访问 http://ip:5601/ 即可

如果失败,请确定es和kibana的版本要完全一致