ELK工作流程图

环境准备

安装Logstash依赖包JDK

Logstash的运行依赖于Java运行环境, Logstash 1.5以上不低于java 7推荐使用最新版本的Java。由于只是运行Java程序,而不是开发,下载JRE即可。

yum 安装

  [root@reboot ~]#yum install java-1.8.0-openjdk  -y     

设置yum安装的java_home(可以不执行)

  [root@reboot ~]# export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-1.b14.el6.x86_64

源码安装

JDK的安装方式比较简单,只需将下载回来的程序包解压到相应的目录即可。

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 

下载页面,因为需要证书,Linux无法下载,建议window下载,然后上传

[root@reboot ~]#mkdir /usr/local/java
[root@reboot ~]#tar -zxf jdk-8u45-linux-x64.tar.gz -C /usr/local/java/
#设置JDK的环境变量(/etc/profile)添加如下:
export JAVA_HOME=/usr/local/java/jdk1.8.0_45
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH #检查jdk是否安装成功
[root@reboot ~]#java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02,mixed mode)

安装logstash

安装logstash

只需将它解压的对应目录即可,例如:/usr/local下:

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

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

[root@reboot ~]# tar -zxf logstash-5.6.11.tar.gz -C /usr/local/

安装完成后运行如下命令测试:

[root@reboot ~]# /usr/local/logstash-5.6.11/bin/logstash -e 'input { stdin { } } output { stdout {} }'

Logstash startup completed

Hello World!          #输入一个hello world。

2018-09-01T14:48:35.902Z dev-online hello world #处理了输出的内容,格式:时间 主机名  输入的信息

codec =>rubydebug 格式化输出

[root@reboot ~]# ./bin/logstash -e  'input { stdin{} } output { stdout { codec=>rubydebug} }'

Logstash startup completed

hello world

{

      "message" => "hello world",

      "@version" => "1",

#  logstash采用的是UTC时间,即0时区,所以输出的结果,比北京时间少8小时

    "@timestamp" => "2018-09-01T06:48:47.348Z",           

      "host" => "dev-online"

}

安装Elasticsearch

(https://www.elastic.co/ 官网)

 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.11.tar.gz

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz

下载Elasticsearch后,解压到对应的目录就完成Elasticsearch的安装。

[root@reboot ~]# tar -zxf elasticsearch-5.6.11.tar.gz -C /usr/local/

ES的配置文件

[root@reboot ~]#cat /usr/local/elasticsearch-5.6.11/config/elasticsearch.yml 
cluster.name: my-application #集群名
node.name: node-1 #节点名
path.data:/data/db # 默认存放安装路径下的data目录
network.host:10.1.19.18                           # 默认是0.0.0.0:9200
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "10.1.19.18"] #集群单播发现
discovery.zen.minimum_master_nodes: 1

启动Elasticsearch

[root@reboot ~]# useradd es            # 2.*版本之后不允许root启动
[es@reboot ~]$ /usr/local/elasticsearch-5.6.11/bin/elasticsearch -d  # 后台运行
[es@reboot ~]$ /usr/local/elasticsearch-5.6.11/bin/elasticsearch-plugin install x-pack # 插件安装
# 确认elasticsearch的9200端口已监听,说明elasticsearch已成功运行
 [es@reboot ~]$netstat -anp |grep :9200
 tcp        0      0 :::9200                     :::*                        LISTEN      3362/java
 [es@reboot ~]$ curl http://ip:9200   # 返回json结果

常见报错

https://www.cnblogs.com/xxoome/p/6663993.html

内存不足
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)

由于elasticsearch5.0默认分配jvm空间大小为2g,修改jvm空间分配
# vim config/jvm.options  
-Xms2g  
-Xmx2g  
修改为  
-Xms512m 
-Xmx512m  
线程数不够
max number of threads [1024] for user [elasticsearch] is too low, increase to at least [2048]

修改 /etc/security/limits.d/90-nproc.conf 
*          soft    nproc     1024
改为
*          soft    nproc     2048
max_map_count不足
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

