前言:文本主要记录ELK搭建过程的主要步骤,使用组件:filebeat+logstash+elasticsearch+kibana。filebeat收集日志给到logstash(logstash也可以单独干这个活)elasticsearch可以说是个索引数据库也可以认为是搜索引擎,他主要负责数据的存储,这里就是日志信息了,kibana则是一个可视化的elasticsearch的操作工具。
一、组件安装
1.elasticsearch安装与配置
# 下载地址一:https://www.elastic.co/cn/downloads/elasticsearch # 下载地址二:https://mirrors.huaweicloud.com/elasticsearch/ # es与logstash都是java开发的需要以来jdk,此外注意jdk版本,es6以上应该都是至少需要jdk8及以上版本了 [root@localhost ~]# wget https://mirrors.huaweicloud.com/elasticsearch/7.8.0/elasticsearch-7.8.0-linux-x86_64.tar.gz # 下载完成后,解压到自己喜欢的随便路径即可 # 然后修改配置文件就行 config/elasticsearch.yml node.name: node-1 # 设置节点名 network.host: 0.0.0.0 # 允许外部 ip 访问 cluster.initial_master_nodes: ["node-1"] # 设置集群初始主节点 # 若是不想用root访问就自己建个用户吧,然后给个用户权限:chown -R 用户 /usr/local/elasticsearch # 启动 es nohup ./bin/elasticsearch.yml -d & # 验证 http://ip:9200
2.logstash安装与配置
# 下载地址一:https://mirrors.huaweicloud.com/logstash [root@localhost ~]# wget https://mirrors.huaweicloud.com/logstash/7.8.0/logstash-7.8.0.tar.gz # 解压到指定目录,logstash也需要依赖jdk,logstash的版本需要与es保持一致 # 修改配置文件 config/logstash.conf # 这里是使用filebeat收集数据,5044用于接收filebeat的数据,下面的output则是数据输出到es,index则是声明数据在es中的索引 input { beats { port => 5044 } } output { if [filetype] == "mdm-org-server" { # 输出es,这的filetype就是在filebeat那边新增的自定义字段名 elasticsearch { hosts => ["10.3.8.136:9200"] # 10.3.8.136 es的ip index => "mdm-org-server-%{+YYYY.MM.dd}" # 自定义es中的索引名 } } else if [filetype] == "mdm-project-server" { elasticsearch { hosts => ["10.3.8.136:9200"] index => "mdm-project-server-%{+YYYY.MM.dd}" } } } # 启动logstash nohup ./bin/logstash -f ./config/logstash-es.conf &
3.filebeat安装与配置
# filebeat不是java是go开发的,所以较java轻量级一些,无需依赖jdk # 下载地址一:https://www.elastic.co/cn/downloads/past-releases#filebeat # filebeat用于收集日志,下面是基本配置,logtype是自定义属性,用来区分不同服务,日志收集可用-来分组 filebeat: prospectors: - paths: - /apps/server-admin/mdm-servers/mdm-acceptor-server/logs/*.log input_type: log fields: logtype: mdm-acceptor-server - paths: - /apps/server-admin/mdm-servers/mdm-case-server/logs/*.log input_type: log fields: logtype: mdm-case-server # 启动filebeat,注意配置文件别错了,不然启动会失败 nohup ./filebeat -e -c filebeat.yml &
4.kibana安装与配置
# 下载地址一:https://mirrors.huaweicloud.com/kibana # 下载安装包 [root@localhost ~]# wget https://mirrors.huaweicloud.com/kibana/7.8.0/kibana-7.8.0-linux-x86_64.tar.gz # 修改配置文件,config/kibana.yml server.port: 5601 server.host: "0.0.0.0" # 服务器ip 本机 elasticsearch.hosts: ["http://192.2.1.112:9200"] # Elasticsearch 服务地址 i18n.locale: "zh-CN" # 中文 # 启动kibana nohup ./bin/kibana ./config/kibana.yml & # 验证 http://ip:5601 查看页面是否正常即可
如果按照上面的四部走过来基本不会又什么特殊问题,需要注意的是filebeat需要依赖logstash的端口,所以启动filebeat之前logstash必须启动,而启动logstash则需要先启动es,最后在启动kibana就对了,所以他们四个的正常顺序应该是:filebeat–>logstash–>es–>kibana
二、可能碰到的问题
1.filebeat与logstash重启数据收集失败问题
若是重启了logstash而没有重启可能会碰倒这个问题,建议重启logstash以后再重启一次filebeat即可。
2.如何实现分布式日志的收集
这个在上面的配置中其实已经做了,使用filebeat收集日志时支持多文件的同时收集,只需要像笔者那这样分割开多个配置即可,然后在logstash中区分收集到的日志把日志写到不同的索引里即可。那要是一个服务多个节点呢?若是一个服务需要收集两个节点的日志的话,则只需要将两个节点都配置上filebeat即可,且保持配置一样就行,就是这么简单。
3.如是有其他问题
笔者搭建时也有参考过下面这位道友的文章,其他问题建议参考这位道友的文章
建议参考:https://blog.csdn.net/sinat_27245917/article/details/108123826