搭建ELK日志分析系统(三)-Logstash安装和使用

前言

本教程为什么第三节才说到Logstash?
因为本人在阅读其他网络上的相关资料的时候,很多第一篇都是先安装Logstash,最后运行输出elasticsearch没法看出效果,请看下一节之类!到了下一节又没有相关说明,直接又截图出效果,感觉让人懵逼!所以本教程特意把顺序调整了一下。

Logstash安装和使用

Logstash的独立性很强,它的用途就是一个内容的转存系统,通过灵活的插件可以做到很多种类数据的读取和很多种类数据的写入。

Logstash在ELK系统中处在哪个位置?请看下面两种部署方式:
最简单的部署方式:L-E-K


第二种方式:由于IO压力问题,我们可以在L-E之间添加一层redis辅助,减轻服务器的压力。


第三种方式:随着业务的增长,服务器部署集群,redis单点故障问题等等,上面的方案已满足不了我们的需求,这个时候我们可以使用Kafka来代替Redis,Kafka相关部署这里不详述,可查看相关资料。

安装Logstash

#下载
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.2.tar.gz
#解压到指定目录
tar -xzvf logstash-5.5.2.tar.gz -c /usr/local/
#最终结果/usr/local/logstash-5.5.2/

输入数据源
在bin目录新建配置文件std_std.conf

cd /usr/local/logstash-5.5.2/bin/
vi std_std.conf

配置内容

input {
    stdin{
    }
}

output {
    stdout{
    }
}

在bin目录执行命令:./logstash -f std_std.conf
然后输入 hello world

效果如下图:


nginx日志数据源
以上是以用户输入作为数据源
下面我们使用nginx的日志作为数据源
nginx站点创建本教程不作说明,不懂的同学可以先查看相关资料部署好nginx web站点

如日志内容:

192.168.1.131 - - [30/Aug/2017:17:32:04 +0800] "GET /index.html?a=aaaa HTTP/1.1" 200 230 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; LCTE)" "-"
192.168.1.131 - - [30/Aug/2017:17:32:15 +0800] "GET /index.html?appid=1001 HTTP/1.1" 200 230 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; LCTE)" "-"
192.168.1.131 - - [30/Aug/2017:17:32:22 +0800] "GET /index.html?appid=1001&platform=1 HTTP/1.1" 200 230 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; LCTE)" "-"
......

在bin目录新建配置文件file_std.conf
文件内容如下,path日志路径自行修改

input{
    file{
        path =>"/usr/local/openresty-1.11.2.5/nginx/logs/test.elk.access.log"
        start_position=>"beginning"
    }
}

filter{
    grok{
        match=>{
            "message"=>"%{IPV4:clientip} - - \[%{HTTPDATE:accessTime}\] \"%{DATA:method} %{DATA:requestUri} %{DATA:httpVersion}\" %{DATA:httpCode} %{DATA:size} \"%{DATA:httpReferer}\" \"%{DATA:useragent}\""
        }

        remove_field=>"message"
    }
    date{
        match=>["accessTime","dd/MMM/yyyy:HH:mm:ss Z"]
    }
}

output{
    stdout{
        codec=>rubydebug
    }
}

在bin目录执行命令:./logstash -f file_std.conf
就会看到文件中的内容被逐条的显示出来

Logstash默认提供了能分析包括java堆栈日志、apache日志在内的120种形式,可查看以下资料。
https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns
https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns

grok使用
%{匹配规则:输出key}
如上方的
%{IPV4:clientip}
最终匹配输出
clientip:109.12.24.188

更多使用方法可查看相关资料

输出到elasticsearch

在bin目录新建配置文件es_std.conf
文件内容如下:

input{
    file{
        path =>"/usr/local/openresty-1.11.2.5/nginx/logs/test.elk.access.log"
        start_position=>"beginning"
    }
}

filter{
    grok{
        match=>{
            "message"=>"%{DATA:clientIp} - - \[%{HTTPDATE:accessTime}\] \"%{DATA:method} %{DATA:requestPath} %{DATA:httpversion}\" %{DATA:retcode} %{DATA:size} \"%{DATA:fromHtml}\" \"%{DATA:useragent}\""
        }

        remove_field=>"message"
    }
    date{
        match=>["accessTime","dd/MMM/yyyy:HH:mm:ss Z"]
    }
}

output{
    elasticsearch {
        hosts => "192.168.1.138"
    }
    stdout{
        codec=>rubydebug
    }
}

首先我们运行elasticsearch (参考前两节内容)

su elk
cd /usr/local/elasticsearch-5.5.2
./bin/elasticsearch

确保elasticsearch已启动成功,再运行Logstash
在bin目录执行命令:./logstash -f es_std.conf

最后启动elasticsearch-head插件

cd /usr/local/elasticsearch-5.5.2/elasticsearch-head
grunt server

在浏览器中打开 http://192.168.1.138:9100/
可以看到效果:

这时去访问我们搭建好的nginx站点,如:
http://test.elk.com/index.html?appid=3010&platform=2&channel=10000

那么我们在http://192.168.1.138:9100/中可以实时看到效果(刷新页面)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容