Elastic Stack(ELK)日志系统简介及搭建

ELK系列文章:

  1. Elastic Stack(ELK)日志系统简介及搭建
  2. Elastic Stack(ELK)日志系统后续使用及问题解决
  3. kibana7.2添加登录及权限
  4. kibana监控logstash

一、需求:

在我们的项目中有日志是一个必不可少的东西,但是日志的检索是一个很麻烦的事情,如每天一个日志,要找到问题就得一个一个找,并不能做到检索功能,这还算好的,如果是分布式的,每个机器都得找一遍,这种效率太低,当然可以把日志收集到一个文件中,多个机器每天的日志可以收集到一块,如果把所有的日志收集一块显然不现实;所以出现了很多的日志检索方式,这篇介绍的是Elastic Stack(ELK)。

二、简介:

1、ELK Stack:ELK是三个开源软件的缩写,分别为:Elasticsearch 、 Logstash以及Kibana ,它们都是开源软件,ELK是5.0版本前的统称;这是一套统一的日志收集分析系统。

2、Elastic Stack:是ELK5.0之后加入了Beats 套件后的新称呼。

3、fielbeat是一个轻量级日志收集工具,类似于Linux系统中tail -f监控文件变化的功能;其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比 Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。

4、Logstash是一款开源的日志收集处理框架,负责数据的采集和格式化;Logstash处理数据主要分为三个阶段,inputs、filters、outputs,其中各个阶段,官方提供了丰富的插件,可以对数据进行处理。

5、Elasticsearch是一个开源的分布式搜索引擎,用于数据的快速索引存储。

6、Kibana负责提供web展示功能;可以帮助汇总、分析和搜索重要数据日志。

