ELK安装部署( Elasticsearch + Logstash + Filebeat + Kibana)

前言:

架构图:

Elasticsearch
dataNode1
masterNode
dataNode2
Filebeat
Logstash
Filebeat
Filebeat
Kibana

一、环境准备

三台虚拟机

192.168.50.6  
192.168.50.8  
192.168.50.9

机器部署说明

192.168.50.6、192.168.50.8安装elasticsearch 192.168.50.6为主节点,192.168.50.8为数据节点
192.168.50.6安装filebeat
192.168.50.8安装logstash
192.168.50.9安装kibana

ELK组件版本

filebeat:6.3.2
logstash:6.3.2
elasticsearch:6.3.2
kibana:6.3.2
jdk1.8
tomcat8

组件下载:

下载官网地址:https://www.elastic.co/cn/downloads/
历史版本下载:https://www.elastic.co/cn/downloads/past-releases
官网下载6.3.2版本的组件压缩包

二、组件部署安装

1、Elasticsearch安装部署

(1)、直接下载或上传安装包
(2)、解压安装包到指定目录(/home/elk)
tar -zxvf elasticsearch-6.3.2.tar.gz -C /home/elk/
cd  /home/elk/elasticsearch-6.3.2
(3)、修改config/elasticsearch.yml配置

集群配置修改:

vi config/elasticsearch.yml

主节点配置:

cluster.name: cluster-node  # 集群中的名称
node.name: master-node  # 该节点名称
node.master: true  # 意思是该节点为主节点
node.data: false  # 表示这不是数据节点
network.host: 0.0.0.0  # 监听全部ip,在实际环境中应设置为一个安全的ip
http.port: 9200  # es服务的端口号
discovery.zen.ping.unicast.hosts: ["192.168.50.6", "192.168.50.8"] # 配置自动发现
#Memory
bootstrap.memory_lock: false 
bootstrap.system_call_filter: false

数据节点配置:

cluster.name: cluster-node  # 集群中的名称
node.name: data-node-1  # 该节点名称
node.master: false  # 
node.data: true  # 表示该节点为数据节点
network.host: 0.0.0.0  # 监听全部ip,在实际环境中应设置为一个安全的ip
http.port: 9200  # es服务的端口号
discovery.zen.ping.unicast.hosts: ["192.168.50.6", "192.168.50.8"] # 配置自动发现
#Memory
bootstrap.memory_lock: false 
bootstrap.system_call_filter: false
(4)、把下面"问题解决"的设置提前设置了,不然报错了还要解决
(5)、启动elasticsearch

root用户无法启动elasticsearch,需要使用非root用户,
这里我需要新建用户,非root用户忽略创建用户

#创建用户组
groupadd elkgroup
#创建用户及文件授权
useradd -d /home/elk elkuser -g elkgroup

#切换用户
su elkuser
启动elasticsearch
/home/elk/elasticsearch-6.3.2/bin/elasticsearch -d
(加-d,则表示后端运行)

关闭elasticsearch
jps 
kill -9 进程号
(6)、验证
  • 在浏览器中输入http://192.168.50.6:9200/ 可看到单节点信息即为启动成功
  • 在浏览器中输入主节点的http://192.168.50.6:9200/_cluster/health?pretty,
  • 可集群的健康检查及查看集群信息
    http://192.168.50.6:9200/_cluster/state?pretty 可查询集群及其节点的详细内容

以上用curl 命令也可以,

curl 'http://192.168.50.6:9200/_cluster/health?pretty'
bash-4.1$ curl 'http://192.168.50.6:9200/_cluster/health?pretty'
{
  "cluster_name" : "my-application",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}
