ELK日志收集原理+es集群+elk搭建+本地目录文件读取,搭建分布式日志收集系统

ELK分布式日志收集系统介绍

1.ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

2.Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

3.Kibana是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

为什么要使用ELK

在传统项目中,如果在生产环境上,将项目部署在多台服务器上进行集群,如果生产环境需要通过日志定位到BUG的话,需要在每台服务器节点上使用传统的命令方式查询,这样的查询是非常低效,且非常考验人的忍耐力的,而ELK恰恰就帮助我们解决这样的问题

ELK的工作原理

1.在集群环境中,每一个实例节点都进行安装Logstash插件
2.每个服务器节点,都会将自身的本地日志文件输入到Logstash中
3.Logstash获取日志文件后格式化为json格式,根据每天创建不同的索引,输出到ES服务中进行存放
4.以图形化界面进行展示,搜索日志

Logstash介绍

Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
核心流程:Logstash事件处理有三个阶段:inputs → filters → outputs。是一个接收,处理,转发日志的工具。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。

Logstash工作原理

简单来说
1.本地数据文件输入到logstash中
2.logstash过滤些不要的数据,然后将数据转成指定的格式
3.输出到指定的数据源中

前提准备:

1.ES+kibana+logstash 一台虚拟机配置运行内存3G,由于本人电脑资源有限开了2台
共6个G

一、安装jdk

1.安装之前先检查一下系统有没有自带open-jdk

命令:

rpm -qa |grep java
rpm -qa |grep jdk
rpm -qa |grep gcj

如果没有输入信息表示没有安装。
如果安装可以使用rpm -qa | grep java | xargs rpm -e --nodeps 批量卸载所有带有Java的文件 这句命令的关键字是java

2.首先检索包含java的列表

yum list java*

3.检索1.8的列表

yum list java-1.8*   

4.安装1.8.0的所有文件

yum install java-1.8.0-openjdk* -y

5.使用命令检查是否安装成功

java -version

二、集群环境下基于docker安装es和kibana

启动两个虚拟机 分别在不同的虚拟机启动es容器和kibana

启动虚拟机1,es名称为:es1

下载es 和 kibana
docker pull elasticsearch:6.7.2
docker pull kibana:6.7.2

运行容器
docker run -it  --name es1 -d -p 9200:9200 -p 9300:9300 -p 5601:5601 elasticsearch:6.7.2
docker run -it -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 --name kibana --network=container:es1 kibana:6.7.2

启动虚拟机2,es名称为:es2

下载es 和 kibana
docker pull elasticsearch:6.7.2
docker pull kibana:6.7.2

运行容器
docker run -it  --name es2 -d -p 9200:9200 -p 9300:9300 -p 5601:5601 elasticsearch:6.7.2
docker run -it -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 --name kibana --network=container:es2 kibana:6.7.2

如果在启动的ES过程中,报如下错误

解决方案:
分配给ES的内存太小了
1.进入etc目录,编辑sysctl.conf文件:

vi /etc/sysctl.conf 

2.添加配置:

vm.max_map_count=262144 或者 655360

3.执行:

sysctl -p

重启服务器

三、配置ES集群

进入容器修改集群配置服务器1

#进入容器
docker exec -it 容器ID /bin/bash

#编辑配置文件
vi /usr/share/elasticsearch/config/elasticsearch.yml

#注释掉原有的配置  添加配置
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.137.8
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true 
node.data: true  
discovery.zen.ping.unicast.hosts: ["192.168.137.8:9300","192.168.137.9:9300"]
discovery.zen.minimum_master_nodes: 2

#保存退出

#退出容器
exit

进入容器修改集群配置服务器2

#进入容器
docker exec -it 容器ID /bin/bash

#编辑配置文件
vi /usr/share/elasticsearch/config/elasticsearch.yml

#注释掉原有的配置  添加配置
cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.137.9
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true 
node.data: true  
discovery.zen.ping.unicast.hosts: ["192.168.137.8:9300","192.168.137.9:9300"]
discovery.zen.minimum_master_nodes: 2

#保存退出

#退出容器
exit

最后重启两个服务器docker里面的es,让配置进行生效

docker restart 容器id

网页访问集群的两台es,可以发现es配置已经生效了

但是这样还并不能确定是否成功集群,访问如下ES集群其中任何IP地址即可

http://192.168.137.8:9200/_cat/nodes?pretty

如下图,就代表es集群成功搭建


四、下载logstash源码包

需要注意:每台服务器上都需要安装logstash,如下面操作,我这里只示例一个
因为集群下每个服务器都会有日志,所以每个服务都需要安装logstash去收集日志发到es中

下载源码包
官方地址
https://www.elastic.co/cn/downloads/logstash

国内加速下载网址
https://www.newbe.pro/Mirrors/Mirrors-Logstash/

下载地址
wget https://mirrors.huaweicloud.com/logstash/6.7.2/logstash-6.7.2.zip

下载zip命令解压
yum -y install zip

解压
unzip logstash-6.7.2.zip
修改配置文件

进入到logstash/config目录

#新建sunny_log.conf文件
vim sunny_log.conf

#添加配置文件
input {
    # 从文件读取日志信息 输送到控制台
    file {
        path => "/usr/local/software/my/logs/eureka_all_2020-06-30_0.log"
        codec => "json" ## 以JSON格式读取日志
        type => "elasticsearch"
        start_position => "beginning"
    }
}

# filter {
#
# }

output {
    # 标准输出
    # stdout {}
    # 输出进行格式化,采用Ruby库来解析日志
     stdout { codec => rubydebug }
         elasticsearch {
        hosts => ["192.168.137.8:9200","192.168.137.9:9200"]
        index => "es-%{+YYYY.MM.dd}"
    }
}

#保存

添加完配置后,进入logstash/bin目录下,启动logstash

 ./logstash -f ../config/sunny_log.conf

启动成功


五、通过kibana查看日志

以上的配置是读取一个日志文件,那如果需要读取多个日志文件该怎么办呢?
很简单,我们稍微改动配置文件即可
读取logs目录下,所有以log结尾的文件,都输出到es中

可能又会有人疑惑,我能否同步多个目录呢
假如logs下有两个目录,每个目录不同的日志文件
/:代表logs下所有目录都匹配
/
/*.log:代表logs下匹配所有目录下的目录里面的log文件

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