【ELK】mac搭建ELK开发环境

目标

paste image
paste image

前言

在后台为微服务的情况下,生产环境必定存在多份日志存储在多个服务器中,那么如何通过一个平台集中查看服务器日志便成为一件十分重要的事情,本文就通过笔者在mac开发环境下搭建一套ELK环境,并配合微服务产生的日志用于输出到kibana平台展示给用户。

程序准备

elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.11.tar.gz

logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.6.11.tar.gz

kibana-centos版本
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.6.11-linux-x86_64.tar.gz

kibana-mac版本
https://artifacts.elastic.co/downloads/kibana/kibana-5.6.11-darwin-x86_64.tar.gz

搭建过程

1.logstash的搭建

1.1在logstash安装目录下新建conf文件夹,在里面新建配置文件java_log_stash.conf(表示收集的是java程序产生的日志,可随便起名),内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
input {
file {
type => "bxlt-ply"
#需要收集的日志文件
path => ["/Users/hdw/Documents/elk/log4j2/bxlt-ply-*.log"]
tags => ["bxlt-ply", "bxlt-ply-log"]
#
codec => multiline { #
pattern => "^%{TIMESTAMP_ISO8601}"
negate => true
what => "previous"
}
}
}
filter {
grok {
match => {
"message" => "%{TIMESTAMP_ISO8601:date} \[(?<thread_name>.+?)\] (?<log_level>\w+)\s*(?<content>.*)"
}
}
date {
match => ["timestamp", "dd/MMM/YYYY:HH:mm:ss Z"]
}
}
output {
#将日志根据类别映射到不同的处理方式中,此处通过type匹配后可直接放到es中
if[type] == "bxlt-ply" {
elasticsearch {
#embedded => false
#protocol => "http"
hosts => "localhost:9200"
#索引的额配置,将通过这个配置展示到kibana上
index => "bxlt-ply-%{+YYYY.MM.dd}"
}
}else if[type] == "其他类型" {
elasticsearch {
#embedded => false
#protocol => "http"
hosts => "localhost:9200"
index => "其他类型索引名字-%{+YYYY.MM.dd}"
}
}else {
#做其他处理
}
stdout{ #输出到标准输出,可以去掉
}
}

1.2启动logstash并查看日志是否成功启动

1
2
3
4
5
#以自定义配置文件启动logstash
nohup ./bin/logstash -f conf/java_log_stash.conf &

#查看启动日志输出是否成功
tail -f logs/logstash-plain.log

【Tip】

1
2
3
4
5
6
#查看logstash配置文件是否正确 -f参数
./bin/logstash -f conf/bxlt-file-logstash.conf
#查看端口号启动情况及PID
lsof -i:9600
#如果需要停止该端口kill掉该Pid即可
kill -9 'pid'


启动成功后查看log输出日志如下:
paste image
说明logstash已经准备要把自己收集到的日志输出给es,只是es还没启动。

2.ElasticSearch的搭建

2.1修改配置文件

vim config/elasticsearch.yml

把network.host字段给反注释掉,把地址改为0.0.0.0(官方并没明确说要去改这配置,默认配置应该就可以了,不过实测的时候发现如果不做这修改,elasticsearch访问不了)

1
2
3
4
5
6
7
8
9
10
11
12
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:
#
#http.port: 9200
#
# For more information, consult the network module documentation.
#

2.2后台启动es

1
nohup ./bin/elasticsearch &

2.3两种方式验证es是否成功启动

第一种:本地浏览器访问http://localhost:9200/

返回信息如下表示成功

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"name" : "kIrDvnk",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "a5lgu18GRIyJ8M2bYHkHGQ",
"version" : {
"number" : "5.6.11",
"build_hash" : "bc3eef4",
"build_date" : "2018-08-16T15:25:17.293Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
},
"tagline" : "You Know, for Search"
}

第二种:查看es启动日志

1
2
3
4
5
6
7
8
9
10
11
tail -f logs/elasticsearch.log
[2018-10-24T16:33:08,638][INFO ][o.e.p.PluginsService ] [kIrDvnk] no plugins loaded
[2018-10-24T16:33:10,177][INFO ][o.e.d.DiscoveryModule ] [kIrDvnk] using discovery type [zen]
[2018-10-24T16:33:10,676][INFO ][o.e.n.Node ] initialized
[2018-10-24T16:33:10,677][INFO ][o.e.n.Node ] [kIrDvnk] starting ...
[2018-10-24T16:33:10,846][INFO ][o.e.t.TransportService ] [kIrDvnk] publish_address {192.168.2.220:9300}, bound_addresses {[::]:9300}
[2018-10-24T16:33:10,855][INFO ][o.e.b.BootstrapChecks ] [kIrDvnk] bound or publishing to a non-loopback address, enforcing bootstrap checks
[2018-10-24T16:33:13,909][INFO ][o.e.c.s.ClusterService ] [kIrDvnk] new_master {kIrDvnk}{kIrDvnk8TwGmqYKsjCo-dA}{I_vTr40xR_WWbuUv8uW6lg}{192.168.2.220}{192.168.2.220:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)[, ]
[2018-10-24T16:33:13,927][INFO ][o.e.h.n.Netty4HttpServerTransport] [kIrDvnk] publish_address {192.168.2.220:9200}, bound_addresses {[::]:9200}
[2018-10-24T16:33:13,928][INFO ][o.e.n.Node ] [kIrDvnk] started
[2018-10-24T16:33:13,933][INFO ][o.e.g.GatewayService ] [kIrDvnk] recovered [0] indices into cluster_state

输出以上信息表示也启动成功
此时es中已经获取到了logstash收集的日志,那么就需要把收集到的日志输出到界面了,下面kibana就该登场了。

3.kibana搭建

3.1由于默认kibana访问es的地址就是es的默认配置,所以这一步直接启动kibana即可

1
nohup ./bin/kibana &

3.2验证kibana是否成功启动

http://localhost:5601
paste image
出现这个画面就表示已经配置成功了。

3.3收集es信息展示到kibana上

es与kibana之间是通过模式匹配来关联日志数据的,所以下面的内容就是有关于模式匹配的学习了。



下面把关联的内容进行截取展示,大家一看应该就明白了:
paste image
当成功匹配后点击下面create完成es与kibana的关联
### 3.4打开界面查看
paste image
该界面展示出来就说明我们已经成功把elk这条路走通了。剩下的就是关于elk内容的具体配置了,关于这部分内容后面的文章再慢慢介绍。

elk的搭建过程到此结束,后期涉及到多个服务的时候跟单机版的配置过程雷同,无非就是多开几个服务器端口,之间能够访问即可。


参考文献:
用ELK搭建简单的日志收集分析系统:https://blog.csdn.net/lzw_2006/article/details/51280058
-------------本文结束感谢您的阅读😜-------------

本文标题:【ELK】mac搭建ELK开发环境

文章作者:漫长岁月

发布时间:2018年10月24日 - 15:10

最后更新:2022年03月29日 - 11:03

原始链接:http://javahdw.top/2018/10/【ELK】mac搭建ELK开发环境/

许可协议: 平头哥原创博文 - 有问题请到留言区留言 - 转载请保留原文链接及作者,万分感谢🙏

0%