(7)、问题解决:
  • 问题1:java.lang.UnsupportedOperationException: seccomp unavailable:requires kernel 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled in
    只是警告,主要是因为Linux版本过低造成的,警告不影响使用,可以忽略

  • 问题2:node validation exception
    [4] bootstrap checks failed
    [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
    原因:无法创建本地文件问题,用户最大可创建文件数太小,修改配置
    解决方案:切换到root用户,编辑limits.conf配置文件, 添加类似如下内容:

vi /etc/security/limits.conf
添加如下内容:
#elasticsearch添加配置
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
  • 问题3:
    max number of threads [1024] for user [es] likely too low, increase to at least [4096]
    原因:无法创建本地线程问题,用户最大可创建线程数太小
    解决方案:切换到root用户,进入limits.d目录下,修改90-nproc.conf 配置文件。
vi /etc/security/limits.d/90-nproc.conf
找到如下内容:
* soft nproc 1024
#修改为
* soft nproc 4096
  • 问题4:
    max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
    原因:最大虚拟内存太小
    解决方案:切换到root用户下,修改配置文件sysctl.conf
vi /etc/sysctl.conf
添加下面配置:
#elasticsearch添加配置
vm.max_map_count=655360

并执行命令:sysctl -p
然后重新启动elasticsearch,即可启动成功。

  • 问题5:
    system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
    原因: Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true
    解决方案:在elasticsearch.yml中配置bootstrap.system_call_filter为false,
    注意要在Memory下面:
    bootstrap.memory_lock: false
    bootstrap.system_call_filter: false

  • 问题6:
    Exception in thread “main” java.nio.file.AccessDeniedException:
    /home/elk/elasticsearch-6.3.2/config/jvm.options
    原因:使用非 root用户启动ES,该用户的文件权限不足
    解决方案:添加用户对该文件的权限 chown -R elkuser:elkgroup /home/elk

  • 问题7:Java HotSpot™ 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error=‘Cannot allocate memory’ (errno=12)
    原因:由于elasticsearch默认分配jvm空间大小为2g,实际内存不够
    解决方案:
    1、增加服务器内存(土豪专用)
    2、修改elasticsearch默认jvm空间分配(实用)
    cd /home/elk/elasticsearch-6.3.2
    vi config/jvm.options
    -Xms2g
    -Xmx2g
    改为
    -Xms512m
    -Xmx512m

2、Kibana安装部署

(1)、直接下载或上传安装包
(2)、解压安装包到指定目录(/home/elk)
tar -zxvf kibana-6.3.2-linux-x86_64.tar.gz -C /home/elk/
cd  /home/elk/kibana-6.3.2-linux-x86_64
(3)、修改配置文件:kibana.yml
vi config/kibana.yml  

主要改两项

#配置本机ip
server.host: "192.168.50.9"
#配置es集群url
elasticsearch.url: "http://192.168.50.6:9200"
(4)、启动命令
cd  /home/elk/kibana-6.3.2-linux-x86_64
./bin/kibana
(5)、验证

ps:注意开启端口5601
访问:192.168.50.9:5601
能打开就是成功了

3、Logstash安装部署

(1)、直接下载或上传安装包
(2)、解压安装包到指定目录(/home/elk)
tar -zxvf logstash-6.3.2.tar.gz -C /home/elk/
cd  /home/elk/logstash-6.3.2
(3)、创建自己的配置文件
vi config/first-pipeline.conf
# 日志导入
input {
  beats {
    #指定监听端口
    port => 5044
    #要监听的ip地址,默认0.0.0.0;
    host => '0.0.0.0'
  }
}
# 日志筛选匹配处理
filter {
}
# 日志匹配输出
output {
     #可以同时输出到多个终端
     #筛选过滤后的内容输出到终端显示
     stdout { codec => "rubydebug" }
    
     #导出到elasticsearch
     elasticsearch {
        # 导出格式为json
        codec => "json"
        # ES地址+端口
        hosts => ["192.168.50.6:9200"]
        # 设置索引,可以使用时间变量
        index => "logstash-slow-%{+YYYY.MM.dd}"
        # ES如果有安全认证就使用账号密码验证,无安全认证就不需要
        #user => "admin"
        #password => "xxxxxx"
     }   
}

测试配置

./bin/logstash -f /home/elk/logstash-6.3.2/config/first-pipeline.conf --config.test_and_exit 

出现Configuration OK 字样即为可以

(4)、启动命令
cd  /home/elk/logstash-6.3.2
./bin/logstash -f /home/elk/logstash-6.3.2/config/first-pipeline.conf --config.reload.automatic

–config.reload.automatic选项启用动态重载配置功能

(5)、问题解决:
  • 问题1:Java HotSpot™ 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error=‘Cannot allocate memory’ (errno=12)
    原因:由于默认分配jvm空间大小较大,实际内存不够
    解决方案:
    1、增加服务器内存(土豪专用)
    2、修改默认jvm空间分配(实用)
    cd /home/elk/logstash-6.3.2
    vi config/jvm.options
    -Xms1g
    -Xmx1g
    改为
    -Xms512m
    -Xmx512m

4、Filebeat安装部署

(1)、直接下载或上传安装包
(2)、解压安装包到指定目录(/home/elk)
tar -zxvf filebeat-6.3.2-linux-x86_64.tar.gz -C /home/elk/
cd  /home/elk/filebeat-6.3.2-linux-x86_64
(3)、配置filebeat .yml

主要配置采集那些日志文件(文件路径),输出到哪里(elsticsearch、logstash、kibana)这里我们关闭output.elasticsearch,打开output.logstash,将收集到的信息推送到logstash。
filebeat.yml常用配置:
1)定义日志文件路径

filebeat.inputs:
- type: log
  enabled: true
  paths:
    – /var/log/*.log

2)输出给elsticsearch(不输出给logstash)(建议输出给logstash)

output.elasticsearch:
  hosts: ["192.168.1.42:9200"]

3)如果打算用kibana来展示filebeat数据,需要配置为kibana终端

setup.kibana:
  host: “localhost:5601″

4)如果elasticsearch和kibana增加了安全配置,你需要在配置文件中指定认证信息,
举例如下:

output.elasticsearch:
  hosts: ["myEShost:9200"]
  username: “filebeat_internal”
  password: “{pwd}” 
setup.kibana:
  host: “mykibanahost:5601″
  username: “my_kibana_user” 
    password: “{pwd}”

5)配置输出给logstash

output.logstash:
  hosts: ["192.168.50.8:5044"]
(4)、启动命令
cd  /home/elk/filebeat-6.3.2-linux-x86_64
./filebeat -e -c ./filebeat.yml

三、组件连接

1、各组件说明:

  • Elasticsearch是搜索引擎,需要做集群处理,也是需要做优化和性能升级的关键组件;
  • Kibana是前台展示,目的是将从Elasticsearch中获取到的检索数据可视化展示和操作;
  • Logstash 可做日志收集和过滤,但由于其相对的重量级(安装包大,运行占内存高等),现有大多只用它过滤日志,而非采集;
  • Filebeat是日志采集,监控到指定日志文件添加后采集到其配置对应的输出方,轻量级,对被采集的日志和应用无影响,无感知;

2、各组件配置说明:

  • Elasticsearch ,配置分配好集群的mater和node节点分配、node节点的主备、数据分片的规则(有需要的话)即可;
  • Kibana 配置好自己的ip和端口以及Elasticsearch集群地址就行了;
  • Logstash 配置好日志输入(输入方式、监听端口)、日志过滤规则、日志输出(Elasticsearch集群地址)
  • Filebeat 配置采集日志文件的地址,采集到日志的输出方(Logstash、中间件、Elasticsearch)

3、启动顺序:

Elasticsearch --> Kibana --> Logstash --> Filebeat

个人博客主页  -  微博  -  Github

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值