修改/etc/sysctl.conf配置文件,
cat /etc/sysctl.conf | grep vm.max_map_count
vm.max_map_count=262144
sysctl -p
最大打开文件数不足
max file descriptors [65535] for elasticsearch process likely too low, increase to at least [65536]
vim /etc/security/limits.conf 
* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
阿里云服务器问题
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

解决方法:在es配置中加入下面命令即可
bootstrap.system_call_filter: false

Kibana

安装

下载kibana后,解压到对应的目录就完成kibana的安装

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

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

[root@reboot ~]# tar -zxf kibana-5.6.11-linux-x64.tar.gz -C /usr/local/

简单配置

 vim config/kibana.yml 

port:5601                      #对外访问端口
host:"0.0.0.0"                      #对外访问ip
elasticsearch.url: "http://localhost:9200"    #数据源ES地址

启动kibana

[root@reboot ~]#  /usr/local/kibana-5.6.11-linux-x64/bin/kibana

访问测试

  http://kibanaServerIP:5601     

访问Kibana,首先,配置一个索引,默认,Kibana的数据被指向Elasticsearch,使用默认的logstash-*的索引名称,并且是基于时间的,点击“Create”即可。

小栗子

在logstash安装目录下创建一个logstash-es-simple.conf文件,用于测试logstash使用elasticsearch作为后端存储的例子,该文件中定义了stdout和elasticsearch同时输出,这样的“多重输出”即保证输出结果显示到屏幕上,同时也输出到elastisearch中。

实际应用

配置logstash作为Indexer

将logstash配置为索引器,并将logstash的日志打印输出到屏幕,本范例主要是索引本地系统日志。

[root@reboot ~]#cat /usr/local/logstash-5.6.11/logstash-indexer.conf

input {

  file {

    type =>"syslog"

     path => ["/var/log/messages", "/var/log/syslog" ]

  }

}

output {

  stdout { codec=> rubydebug }

}
[root@reboot ~]#/usr/local/logstash-5.6.11/bin/logstash -f logstash-indexer.conf

使用echo命令模拟写入日志,命令执行后看到如下图的信息

[root@reboot ~]# echo "`date` 你好" >>/var/log/messages

就可以在logstash终端看到进来的日志了

学习的文章

https://www.elastic.co/guide/index.html           官方文档

http://kibana.logstash.es/content/    elk中文指南

http://www.ttlsa.com/elk/         运维生存时间 elk 系列  

http://www.wklken.me/posts/2015/04/26/elk-for-nginx-log.html   非常棒 博主有才华

http://ckl893.blog.51cto.com/8827818/1772287     简单版的elk实现nginx日志分析

http://www.ywnds.com/?p=9776 5.4.1版本   运维那点事  文章真棒

https://www.cnblogs.com/jiu0821/p/7695149.html 5.6.3比较新多版本了

http://blog.51cto.com/13527416/2049173 沪江网搜索平台的实践

http://blog.51cto.com/zero01/2079879 6.0版本

http://blog.51cto.com/13676067/2154285 涉及到调优

