简单安装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或者以上的。

[[email protected] ~]# 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:

[[email protected] src]# tar -xf elasticsearch-5.6.3.tar.gz
[[email protected] src]# mv elasticsearch-5.6.3/  /usr/local/elasticsearch
[[email protected] src]# cd /usr/local/elasticsearch/
##修改配置文件:
[[email protected] 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
##修改配置文件
[[email protected] elasticsearch-head]# vim Gruntfile.js
       connect: {
                        server: {
                                options: {
                                        port: 9100,
                                        hostname: ‘0.0.0.0‘,   ##添加这行,冒号后面有空格
                                        base: ‘.‘,
                                        keepalive: true
                                }
                        }
                }
##修改elasticsearch的JVM运行内存,这个可以根据需要更改,但是-Xms和-Xmx的值必须一样,不然启动报错

[[email protected] elasticsearch-head]# vim /usr/local/elasticsearch/config/jvm.options
-Xms1g
-Xmx1g
##修改Linux最大打开文件数
vim /etc/security/limits.conf
* soft nofile 655350   ##在末尾添加
* hard nofile 655350
##这一步需要重启linux使配置生效
reboot
[[email protected] ~]# ulimit -n
655350
##修改sysctl.conf文件
[[email protected] ~]# vim /etc/sysctl.conf
vm.max_map_count=655350
[[email protected] ~]# sysctl -p

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

useradd elastic
passwd elastic

##启动head插件
[[email protected] elasticsearch-head]# pwd
/usr/local/elasticsearch/head/elasticsearch-head
[[email protected] elasticsearch-head]# grunt server &
##会开启9100端口。
##切换到普通用户启动elasticsearch
[[email protected] elasticsearch-head]# chown -R elastic:elastic /usr/local/elasticsearch/
[[email protected] elasticsearch-head]# su - elastic
Last login: Sun Jun 10 13:15:09 CST 2018 on pts/0
[[email protected] ~]$ nohup /usr/local/elasticsearch/bin/elasticsearch &
[1] 2339
[[email protected] ~]$ nohup: ignoring input and appending output to ‘nohup.out’
##启动成功是会开启9200,9300两个端口的。
##在浏览器打开可以利用head插件查看elasticsearch的集群及索引情况
![](http://i2.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一样的。

[[email protected] src]# tar -xf logstash-5.6.3.tar.gz
[[email protected] 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格式的那么就没有需要处理直接输出即可。
[[email protected] 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过滤后的日志
![](http://i2.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 {              ##指定输出到ES
        action => "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

[[email protected] src]# rpm -ivh kibana-5.6.3-x86_64.rpm

vim /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

输入相应的索引,然后建立索引库,然后就可以制作各种各样的图形分析日志,kibana提供了很多中图形,根据需要选择分析。


记得ELK是实时的日志分析,所以kibana的web界面右上角的时间如果设置不好就看不到导入的日志了。

原文地址:http://blog.51cto.com/lsfandlinux/2127235

时间: 2024-10-12 08:44:57

简单安装ELK分析日志及使用心得的相关文章

2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(教程详情)

章节一 2018年 ELK课程计划和效果演示1.课程安排和效果演示简介:课程介绍和主要知识点说明,ES搜索接口演示,部署的ELK项目演示es: localhost:9200kibana http://localhost:5601/ 章节二 elasticSearch 6.2版本基础讲解到阿里云部署实战 2.搜索引擎知识介绍和相关框架简介:介绍搜索的基本概念,市面上主流的搜索框架elasticSearch和solr等对比什么是搜索:在海量信息中获取我们想要的信息传统做法:1.文档中使用系统的Fin

ELK简单安装测试

1 介绍组件 Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读). Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. ElasticSearch它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch 中的 Index 是一组具有相似特征的文档集合,类似于关系数据库模型中的数据库实例,Inde

ELK Stack 日志分析 Elasticsearch搜索权限

视频下载地址:链接:http://pan.baidu.com/s/1jItWoYy 密码:t6cj 这几年国内运维都在不断完善运维自动化! 设想,IT运维自动化建设完成之后,那下一步怎么走? 我可以很负责的告诉你,接下来必将是智能运维的时代!!! 智能运维,是在IT信息化建设完善的前提下的一种新运维模式! 它依靠的是 实时的大数据分析平台 + 完善的数据分析策略 它的作用就是 -- 能在运维故障发生之前就预测报警! 如此高大上,如此前沿的技术,大家一定要把握住 二话不说,提前学习! ELK就是智

ELK:日志收集分析平台

目录 简介 环境说明 Filebeat 部署 web上采集配置文件 app上采集配置文件 Redis 部署 配置文件 Logstash 部署 Elasticsearch 集群部署 配置文件 Kibana 部署 参考文档 简介 ELK是一个日志收集分析的平台,它能收集海量的日志,并将其根据字段切割.一来方便供开发查看日志,定位问题:二来可以根据日志进行统计分析,通过其强大的呈现能力,挖掘数据的潜在价值,分析重要指标的趋势和分布等,能够规避灾难和指导决策等.ELK是Elasticsearch公司出品

ELK简单安装

ELK日志分析平台 一.ELK介绍 ELK是三个开源软件的缩写,分别为:Elasticsearch . Logstash以及Kibana,都是开源软件,新增一个beats,(轻量级日志处理工具Agent) Elasticsearch是开源分布式搜索引擎,提供搜索.分析.存储数据三大功能,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等 Logstash 主要是用来日志的搜集.分析.过滤日志的工具,支持大量的数据获取方式.一般工作方

nginx awstats 安装配置和日志分析

1.Nginx安装目录:/usr/local/nginx Nginx配置文件存放目录:/usr/local/nginx/conf/nginx.conf Nginx日志目录:/usr/local/nginx/logs Awstats安装目录:/usr/local/awstats Awstats配置文件存放目录:/etc/awstats 日志切割脚本存放目录:/usr/local/nginx/nginx_log.sh 2.Nginx日志切割 修改nginx.conf配置文件,使AWSTATS支持分析

debian安装ELK日志服务器配置apt镜像源

网上有很多写Ubantua安装ELK日志服务的文档资料,但是很少有Debian安装的文档.因为前期对ELK接触很少,使用Debian安装总是在配置apt安装源的时候无法进行安装.经过扒翻资料,终于找到ELK官网给出的正解.如下: 1.安装java9 apt install openjdk-9-jdk 2.配置镜像源: 安装公共密钥: wget -qO  -  https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add

性能优化分析Spring Cloud ELK+kafka日志分析平台

一.概述 在笔者的上一篇博客介绍了Spring Cloud ELK+kafka日志分析平台的搭建,http://xuyangyang.club/articles/2018/05/24/1527176074152.html,但是笔者在测试环境中发现,在logstash采用了grok插件去处理日志埋点和解析的时候发现了高资源占用,在阿里云8核16G的服务器部署后,测试环境大概每秒不超过几百条的日志的解析下竟然CPU占用高达95%左右,笔者分析了其中的原因,首先由于几个服务的日志格式相关配置还没有落地

ELK集中日志管理系统安装部署

一.简介 1.ELK介绍 ELK Stack 是 Elasticsearch.Logstash.Kibana 三个开源软件的组合.在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故有此简称. ELK Stack 在最近两年迅速崛起,成为机器数据分析,或者说实时日志处理领域,开源界的第一选择. ELK由三个组建构成: Elasticsearch,负责数据的索引和存储 Logstash ,负责日志的采集和格式化 Kibana,负责前端统计的展示 大致的