【ELK学习笔记】ELK的安装,快速搭建一个ELK日志分析平台

 

ELK 是 ElasticSearch、 LogStash、 Kibana 三个开源工具的简称,现在还包括 Beats,其分工如下:

  • LogStash/Beats: 负责数据的收集与处理
  • ElasticSearch: 一个开源的分布式搜索引擎,负责数据的存储、检索和分析
  • Kibana: 提供了可视化的界面。负责数据的可视化操作

基于 ELK Stack 可以构建日志分析平台、数据分析搜索平台等非常有用的项目。

简单介绍下 ELK 各个软件的安装与简单配置,快速的搭建一个日志的查询平台

一. ElasticSearch 的安装与运行

ES 是一个基于 Lucene 的使用 Java 开发的开源搜索引擎,因此其运行是基于 JVM 的,因此在安装之前需要保证已经安装了 Java 环境。ES 要求使用 Java8 或者更高版本的 Java 环境。

1、安装JDK

下载JDK:https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html

本环境下载的是64位tar.gz包,将安装包拷贝至安装服务器/usr/java目录

[root@izbp14hdjlwscja93xb3ovz java]# tar -zxvf jdk-8u181-linux-x64.tar.gz 
配置环境变量

[root@izbp14hdjlwscja93xb3ovz java]# vim /etc/profile

将下面的内容添加至文件末尾(假如服务器需要多个JDK版本,为了ELK不影响其它系统,也可以将环境变量的内容稍后添加到ELK的启动脚本中)

#set java enviroment
export JAVA_HOME=/usr/java/jdk/jdk1.8.0_131
export JRE_HOME=/usr/java/jdk/jdk1.8.0_131/jre
export CLASSPATH=.:$JAVA_HOME/lib$:JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin/$JAVA_HOME:$PATH

保存后运行source /etc/profile使环境变量生效

2、 ElasticSearch 的安装

1)创建运行ELK的用户:

[root@izbp14hdjlwscja93xb3ovz java]# groupadd dukun
[root@izbp14hdjlwscja93xb3ovz java]# useradd -g dukun dukun
设置用户密码:passwd dukun

2)创建ELK运行目录:

[root@izbp14hdjlwscja93xb3ovz elk]# mkdir es

给用户赋权
[root@izbp14hdjlwscja93xb3ovz home]# chown -R dukun:dukun elk/

以上全部是root用户完成

3)配置启动ElasticSearch

切换到dukun用户:[root@izbp14hdjlwscja93xb3ovz home]# su dukun

解压文件夹

[dukun@izbp14hdjlwscja93xb3ovz es]$ tar -zxvf elasticsearch-6.4.2.tar.gz 

修改配置文件 

进入/home/elk/es/elasticsearch-6.4.2/config

elasticsearch配置文件在这两个地方,有两个配置文件:

[root@izbp14hdjlwscja93xb3ovz config]# vim elasticsearch.yml 

[root@izbp14hdjlwscja93xb3ovz config]# vim jvm.options  可以根据自己需求修改大小

4)启动

进入bin下启动

[dukun@izbp14hdjlwscja93xb3ovz bin]$ ./elasticsearch
5)启动遇到的问题

如果使用root用户启动会出现如下:这个时候我们就要用我们上面创建的用户启动

问题二:ERROR: bootstrap checks failed

max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]

解决:切换到root用户,编辑limits.conf 添加类似如下内容

vi /etc/security/limits.conf 

添加如下内容:

* soft nofile 65536

* hard nofile 131072

* soft nproc 2048

* hard nproc 4096

 

问题三:max number of threads [1024] for user [lish] likely too low, increase to at least [2048]

解决:切换到root用户,进入limits.d目录下修改配置文件。

vi /etc/security/limits.d/90-nproc.conf 

修改如下内容:

* soft nproc 1024

#修改为

* soft nproc 2048

 

问题四:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

解决:切换到root用户修改配置sysctl.conf

vi /etc/sysctl.conf 

添加下面配置:

vm.max_map_count=655360

并执行命令:

sysctl -p

 

问题五:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

解决:修改切换到root用户修改配置limits.conf 添加下面两行

