一、前言

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

二、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,否则有可能什么数据也看不到。

在Mac平台上安装配置ELK时的一些总结的更多相关文章

  1. 一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_200 时光荏苒,过隙白驹,即将进入2022年,著名敏捷开发语言Python也放出了3.10最终版,本次我们来展示一下在不同的系统和 ...

  2. 如何在Windows平台下安装配置Memcached

    Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一 ...

  3. Mac(Linux)上安装memcached步骤

    Mac上安装memcached类似于在Linux平台上安装memcached. 主要需要做两块: 一.安装libevent库: 二.安装memcached; 一.安装libevent库 libeven ...

  4. caffe学习(1):多平台下安装配置caffe

    如何在 centos 7.3 上安装 caffe 深度学习工具   有好多朋友在安装 caffe 时遇到不少问题.(看文章的朋友希望关心一下我的创业项目趣智思成) 今天测试并整理一下安装过程.我是在阿 ...

  5. linux上安装配置samba服务器

    linux上安装配置samba服务器 在linux上安装配置samba服务器 在这给大家介绍一个不错的家伙,samba服务.如果您正在犯愁,如何在Windows和Linux之间实现资源共享,就请看看这 ...

  6. 如何在Ubuntu 16.04上安装配置Redis

    如何在Ubuntu 16.04上安装配置Redis Redis是一个内存中的键值存储,以其灵活性,性能和广泛的语言支持而闻名.在本指南中,我们将演示如何在Ubuntu 16.04服务器上安装和配置Re ...

  7. Windows 7上安装配置TensorFlow-GPU运算环境

    Windows 7上安装配置TensorFlow-GPU运算环境 1. 概述 在深度学习实践中,对于简单的模型和相对较小的数据集,我们可以使用CPU完成建模过程.例如在MNIST数据集上进行手写数字识 ...

  8. ubuntu16.04上安装配置DHCP服务的详细过程

    DHCP服务器是为客户端机器分配IP地址的,所有分配的IP地址都保存在DHCP服务器的数据库中.为了在子网中实现DHCP分配IP地址,需要在目标主机上安装配置DHCP服务 1. 安装DHCP服务 安装 ...

  9. 在Centos 7上安装配置 Apche Kafka 分布式消息系统集群

    Apache Kafka是一种颇受欢迎的分布式消息代理系统,旨在有效地处理大量的实时数据.Kafka集群不仅具有高度可扩展性和容错性,而且与其他消息代理(如ActiveMQ和RabbitMQ)相比,还 ...

随机推荐

  1. Jnekins+Gitlab代码提交全程配置

    实验环境: 测试机:192.168.2.156 Jenkins:192.168.2.157 Gitlab:192.168.2.158 温馨提示:如果不知道,Jenkins和Gitlab安装过程~可参考 ...

  2. 伪分布式hbase数据迁移汇总

    https://www.jianshu.com/p/990bb550be3b hbase0.94.11(hadoop为1.1.2,此电脑ip为172.19.32.128)向hbase1.1.2 (ha ...

  3. Codeforces 873E Awards For Contestants ST表

    原文链接https://www.cnblogs.com/zhouzhendong/p/9255885.html 题目传送门 - CF873E 题意 现在要给 $n(n\leq 3000)$ 个学生颁奖 ...

  4. day 58 bootstrap part2

    bootstrap组件的官网, https://v3.bootcss.com/components/#page-header 在bootstrap里面出了HTML和css样式之外还有很多的辅助工具,我 ...

  5. Go语言为何说它优雅?-- Golang中的几个常用初始化设计

    对象池化设计: 将池对象通过Channel方式进行借出与还入,利用Go本身的特性还能实现更多限定需求.比如利用select的分支可以进行优雅的限流.超时熔断等操作.   思路:将需要池化的对象通过Ch ...

  6. xml模块、项目开发过程

    一.XML模块 xml指的是可扩展标记语言,是一种定义电子文档结构和描述的语言,可以用来标记数据.定义数据类型. 什么时候用xml? 当需要自定义文档结构时,使用xml.在java中经常会使用xml来 ...

  7. 用户体验—微软Edge浏览器

    我现在使用的浏览器是win10自带的Edge浏览器 用户界面: 首先整体界面的话是清晰,一目了然,而且记住用户选择: 1.微软必应搜索的主题分类明确,查询简洁方便.查询语句简单: 2 .信息覆盖程度非 ...

  8. AE缺失Form Trapcode Form

    缺失Form 下载链接: trapcode套装插件2017下载_Trapcode系列十款插件汉化版[支持AE CC 64位] - 迷你下载 下载Trapcode就可以了,应该是TC里的 去新CG下插件 ...

  9. Java并发程序设计(二)Java并行程序基础

    Java并行程序基础 一.线程的生命周期 其中blocked和waiting的区别: 作者:赵老师链接:https://www.zhihu.com/question/27654579/answer/1 ...

  10. 最近在学习python,做了一道人机大战的题目,分享一下,虽然可能有些麻烦,但是每个人思维是不同的。

    #题目如下:1:人和机器进行猜拳游戏写成一个类,首先选择角色:1 曹操 2张飞 3 刘备,然后选择的角色进行猜拳:1剪刀 2石头 3布 玩家输入一个1-3的数字 : 1 import random c ...