热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ELK安装部署

 本文主要介绍ELK的部署架构(优化)、安装部署过程、以及安装部署过程中遇到的问题和解决方法,希望通过本文能给初步接触ELK的朋友一些指引。1. ELK介绍ELK由ElasticS

 本文主要介绍ELK的部署架构(优化)、安装部署过程、以及安装部署过程中遇到的问题和解决方法,希望通过本文能给初步接触ELK的朋友一些指引。

1. ELK介绍

ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。

ElasticSearch

开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等

Logstash

对日志进行收集、过滤,并将其存储供以后使用

Kiabana

开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志

2. ELK架构

 结合项目实际我们采用了filebeat采集日志,采集日志后传输到redis服务器中,通过Logstash分析过滤日志后存储到ElasticSearch,再通过kibana展示。

 ELK安装部署

 

3. 部署结构图如下:

    

ELK安装部署

 

4. 安装环境

CentOS release 6.9 (Final)

JDK 1.8.0_144

5. 安装包

1

filebeat-6.0.1-linux-x86_64.tar.gz

2

logstash-6.0.1.zip

3

elasticsearch-6.0.1.zip

4

elasticsearch-head-master.zip

5

kibana-6.0.1-linux-x86_64.tar.gz

6

node-v8.11.2-linux-x64.tar.xz

6. 相关安装及配置

6.1.  filebeat安装

1)  进入安装包所在目录,解压安装文件。

$ cd /usr/local/elk/

$ tar -zxvf filebeat-6.0.1-linux-x86_64.tar.gz

2)   进入filebeat目录,修改filebeat.yml文件

$ cd filebeat-6.0.1-linux-x86_64

$ vi filebeat.yml