命令:vi /etc/security/limits.conf

*        hard    nofile           65536
*        soft    nofile           65536
切换到es的用户。

然后,重新启动elasticsearch,即可启动成功。

检查elasticsearch状态,如下则表示正常运行

[root@elk-server elasticsearch]# curl http://10.17.83.42:9200
{
  "name" : "6eN59Pf",
  "cluster_name" : "my-application",
  "cluster_uuid" : "cKopwE1iTciIQAiFI6d8Gw",
  "version" : {
    "number" : "5.5.2",
    "build_hash" : "b2f0c09",
    "build_date" : "2017-08-14T12:33:14.154Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

二. logstash 的安装与运行

logstash是ELK中负责收集和过滤日志的

logstash的配置文件须包含三个内容:

input{}:此模块是负责收集日志,可以从文件读取、从redis读取或者开启端口让产生日志的业务系统直接写入到logstash

filter{}:此模块是负责过滤收集到的日志,并根据过滤后对日志定义显示字段

output{}:此模块是负责将过滤后的日志输出到elasticsearch或者文件、redis等

1、下载

 wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.2.tar.gz

2、解压

tar -zxvf logstash-6.4.2.tar.gz 

3、修改文件

im config/logstash-es.conf 
#注意要设置编码格式,防止中文乱码
input {
  beats {
    port => 5044
    codec => json{ charset => "UTF-8" }
  }
}

output {
  elasticsearch {
    hosts => ["http://192.168.200.201:9201","http://192.168.200.202:9201","http://192.168.200.203:9201"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

如果处理两套业务系统的日志

type:代表类型,其实就是将这个类型推送到Elasticsearch,方便后面的kibana进行分类搜索,一般直接命名业务系统的项目名

path:读取文件的路径

这个是代表日志报错时,将报错的换行归属于上一条message内容

start_position => "beginning"是代表从文件头部开始读取

filter{}中的grok是采用正则表达式来过滤日志,其中%{TIMESTAMP_ISO8601}代表一个内置获取2016-11-05 00:00:03,731时间的正则表达式的函数,%{TIMESTAMP_ISO8601:date1}代表将获取的值赋给date1,在kibana中可以体现出来

本环境有两条grok是代表,第一条不符合将执行第二条

其中index是定义将过滤后的日志推送到Elasticsearch后存储的名字

%{type}是调用input中的type变量(函数)

4.启动服务

#控制台启动,且输出日志
bin/logstash -f logstash-es.conf
#后台启动
bin/logstash -f config/logstash-es.conf &

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

输入”hello world!  ”,验证是否正常输出

[root@izbp14hdjlwscja93xb3ovz logstash-6.4.2]# ./bin/logstash -e 'input { stdin { } } output { stdout {} }'
Sending Logstash logs to /home/elk/logstash/logstash-6.4.2/logs which is now configured via log4j2.properties
[2018-10-11T13:19:38,141][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2018-10-11T13:19:38,901][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=>"6.4.2"}
[2018-10-11T13:19:40,919][INFO ][logstash.pipeline        ] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>2, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50}
The stdin plugin is now waiting for input:
[2018-10-11T13:19:41,075][INFO ][logstash.pipeline        ] Pipeline started successfully {:pipeline_id=>"main", :thread=>"#<Thread:0x3ff4d7e0 run>"}
[2018-10-11T13:19:41,132][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2018-10-11T13:19:41,321][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
hello word
{
    "@timestamp" => 2018-10-11T05:21:47.230Z,
      "@version" => "1",
          "host" => "izbp14hdjlwscja93xb3ovz",
       "message" => "hello word"
}

三、Kibana安装

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

2、解压至安装目录

# tar -zxf kibana-5.5.2-linux-x86_64.tar.gz -C /usr/local/
# cd /usr/local/
# mv kibana-5.5.2-linux-x86_64 kibana

 

3、修改配置

# cd kibana/
 
# vim config/kibana.yml
 
server.port: 5601            # 监听端口
server.host: "10.17.83.42"   # 指定后端服务器
elasticsearch.url: "http://172.16.131.11:9200"  # 指定elasticsearch实例地址

 

 

ss

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值