ELKstack简介及环境部署的更多相关文章

  1. 01 . GitLab简介及环境部署

    GitLab简介 最初,该产品名为GitLab,是完全免费的开源软件,按照MIT许可证分发. 2013年7月,产品被拆分为:GitLabCE(社区版)和GitLabEE(企业版),当时,GitLabC ...

  2. Python简介及环境部署

    Python的由来:         Python的创始人:Guido van Rossum Guido 在1989年12月时,寻找一门“课余”编程项目来打发圣诞节前后的时间.Guido决定为当时正构 ...

  3. OpenStack实践系列①openstack简介及基础环境部署

    OpenStack实践系列①openstack简介及基础环境部署 一.OpenStack初探1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运 ...

  4. SDN概述:简介、工具、环境部署

    一.前言: 本文初步接触 SDN 的相关概念.需要依次完成下面几项任务: SDN 简介 SDN 工具 SDN 环境部署 推荐阅读 推荐阅读下述内容: Ethane 项目,openflow 的基础 op ...

  5. 第一章·ELKstack介绍及Elasticsearch部署

    一.ELKstack课程大纲  二.ELKstack简介 什么是ELK? 通俗来讲,ELK是由Elasticsearch.Logstash.Kibana 三个开源软件的组成的一个组合体,这三个软件当 ...

  6. 分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目

    分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目 这几天着实忙的焦头烂额,可惜不是搞技术,今天周日,难得闲下来,写篇大家都想学习的Git教程,其实廖雪峰老师的网站已经 ...

  7. Spring Boot (二)集成Jsp与生产环境部署

    一.简介 提起Java不得不说的一个开发场景就是Web开发,也是Java最热门的开发场景之一,说到Web开发绕不开的一个技术就是JSP,因为目前市面上仍有很多的公司在使用JSP,所以本文就来介绍一下S ...

  8. 在 CentOS 7上Virtualbox+phpVirtualBox完整虚拟化环境部署

    一.phpVirtualBox简介      VirtualBox是一套为不同操作系统而设的 x86 虚拟化产品.它是一个机器/硬件的虚拟化产品,功能上与 VMware Server.Parallel ...

  9. Linux下开源邮件系统Postfix+Extmail+Extman环境部署记录

    一.基础知识梳理MUA (Mail User Agent) MUA 既是"邮件使用者代理人",因为除非你可以直接利用类似 telnet 之类的软件登入邮件主机来主动发出信件,否则您 ...

随机推荐

  1. position:fix相对父元素定位

    大家都知道,当position的值为fix时,生成绝对定位的元素,相对于浏览器窗口进行定位. 它常常应用的场合是,当下拉滚动条时固定导航栏到顶部,将广告固定在页面两侧或浏览器中间. 如果需要将导航栏d ...

  2. django 数据库配置 ,APP 迁移.模型基础

    # 1.数据库的连接配置django 连接mysql的配置流程:- 安装 pymysql pip install pymysql- 创建数据库用户有创建数据库权限的用户- 创建数据库crm .进入数据 ...

  3. 手游开发之lua的table 元表的运用

    元表在项目中的运用,其中就包括元方法这点.元方法是指__index和__newIndex,下面我总结下,更详细的例子讲解可以参考<lua程序设计 第2版>的第13章内容.长h短说,简言之有 ...

  4. Object强转为实体类类型失败!!!!!!

    这是从我CSDN博客直接拿来的图片废话不多说,直接上代码:

  5. 解决find命令报错: paths must precede expression(转)

    原文地址:https://www.cnblogs.com/peter1994/p/7297656.html 在一天早上,想在服务器 /tmp 目录清除一些pdf文件,大概一万多个文件,在执行命令的时候 ...

  6. 《Java程序设计》第二周学习总结(一)

    教材学习内容总结 标识符.关键字 基本数据类型 类型转换运算 输入.输出数据 数组 教材学习中的问题和解决过程 问题1:在创建vim并编写完成后出现以下情况 问题1解决方案:打开虚拟机的文件目录,发现 ...

  7. ORACLE数据库测试数据插入速度[z]

    一,没有优化的速度:Executed in 69.436 seconds drop table t purge;create table t(x int);/*清空共享池,注意在生产环境中千万不能做这 ...

  8. CentOS 7 查询yum安装的软件及路径

    来源:CentOS 7 查询yum安装的软件及路径 先执行下面的命令,查看所有的已安装软件名称. rpm -qa 然后执行 rpm -ql 软件名称 就可以显示软件的安装路径.   [root@loc ...

  9. POST application/json 适用于传递多层的json

    本来以为自己写了那么多post请求,ajax已经难不住了呢, 结果现实无比的残酷, 后台换成了java,发多层级的json,后台就取不到了, 虽然到最后还是配置正确了,..记录下来,引以为戒, axi ...

  10. 使用手势对UIImageView进行缩放、旋转和移动

    // 添加所有的手势 - (void) addGestureRecognizerToView:(UIView *)view { // 旋转手势 UIRotationGestureRecognizer  ...