在Mac平台上安装配置ELK时的一些总结

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 一、前言 大数据处理是流行的一些表现,在不断壮大的数据处理中,怎么样处理数据才是我们继续做好开发的正道。

一、前言

大数据处理是流行的一些表现,在不断壮大的数据处理中,怎么样处理数据才是我们继续做好开发的正道。本文章来自网络,不敢原创,但是也有很大借鉴。

二、MAC安装ELK


首先是安装elasticsearch,这个很简单:

brew install elasticsearch

但是这里就遇到了问题,我的java是1.6的,而elasticsearch需要1.7以下版本,所以还需要安装java 1.7而要安装java 1.7,用简单的brew又不行,还需要先安装cask,所以最后的步骤就变成了这样:

brew install brew-cask
brew update
brew cask install caskroom/versions/java7
java -version

可以看到java版本已经是1.7了。接下来:

brew install elasticsearch
elasticsearch --version

证明elasticsearch已经安装好了。以后要启动或者停止elasticsearch服务就执行以下命令:

brew services start elasticsearch
brew services stop elasticsearch

下面安装logstash:

brew install logstash
logstash --version

logstash已经安装好了。然后安装kibana,kibana的安装不用brew,直接下载解压之后,进到解压目录里:

./kibana

接下来是配置logstash,在这里我遇到了大麻烦。从头说起,先要建立一个logstash的conf文件,以便于后期调试:

mkdir logstash
cd logstash

生成一个logstash.conf文件,在这里我们准备处理apache的log

input {
    file {
        path => "/private/var/log/apache2/www.myserver.com-access_log"
        start_position => beginning
        ignore_older => 0
        sincedb_path => "/dev/null"
    }
}
filter {
    grok {
        match => { "message" => "%{IPORHOST:clientip} - %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-)"}
    }
    date {
        match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss +0800" ]
    }
}
output {
    elasticsearch {}
    stdout {}
}

为了这个配置文件,费了很大精力,网上很多教程都和我的实际情况不相符合。关键点说明如下:
start_position => beginning告诉logstash从我的log文件的头部开始往下找,不要从半中间开始。
ignore_older => 0告诉logstash不要管我的log有多古老,一律处理,否则logstash缺省会从今天开始,就不管老日志了。
sincedb_path => "/dev/null"这句话也很关键,特别是当你需要反复调试的时候,因为logstash会记住它上次处理到哪儿了,如果没有这句话的话,你再想处理同一个log文件就麻烦了,logstash会拒绝处理。现在有了这句话,就是强迫logstash忘记它上次处理的结果,从头再开始处理一遍。
filter下面的grok里面的match,网上教程一般是这么写的:

match => { "message" => "%{COMBINEDAPACHELOG}" }

但是当我这么写的时候,总是处理不了我的log,我的log其实就长这个样子:

127.0.0.1 - - [02/May/2016:22:11:28 +0800] "GET /assets/aa927304/css/font-awesome.min.css HTTP/1.1" 200 27466

查源代码,官方是这么写的:

COMMONAPACHELOG %{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-)
COMBINEDAPACHELOG %{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}

后面的combined引用前面的common,而问题就出在这个USER:ident上。
我在https://grokdebug.herokuapp.com/反复验证,最后发现只要把这个USER:ident改成-就行了,所以就有了我上面的写法。
接下来用了一个date filter,这是因为如果不用这个date filter的话,它会把处理log的时间认为是用户访问网页的时间来产生表格,这样在kibana里看上去怪怪的,所以加这么一个filter,但就是加这么一个简单的filter,也出现了问题,处理失败,因为网上的教程里一般都是这么写的:

date {
    match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
}

区别就在最后一个Z上,我的时区字符串是+0800,怎么也匹配不上这个Z,索性一怒之下直接用+0800代替,也就过关了。
过程中不停地访问如下网址验证elasticsearch的结果:
http://localhost:9200/logstas...
注意URL中那个时间,一开始的时候我们就用处理日志的时间访问就可以,但当加上date filter后就不一样了,如果你还用当前日期的话,会一无所得,改成log里的时间才会看到结果,因为index日期变了。
然后就是你需要一遍一遍地清空elasticsearch里的数据,进行调试:

curl -XDELETE 'http://localhost:9200/_all'

清空完了以后你再执行logstash,就把新数据又灌进去了:

logstash agent -f ~/logstash/logstash.conf

最后,通过kibana窗口观察你的结果:
http://localhost:5601
一开始是在setting页面,要你指定访问的index,这里就用缺省的logstash-*就行了,然后就是页面右上角有个时间限制,把它改成Year to date,否则有可能什么数据也看不到。




相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
消息中间件 监控 数据可视化
一口气完成ELK 日志平台的搭建,我感觉我又行了!
最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。
|
4月前
|
Linux Shell 开发工具
Git 安装和配置教程:Windows - Mac - Linux 三平台详细图文教程,带你一次性搞 Git 环境
Git是一款免费、开源的分布式版本控制系统,广泛应用于软件开发领域。随着开源和云计算的发展,Git已经成为了开发者必备的工具之一。本文将为大家介绍Git在Windows、Mac和Linux三个平台上的安装和配置方法,带你一次性搞定Git环境
1570 0
|
5月前
|
数据安全/隐私保护
Mac平台出现brew command not found问题解决方法
Mac平台出现brew command not found问题解决方法
146 0
|
8月前
|
JSON 搜索推荐 BI
快速用ELK搭建日志收集平台
快速用ELK搭建日志收集平台
110 0
|
8月前
|
存储 监控 数据可视化
手把手教你如何快速搭建 ELK 实时日志分析平台
本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。
|
8月前
|
Linux 数据处理 开发者
R语言如何快速安装R包?常见方法与报错解决方案汇总,适用于Windows、Mac、Linux多平台
R语言如何快速安装R包?常见方法与报错解决方案汇总,适用于Windows、Mac、Linux多平台
|
敏捷开发 Ubuntu Unix
一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境
时光荏苒,过隙白驹,进入2023年,著名敏捷开发语言Python也放出了3.10最终版,本次我们来展示一下在不同的系统和平台中,高效部署Python3.10开发环境,这里我们并不依赖其他的三方软件,只通过Python官方的安装包进行配置,编辑器我们依然使用微软开源的Vscode,争取在一分钟以内就可以在一台干净的开发机上部署好环境,省去一些不必要的步骤。
一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境
|
存储 NoSQL 数据可视化
Mac OSX 平台安装 MongoDB
Mac OSX 平台安装 MongoDB
113 0
Mac OSX 平台安装 MongoDB
|
文字识别 Windows
Windows Mac 等不同平台2022年最佳PDF工具
如果你是PDF转换软件的新手,你最好确定一个很棒的PDF转换器应该处理什么。因此,在下文中,我们列出了一些重要功能以供参考:
144 0
|
消息中间件 监控 NoSQL
ELK搭建(十三):搭建Nginx资源访问率、丢包率、读写率等运行性能监控平台
Nginx是一款轻量级、高性能的流量分发和反向代理的web服务。随着市场业务量的增加,普通的web容器,如tomcat的并发量已经远不能满足我们的业务量,同时随着分布式架构的普及,我们需要一款反向代理服务的支持,于是Nginx应运而生。 Nginx已经在大多数业务中普遍使用,因此针对Nginx的性能监控十分必要,这样我们才能实时掌握服务器请求情况和运行效率 所以今天,我们的目标就是搭建一个Nginx运行性能监控平台
396 0
ELK搭建(十三):搭建Nginx资源访问率、丢包率、读写率等运行性能监控平台