简单安装ELK分析日志及使用心得

ELK是由Elasticsearch、Logstash、Kibana三个组件组成的。
Elasticsearch:是ELK的核心插件,是一个基于Lucene的搜索服务器,它提供一个分布式多用户能力的全文搜索引擎,能够达到实时搜索,稳定,可靠,快速,安装方便。Elasticsearch服务会开启两个端口,9200和9300,其中9200是对外服务的,9300是对集群内交互使用的。
Logstash:日志收集工具,可以从本地磁盘,网络服务(自己监听端口,接受用户日志),消息队列中收集各种各样的日志。然后对日志进行分析整理,输出到指定的输出,(如elasticsearch、redis、终端等。)监听9600端口。
Kibana:是一个可视化日志web展示工具,对Elasticsearch中存储的日志进行展示。监听5601端口。

在这里我直接三个组件装在同一台机器上面,也可以把他们分开。
192.168.40.15 elasticsearch logstash kibana

由于ES与logstash都需要JDK环境,所以要先安装JDK环境,最好是安装1.8或者以上的。

[root@elkserver ~]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

安装ES:

[root@elkserver src]# tar -xf elasticsearch-5.6.3.tar.gz
[root@elkserver src]# mv elasticsearch-5.6.3/  /usr/local/elasticsearch
[root@elkserver src]# cd /usr/local/elasticsearch/
##修改配置文件:
[root@elkserver elasticsearch]# vim config/elasticsearch.yml
node.name: elkserver
network.host: 192.168.40.15
discovery.zen.minimum_master_nodes: 1
##在配置文件末尾添加:
http.cors.enabled: true
http.cors.allow-origin: "*"  ##这两句是为了后面安装head插件使用的。

安装head插件
head插件能够生成集群的统计数据,并提供浏览器查询,同时还能对elasticsearch索引进行结构化查询。

cd /usr/local/elasticsearch
mkdir head
cd head
git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
yum install -y npm*    ##安装npm命令
npm install    ##运行缓慢
npm install -g grunt-cli
##修改配置文件
[root@elkserver elasticsearch-head]# vim Gruntfile.js connect: {server: {options: {port: 9100,hostname: '0.0.0.0',   ##添加这行,冒号后面有空格base: '.',keepalive: true}}}
##修改elasticsearch的JVM运行内存,这个可以根据需要更改,但是-Xms和-Xmx的值必须一样,不然启动报错[root@elkserver elasticsearch-head]# vim /usr/local/elasticsearch/config/jvm.options
-Xms1g
-Xmx1g
##修改Linux最大打开文件数
vim /etc/security/limits.conf
* soft nofile 655350   ##在末尾添加
* hard nofile 655350
[root@elkserver ~]# ulimit -n
655350
##修改sysctl.conf文件
[root@elkserver ~]# vim /etc/sysctl.conf 
vm.max_map_count=655350
[root@elkserver ~]# sysctl -p

将ES的head插件启动,然后创建普通用户,启动ES,ES只能使用普通用户启动