7、Beats包含六种工具:

                 Packetbeat: 网络数据(收集网络流量数据)
                 Metricbeat: 指标 (收集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
                 Filebeat: 日志文件(收集文件数据)
                 Winlogbeat: windows事件日志(收集 Windows 事件日志数据)
                 Auditbeat:审计数据 (收集审计日志)
                 Heartbeat:运行时间监控 (收集系统运行时的数据)

三、采集流程:

beat采集–>Elasticsearch–>Kibana
           beat采集–>Logstash–>Elasticsearch–>Kibana

  1. filebeat从不同服务端收集日志转发给logstash处理。
  2. logstash将filebeat收集的日志进行格式化处理。
  3. 然后通过elasticsearch对格式化后的数据进行索引和存储,最后交由kibana展示。
  1. 将日志进行集中化管理(filebeat)
  2. 将日志格式化(logstash)
  3. 对格式化后的数据进行索引和存储(elasticsearch)
  4. 前端数据的展示(kibana/grafana)

Elastic Stack(ELK)日志系统简介及搭建_第1张图片

四、准备工作及官网:

  1. ELK官网:https://www.elastic.co/cn/products/
  2. ELK下载地址:https://www.elastic.co/cn/products/log-monitoring
  3. ELK中文指南:https://legacy.gitbook.com/book/chenryn/elk-stack-guide-cn/details
  4. 中文社区:https://elasticsearch.cn/
  5. 官方安装文档:https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html

    ELK要求必须java1.8以上环境,所以先具备java1.8环境;4个服务最好使用相同版本;官网最新为7.2.0,下载Linux包;本人准备把Logstash、Elasticsearch、Kibana、放在一台机器;FileBeat放在服务所在机器。

五、安装Elasticsearch:

1、新建好elk用户,然后解压Elasticsearch的压缩包

tar -vxf elasticsearch-7.2.0.tar.gz   

 2、配置,打开/config/elasticsearch.yml

#ip
network.host: ***.***.*.**
#端口
http.port: 9200
#主要用于集群配置,可以先放开,不打开会报错,后边具体说;ES名称,多台服务器配置名称不可相同
node.name: node-1
cluster.initial_master_nodes: ["node-1"]

            3、启动,进入到/bin/   ./elasticsearch -d或者./elasticsearch &

 4、访问http://ip:9200,有数据则成功

            5、报错:

  • max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
#修改下面的文件  里面是一些内核参数
vi /etc/sysctl.conf 

#添加以下配置  
vm.max_map_count=655360

保存然后

sysctl -p
#-p   从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

  • bootstrap checks failed max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
vi /etc/security/limits.conf
#添加如下信息

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
  • max number of threads [1024] for user [es] likely too low, increase to at least [2048]
vi /etc/security/limits.d/90-nproc.conf
#添加如下信息

* soft nproc 2048
  • system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
elasticsearch.yml文件


bootstrap.memory_lock: false
bootstrap.system_call_filter: false
  • the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
elasticsearch.yml文件

node.name: node-1 前面的#打开

cluster.initial_master_nodes: ["node-1"] 

六、安装kibana:

1、解压包

tar -vxf kibana-7.2.0.tar.gz   

2、进入/config,修改kibana.yml

#端口
server.port: 5601

#ip
server.host: "198.218.*.**"

#elasticsearch的服务,可以配置多个
elasticsearch.hosts: ["http://198.218.6.12:9200"]

#日志输出
logging.dest: /home/elk/kibana/kibanalog/kibana.log

3、启动,进入到/bin目录,./kibana &

4、访问http://ip:5601,如果连接elasticsearch出错,会在页面报连接elasticsearch集群无法连接

5、设置kibana;Managementc菜单,进入Advanced Settings目录,修改Date format更改时间显示格式为yyyy-MM-dd HH:mm:ss:SSS,避免数据导入后显示的时间字段数据和ES存储数据不相同;进入Monitoring菜单添加监控服务,监控运行健康状态。

七、安装logstash:

1、解压包

tar –xvf logstash-7.2.0.tar.gz

2、配置;进入/config,修改logstash.yml

#ip
http.host: "198.218.*.*"

#端口,默认9600
http.port: 9600-9700

修改logstash-sample.conf 

input {
  #监测beats通过5044传输的数据
  beats {
    port => 5044
  }
}

output {
  elasticsearch {

    #es的服务
    hosts => ["http://198.218.*.*:9200"]

    #主键
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

3、启动,进入/bin,./logstash -f /home/elk/logstash/logstash-7.2.0/config/logstash-sample.conf &

日志输出到logs目录的logstash-plain.log文件

4、访问,http://ip:9600;出现数据则成功

八、安装filebeat:

1、解压包

tar -vxf filebeat-7.2.0.tar.gz

2、配置;进入/config,修改filebeat.yml

filebeat.inputs:

#输入格式为log
- type: log

#此处一定设置true,否则日志采集不生效
    enabled: true

#日志路径
    paths:
        - /home/erp/erp-interface-logs/*.log

#输出到logstash
output.logstash:
    hosts: ["198.218.*.*:5044"]

3、启动,进入/bin, ./filebeat -c filebeat.yml &   查看是否启动成功,查看进程或者查看日志即可

九、注意及结束:

  • 相比于向 elasticsearch 输出数据,个人更推荐向 logstash 输出数据。 因为 logstash 和 filebeat 一起工作时,如果 logstash 忙于处理数据,会通知 FileBeat 放慢读取速度。一旦拥塞得到解决,FileBeat 将恢复到原来的速度并继续传播。这样,可以减少管道超负荷的情况。
  • Filebeat 有两个主要组件:harvester:负责读取一个文件的内容。它会逐行读取文件内容,并将内容发送到输出目的地。prospector:负责管理 harvester 并找到所有需要读取的文件源。比如类型是日志,prospector 就会遍历制定路径下的所有匹配要求的文件。
  • 对于所有服务的停止,就是直接杀进程,找不到进程可以使用fuser -n tcp 端口,如fuser -n tcp 5601,然后杀进程即可
  • 参考文章:

安装:https://blog.csdn.net/xb_workspace/article/details/85165070

           https://blog.csdn.net/weixin_43972701/article/details/85161983

错误:https://blog.csdn.net/Dooonald/article/details/87931435

相关:https://mp.weixin.qq.com/s/YyFrqKp9VmKA-_247UVKKw

你可能感兴趣的:(项目工具及中间件,ELK,Elastic,Stack,Elastic,Stack7.2.0)