- type: log

  # Change to true to enable this prospector configuration.

  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.

  #指定要监控的日志,可以指定具体得文件或者目录

  # elk-service1代表以elk-service1开头的日志文件

  paths:

    - /usr/local/elk/logs/ elk-service1/*.log

    #- c:\programdata\elasticsearch\logs\*

  tags: ["elk-service1"]

  document_type: " elk-service1"

 

#================================ redis output ======================

#收集日志输出到redis集群

  • output.redis:

  enabled: true

  hosts: ["192.168.19.65:6500","192.168.19.65:6501","192.168.19.75:7500","192.168.19.75:7501","192.168.19.76:7600","192.168.19.76:7601"]

  key: "elk_log_file"

  db: 0

  timeout: 5

#----------------------------- Logstash output --------------------------------

 

 3)   启动filebeat

$ ohup ./filebeat -c ./filebeat.yml &

6.2. logstash安装

1)  进入安装包所在目录,解压安装文件

$ cd /usr/local/elk/

$ unzip logstash-6.0.1.zip

2)   在logstash-6.0.1的config下文件logstash_to_es.conf内容如下

$ cd /usr/local/elk/logstash-6.0.1/config

$ vi logstash_to_es.conf

 

3) 启动logstash

$ nohup ./bin/logstash -f config/logstash_to_es.conf >>logstash.out &

6.3.ElasticSearch安装

1) 进入安装包所在目录,解压安装文件

$ cd /usr/local/elk/

$ unzip elasticsearch-6.0.1.zip

2) 进入elasticsearch的config文件夹修改elasticsearch.yml文件

$ cd /usr/local/elk/elasticsearch-6.0.1/config

$ vi elasticsearch.yml

3)  相关配置如下:

# ---------------------------------- Network -----------------------------------

#

# Set the bind address to a specific IP (IPv4 or IPv6):

#

network.host: 192.168.19.138

#

# Set a custom port for HTTP:

#

http.port: 8200

#

# For more information, consult the network module documentation.

#

# --------------------------------- Discovery ----------------------------------

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

        

 

4) 启动elasticsearch

$ nohup ./bin/elasticsearch >>elasticsearch.out &

5) elasticsearch安装过程中错误解决

 错误:

unable to install syscall filter:

java.lang.UnsupportedOperationException: seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed at org.elasticsearch.bootstrap.SystemCallFilter.linuxImpl(SystemCallFilter.java:341) ~[elasticsearch-6.0.1.jar:6.0.1]

解决:

在elasticsearch.yml新增如下配置

#Centos6不支持SecComp所以要关闭

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

错误:

ERROR: [1] bootstrap checks failed

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

解决:

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

$ sudo vi /etc/sysctl.conf

添加下面配置:

vm.max_map_count=655360

并执行命令:

$ sudo sysctl -p

6.4. elasticsearch-head安装

安装elasticsearch-head前需先安装nodejs,主要安装步骤如下:

1)  进入nodejs安装包所在目录,解压安装文件

$ cd /usr/local/elk/

$ tar xf node-v8.3.0-linux-x64.tar.xz

2)  安装nodejs所需相关插件

$ sudo yum -y install gcc make gcc-c++ openssl-devel wget

3)  设置node和npm为全局变量

$ sudo ln -s /usr/local/elk/node-v8.11.2-linux-x64/bin/node /usr/local/bin/node

$ sudo ln -s /usr/local/elk/node-v8.11.2-linux-x64//bin/npm /usr/local/bin/npm

4)  修改.bash_profile文件,新增如下配置

$ vi ~/.bash_profile

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

        . ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/local/elk/node-v8.11.2-linux-x64/bin

export PATH

5)  执行如下命令使.bash_profile修改生效

$ source  ~/.bash_profile

6)  测试nodejs是否安装成功

$ node -v

$ npm -v

7)  安装grunt

由于elasticsearch-head 插件的执行文件是由grunt 命令来执行的,所以这个命令必须安装。运行

  • 安装grunt所需插件

$ npm install -g grunt-cli

$ npm install grunt-contrib-clean

$npm install grunt-contrib-concat

$ npm install grunt-contrib-watch

$ npm install grunt-contrib-connect

$ npm install grunt-contrib-copy

$ npm install grunt-contrib-jasmine

  • 安装grunt

$ npm install grunt --save-dev

$ npm install

查看grunt是否安装成功

$ grunt -version

8) 进入elasticsearch-head安装包所在目录,解压安装文件

$ cd /usr/local/elk/

$ unzip elasticsearch-head-master.zip

9)  进入elasticsearch-head-master目录,修改Gruntfile.js文件

$ cd elasticsearch-head-master

$ vim Gruntfile.js

connect: {

       server: {

                 options: {

                          port: 8100,

                          hostname: '*',

                          base: '.',

                          keepalive: true

                 }

       }

}

 

10) 修改_site/app.js 文件,修改head的连接地址

$ cd elasticsearch-head-master

$ vim _site/app.js

app.App = ui.AbstractWidget.extend({

       defaults: {

                 base_uri: null

       },

       init: function(parent) {

                 this._super();

                 this.prefs = services.Preferences.instance();

                 this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") ||

        "http://192.168.19.138:8200";

                 if( this.base_uri.charAt( this.base_uri.length - 1 ) !== "/" ) {

                          // XHR request fails if the URL is not ending with a "/"

                          this.base_uri += "/";

                 }

    .....

       }

})

 

11)  启动elasticsearch-head插件:

$ grunt server &

 

6.5. kibana安装

1)   进入nodejs安装包所在目录,解压安装文件

$ cd /usr/local/elk/

$ tar -zxvf kibana-6.0.1-linux-x86_64.tar.gz

2)   进入kibana的config文件夹修改kibana.yml文件

$ cd /usr/local/elk/kibana-6.0.1-linux-x86_64/config

$ vi kibana.yml

# Kibana is served by a back end server. This setting specifies the port to use.

server.port: 8601

server.host: "192.168.19.138"

# to Kibana. This setting cannot end in a slash.

#server.basePath: ""

server.name: "your-hostname"

elasticsearch.url: "http://192.168.19.138:8200"

 

3) 启动kibana

$ nohup ./bin/kibana >>kibana.out &

 


 


推荐阅读
  • 对象存储与块存储、文件存储等对比
    看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 深入解析:存储技术的演变与发展
    本文探讨了从单机文件系统到分布式文件系统的存储技术发展过程,详细解释了各种存储模型及其特点。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文通过分析一个具体的案例,探讨了64位Linux系统对32位应用程序的兼容性问题。案例涉及OpenVPN客户端在64位系统上的异常行为,通过逐步排查和代码测试,最终定位到了与TUN/TAP设备相关的系统调用兼容性问题。 ... [详细]
  • 2017年软件开发领域的七大变革
    随着技术的不断进步,2017年对软件开发人员而言将充满挑战与机遇。本文探讨了开发人员需要适应的七个关键变化,包括人工智能、聊天机器人、容器技术、应用程序版本控制、云测试环境、大众开发者崛起以及系统管理的云迁移。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 本文总结了近年来在实际项目中使用消息中间件的经验和常见问题,旨在为Java初学者和中级开发者提供实用的参考。文章详细介绍了消息中间件在分布式系统中的作用,以及如何通过消息中间件实现高可用性和可扩展性。 ... [详细]
author-avatar
手机用户2502937333
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有