useradd elastic
passwd elastic##启动head插件
[root@elkserver elasticsearch-head]# pwd
/usr/local/elasticsearch/head/elasticsearch-head
[root@elkserver elasticsearch-head]# grunt server &
##会开启9100端口。
##切换到普通用户启动elasticsearch
[root@elkserver elasticsearch-head]# chown -R elastic:elastic /usr/local/elasticsearch/
[root@elkserver elasticsearch-head]# su - elastic
Last login: Sun Jun 10 13:15:09 CST 2018 on pts/0
[elastic@elkserver ~]$ nohup /usr/local/elasticsearch/bin/elasticsearch &
[1] 2339
[elastic@elkserver ~]$ nohup: ignoring input and appending output to ‘nohup.out’
##启动成功是会开启9200,9300两个端口的。
##在浏览器打开可以利用head插件查看elasticsearch的集群及索引情况
![](https://s1.51cto.com/images/blog/201806/10/2ea5998c2fd589e6a539a5afe1b6f598.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

安装Logstash
Logstash也是需要jdk环境,所以如果是在不同机器上部署的,需要安装jdk环境,版本可以选择和ES一样的。

[root@elkserver src]# tar -xf logstash-5.6.3.tar.gz 
[root@elkserver src]# mv logstash-5.6.3 /usr/local/logstash
##创建日志处理文件的存放目录
mkdir /logstash
cd /logstash
##接下来是重点,也是ELK的难点吧,就是将日志进行分析,使用正则匹配过滤日志中想要的内容。
120.79.189.51 - - [10/Jun/2018:12:58:12 +0800] "POST /wp-cron.php?doing_wp_cron=1528606692.3628709316253662109375 HTTP/1.1" 499 0 "-" "WordPress/4.8; http://120.79.189.51"这是日志中的一行,logstash的正则匹配默认是匹配一行,以回车符作为分隔符。
当然如果日志是json格式的那么就没有需要处理直接输出即可。
[root@elkserver logstash]# cat input_flter_output.conf 
input {file {path => "/logstash/test.log"type => "test.log"start_position => "beginning"}
}
filter {grok {match => {"message" => "(?<ip_addr>\d+?\.\d+?\.\d+?\.\d+?)\s-\s-\s\[(?<log_date>\d+?/\w+?/\d+?):(?<log_time>\d+?:\d+?:\d+?)\s+"}}}
output {stdout {codec => rubydebug}
}
这是logstash的日志分析文件,总共分为三个大部分,input、flter、output,其中input是输入日志,这里选择的是file文件,path是文件的路径,type是文件的类型,这个可以自定义,主要用来区分每个日志,start_position是设定为beginning是指从文件的开头开始读取。
flter是处理日志的部分,使用grok这个强大的组件进行信息过滤,对于日志的正则匹配最总会以json的格式输出,所以正则匹配的格式是(?<字段名>正则表达式过滤将要匹配的内容)在每个括号内创建过滤的内容,将不需要的内容放在括号外,可以一直做匹配知道日志结束,这里我只是简单匹配日志前面的ip地址和日期时间。
针对正则匹配字段详细说明:
正则匹配字段通过“(?<字段名>正则表达式)”来定义,我们看到“(?<ip_addr>\d+?\.\d+?\.\d+?\.\d+?”匹配了日志中的IP地址,然后将不需要的内容放在括号外面匹配,接着是日期和时间,使用同样的方式,然后不需要的内容放在外面因为这里我只匹配了前面的一点内容,如果有需要提取,可以一直匹配,知道这一行结束,logstash默认只会匹配日志以行作为分割,下一行又是新的一次匹配了。output是处理输出部分,这里我只是简单输出到终端,先实验正则匹配没问题后,将输出指向elasticsearch。
##这里先看看终端的输出内容,也就是经过logstash过滤后的日志
![](https://s1.51cto.com/images/blog/201806/10/d911c12532dffb112e5090eaafa08aa9.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
接下来将日志输出到elasticsearch,修改output里面的内容即可。
output {elasticsearch {              ##指定输出到ESaction => "index"      ##建立索引hosts => "192.168.40.15:9200"       ##ES地址端口index => "test_log-%{+yyyy.MM.dd}"    ##索引的名称}stdout {codec => rubydebug}
}
然后再执行一次
/usr/local/logstash/bin/logstash -f input_flter_output.conf

安装kibana

[root@elkserver src]# rpm -ivh kibana-5.6.3-x86_64.rpmvim /etc/kibana/kibana.yml
server.host: "192.168.40.15"   ##指定本地server地址
elasticsearch.url: "http://192.168.40.15:9200"     ##指定elasticsearch对外服务的url

接下来就是直接在浏览器打开kibana的web界面,然后建立索引库,索引是只想elastic的,在logstash日志分析文件里面有建立了一个索引,索引的名称是test_log-${日期}这样的形式。
访问kibana:http://192.168.40.15:5601
简单安装ELK分析日志及使用心得
输入相应的索引,然后建立索引库,然后就可以制作各种各样的图形分析日志,kibana提供了很多中图形,根据需要选择分析。
简单安装ELK分析日志及使用心得
简单安装ELK分析日志及使用心得
记得ELK是实时的日志分析,所以kibana的web界面右上角的时间如果设置不好就看不到导入的日志了。

转载于:https://blog.51cto.com/lsfandlinux/2127235

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS单引号嵌套的问题,怎么改才能对呢!

JS单引号嵌套的问题&#xff0c;怎么改才能对呢&#xff01; https://zhidao.baidu.com/question/416584343.html document.getElementById(celbid).innerHTML<inputname""type"text"οnblur"celchangeb(celaid,celbid);">;这段代码是JS显…

前端入门教程(七)CSS属性设置

宽和高 width属性可以为元素设置宽度。 height属性可以为元素设置高度。 块级标签才能设置宽度&#xff0c;内联标签的宽度由内容来决定。 字体属性 文字字体 font-family可以把多个字体名称作为一个“回退”系统来保存。如果浏览器不支持第一个字体&#xff0c;则会尝试下一个…

java 深入了解DTO及如何使用DTO

这篇文章主要来谈论一下DTO使用的场合及其带来的好处。首先要理解DTO是什么&#xff1f; DTO就是数据传输对象(Data Transfer Object)的缩写。DTO模式&#xff0c;是指将数据封装成普通的JavaBeans&#xff0c;在J2EE多个层次之间传输。 DTO类似信使&#xff0c;是同步系统中…

漫谈程序员系列:一张图道尽程序员的出路

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 《推背图》相传由唐太宗时期的司天监李淳风和袁天罡合著&#xff08;此两人其实是超级武学高手&#xff0c;参见小椴的《开唐》&#xf…

restful风格使用小例

1. 页面传参数写法&#xff1a; http://write.blog.csdn.net/ 参数1 / 参数2 / 参数N restful风格是把参数 直接拼在 / 后面&#xff0c;而不是URL地址重写方式。 2. 后台接收用法&#xff1a;

Mac 10.12彻底关闭Dashboard

1、打开【系统偏好设置】。 2、点击进入【Mission Control】。 3、中间有一项【Dashboard】&#xff0c;点击它右边的下拉菜单&#xff0c;选择【关闭】&#xff0c;即可。 转载于:https://www.cnblogs.com/EasonJim/p/9547489.html

多线程读取文件File

Java代码 import java.io.*; class DownThread extends Thread { //定义字节数组&#xff08;取水的竹筒&#xff09;的长度 private final int BUFF_LEN 32; //定义读取的起始点 private long start; //定义读取的结束点 private long end; …

Spring Boot 是什么,有什么用。

见&#xff1a;http://www.csdn.net/article/a/2016-05-12/15838098 maven/Java/web/bootstrap/dataTable/app开发QQ群&#xff1a;566862629。希望更多人一起帮助我学习。 首先&#xff0c;我们来看一下spring boot是什么&#xff0c;它帮助我们解决了哪些问题&#xff1a; …

java获取当前时间戳的方法

获取当前时间戳 //方法 一 System.currentTimeMillis(); //方法 二 Calendar.getInstance().getTimeInMillis(); //方法 三 new Date().getTime(); 获取当前时间 SimpleDateFormat df new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 String date df.…

解决Linux 忘记root 密码的办法

今天突然遇到一个问题&#xff0c;那别人的 linux 系统发现root 密码竟然不知道&#xff0c;这就尴尬了。经过一番百度&#xff0c;记录下 如何修改root 密码 1&#xff1a;开机linxu 按E 键 2&#xff1a;继续按E 键 3:选择 kernel..... 按E 4&#xff1a;在rhgb quiet 后面加…

简单理解Hadoop(Hadoop是什么、如何工作)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、Hadoop主要的任务部署分为3个部分&#xff0c;分别是&#xff1a;Client机器&#xff0c;主节点和从节点。主节点主要负责Hadoop两个…

Factorials 阶乘

Description N的阶乘写作N!表示小于等于N的所有正整数的乘积。阶乘会很快的变大&#xff0c;如13!就必须用32位整数类型来存储&#xff0c;70&#xff01;即使用浮点数也存不下了。你的任务是找到阶乘最后面的非零位。举个例子,5!1*2*3*4*5120所以5!的最后面的非零位是2&#x…

2 分钟读懂大数据框架 Hadoop 和 Spark 的异同

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 谈到大数据&#xff0c;相信大家对Hadoop和Apache Spark这两个名字并不陌生。但我们往往对它们的理解只是提留在字面上&#xff0c;并没有…

论述HTML5平台的若干重要特性

开发者已凭借网页技术制作出创收丰厚的游戏作品许多年&#xff1a;《部落战争》凭借静态网页页面大获成功&#xff0c;《Farmville》凭借Flash开拓出新的疆域。但如今越来越多人觉得&#xff0c;未来HTML5将变成游戏的主要平台。为什么HTML5如此颇具趣味&#xff0c;它是否真的…

微信小程序 - 回到自己位置(map)

演示效果&#xff1a; 图片资源 index.js 1 /** 2 * 回到自己位置&#xff0c;在cover-image上绑定点击事件即可. 3 */ 4 clickcontrol(e) { 5 let mpCtx wx.createMapContext("map"); 6 mpCtx.moveToLocation(); 7 }, 转载于:https://www.cnbl…

如何让tomcat服务器运行在80端口,并且无需输入项目名即可访问项目()

这个问题最开始遇到的时候是半年前,自己买了个服务器玩,但是域名解析的时候出了问题,我查了查资料才知道腾讯云是默认解析到80端口,而且还改不了. 首先是修改tomcat运行端口号,默认是8080,但是我们可以通过修改配置文件更改, 打开conf/server.xml文件找到这个地方,: 将8080改为…

使用图形芯片加速电子自动化设计应用程序

以往EDA应用性能瓶颈主要受两方面因素制约&#xff0c;首先大多数应用都是单线程的&#xff0c;而CPU和GPU架构拥有几十到数千的并行内核&#xff0c;其次是应用程序内存延迟问题。目前EDA应用已经部署到传统的常规处理器上。最重要的是这些应用促使人们设计出并行或向量处理器…

【Linux】Linux中常用操作命令

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 常用指令 ls   显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录&#xff0…

大数据应用时代来袭 SaaS走向没落?

随着大量的信息涌入互联网——90%的互联网是过去两年建立起来的——互联网公司正在想方设法去熟悉并利用大数据来推动他们的业务。正如SaaS和云技术一样完全变革了企业的运作方式一样&#xff0c;大数据应用&#xff08;BDA&#xff09;也同样可以。 BDA是基于网络的应用&#…

Java程序员必知的10个调试技巧

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 在本文中&#xff0c;作者将使用大家常用的的开发工具Eclipse来调试Java应用程序。但这里介绍的调试方法基本都是通用的&#xff0c;也适…