热门标签 | 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 &

 


 


推荐阅读
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 如何搭建服务器环境php(2023年最新解答)
    导读:本篇文章编程笔记来给大家介绍有关如何搭建服务器环境php的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、怎么搭建p ... [详细]
  • 于2012年3月份开始接触OpenStack项目,刚开始之处主要是与同事合作共同部署公司内部的云平台,使得公司内部服务器能更好的得到资源利用。在部署的过程中遇到各种从未遇到过的问题 ... [详细]
  • 搞懂 ELK 并不是一件特别难的事
    点击下方“民工哥技术之路”,选择“设为星标”回复“1024”获取独家整理的学习资料!本篇文章主要介绍ELK的一些框架组成,原理和实践&#x ... [详细]
  • 优秀到卓越就差比他更快搭建elk集群架构上篇
    工作原理开源分布式搜索引擎,特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • OpenCV4.5.0+contrib编译流程及解决错误方法
    本文介绍了OpenCV4.5.0+contrib的编译流程,并提供了解决常见错误的方法,包括下载失败和路径修改等。同时提供了相关参考链接。 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • Redis的默认端口、数据库使用和多端口配置
    本文介绍了Redis的默认端口、数据库使用和多端口配置的方法。通过选择不同的数据库和使用flushdb命令可以实现对不同数据库的访问和清除数据。同时,本文还介绍了在同一台机器上启用多个Redis实例的方法,并讨论了配置认证密码的步骤和注意事项。 ... [详细]
  • 用elastic stack来分析下你的redis slowlog
    redis是目前最流行的NoSQL内存数据库,然而如果在使用过程中出现滥用、乱用的情况,很容易发生性能问题,此时我们就要去关注慢查询日志& ... [详细]
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社区 版权所有