有兴趣的同学可以看我写的:SpringCloud版本Hoxton SR5 --- 第一讲:认识 先认识认识SpringCloud的一些基本知识。
先讲一下原理:
首先在传统项目中,一台服务器看日志,还算方便。但是在分布式架构的系统中多台服务器配置调用,每台服务器都有日志,这时候要看日志,需要在每台服务器中查看,那是非常麻烦的。
所以出现了,分布式日志系统:
首先需要一个kafka,然后通过aop技术把所有日志,使用kafka把日志信息传输给 Logstash,Logstash作用就是:获取到日志数据,处理日志数据,然后将日志数据以json的格式异步的发送给Elasticsearch保存起来,最后再使用Kibana用UI界面的形式,展示出来。(可以分时查询,关键字查询等等,就完全不需要在linux的命令行使用命令来繁琐的查看日志了)
aop:aop技术就是可以统一的将日志信息,通过kafka异步的传输出去
kafka: 他的作用就是异步传输数据。
Logstash: 它主要做的就是获取本地日志/获取kafaka传递过来的日志,然后处理(过滤器:排序),再以json格式异步输出。
Elasticsearch:他的作用就是存储日志
Kibana:就是提供UI界面,方便查询日志。
接下来就是安装的事情:
1. 先安装Elasticsearch传送门 : docker之Elasticsearch镜像安装及运行
2. 安装zookeeper,kafka (docker安装非常快,网络教程也是一大堆,就不说了)
2. 在安装Logstash : docker安装命令: docker pull logstash 具体怎么安装就不说了。(最后面有原因)
3. 安装Kibana: docker安装命令:docker pull kibana 具体怎么安装就不说了。
注意事项:
生产环境中:
第一步: 安装Elasticsearch内存最好大一点。
第二步:安装完成之后,需要修改配置 (1. 指定读取日志文件的地址 2.过滤规则 3. 配置输出到Elasticsearch的连接地址和指定索引格式)
input {
# 从文件读取日志信息 输送到控制台
file {
path => "/usr/local/elasticsearch-6.4.3/logs/myes.log"
codec => "json" ## 以JSON格式读取日志
type => "elasticsearch"
start_position => "beginning"
}
}
# filter {
#
# }
output {
# 标准输出
# stdout {}
# 输出进行格式化,采用Ruby库来解析日志
stdout { codec => rubydebug }
elasticsearch {
hosts => ["192.168.212.190:9200"]
index => "es-%{+YYYY.MM.dd}"
}
}
最后说一下,我为什么不愿意写这个:分布式日志收集的安装了。
小公司,用不到。也不是说用不到吧,有更好的,阿里云提供的有服务,1年几千块钱,你想如果自己搭建,Elasticsearch集群光服务器购买一个月就是几千块钱吧,还不说Kafka集群、Zookkper集群。所以推荐使用阿里云提供的服务。如果是学习的话,阿里云也提供了30天的免费。
大公司呢,如果有自己服务器。他们有专门的运维人员,人家搭建的比你专业,说不定,他们还会自己实现一套符合自己公司要求的分布式日志管理系统。