侧边栏壁纸
博主头像
zyixin

当你觉得为时已晚的时候,恰恰是最早的时候

  • 累计撰写 64 篇文章
  • 累计创建 0 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

搭建ELK日志分析平台

zyixin
2022-04-01 / 0 评论 / 2 点赞 / 1,962 阅读 / 5,789 字
温馨提示:
本文最后更新于 2022-04-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一. ELK简介

ELK就是一款非常优秀的、开源的、用于搭建实时日志分析平台的组件。ELK是Elasticsearch、Logstash和Kiabana这3款开源框架首字母的缩写。通过这三个组件,构建一个统一的日志管理系统,用来收集分布式部署系统中分散在不同设备上的日志,方便后续进行日志分析。
  其中,Elasticsearch是一个实时的分布式搜索和分析引擎,建立在全文搜索引擎Apache Lucene基础之上,使用Java语言编写,具有分布式、高可用性、易扩展、具有副本和索引自动分片功能、提供基于HTTP协议以JSON为数据交互格式的REST风格API、多数据源、实时分析存储等特点。
  Logstach主要用于对日志进行收集、过滤,对数据进行格式化处理,并将所收集的日志传输到相关系统进行存储。Logstash是用Ruby语言开发的,由数据输入端、过滤器和数据输出端3部分组成。其中数据输入端可以从数据源采集数据,过滤器是数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式;数据输出端是将Logstash收集的数据经由过滤器处理后输出到其他系统,Kafka、HDFS、Elasticsearch等。
  Kibana是一款针对Elasticsearch开源分析及可视化平台,使用node.js开发,可用来搜索,展示存储在Elasticsearch中的数据。同时提供了丰富的图表模板,只需通过简单的配置就可以方便地进行高级数据分析和绘制各种图表。
  其实,在实际的ELK系统中,还需要配置一个日志收集器,比如FileBeats等。安装在每台需要收集日志的服务器上,将日志发送给Logstash进行处理,所以Beats是一个“搬运工”,将你的日志搬运到日志收集服务器上。此次实验暂时先不考虑这类组件。

二. 搭建ELK

1 配置JDK环境

1.1 新建用户elk,上传jdk软件包并解压

[root@ecs-elk ~]# useradd elk
[elk@ecs-elk ~]# su - elk
[elk@ecs-elk ~]# tar -zxvf jdk-8u144-linux-x64.tar.gz
[elk@ecs-elk ~]# vim .bash_profile
export JAVA_HOME=/home/elk/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre/
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
[elk@ecs-elk ~]# source .bash_profile

2 Elasticsearch安装

2.1 下载Elasticsearch,命令如下:

[elk@ecs-elk ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.tar.gz

2.2 解压软件包,并修改配置文件

[elk@ecs-elk ~]# tar -zxvf elasticsearch-6.3.1.tar.gz

添加如下配置
[elk@ecs-elk ~]# vim elasticsearch-6.3.1/config/elasticsearch.yml
network.host: 192.168.0.101
http.port: 9200

2.3 启动elasticsearch的用户

(elasticsearch不能够使用root用户启动)

[elk@ecs-elk ~]# cd elasticsearch-6.3.1/bin/
[elk@ecs-elk bin]# ./elasticsearch
或者
[elk@ecs-elk bin]# ./elasticsearch -d

bin/elasticsearch -d 后台运行,避免关掉客户端就会停掉ES。但是这样就不会打印日志,建议在正式环境使用。

!!! 此步可能会启动失败,查看日志找到具体问题

[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
编辑 /etc/security/limits.conf,追加以下内容;
* soft nofile 65536
* hard nofile 65536
此文件修改后需要重新登录用户,才会生效

[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
编辑 /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
保存后,执行:
sysctl -p

2.4 验证

访问http://192.168.0.1:9200/,出现如下界面,说明启动成功。
es验证

3 Kibana 安装

3.1 下载Kibana ,命令如下:

[elk@ecs-elk ~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.1-linux-x86_64.tar.gz

3.2 解压软件包,并修改配置文件

[elk@ecs-elk ~]# tar -zxvf kibana-6.3.1-linux-x86_64.tar.gz

修改配置文件,添加如下配置
[elk@ecs-elk ~]# vim kibana-6.3.1-linux-x86_64/config/kibana.yml
# Kibana 端口
server.port: 5601
# Kibana ip
server.host: "192.168.0.101"
# elasticsearch  地址
elasticsearch.url: "http://192.168.0.101:9200"

3.3 启动

[elk@ecs-elk ~]# cd kibana-6.3.1-linux-x86_64/bin/
[elk@ecs-elk bin]# ./kibana
或者后台运行
[elk@ecs-elk bin]# ./kibana &

** !此步可能出现该错误**

报错:[warning][security] Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml
配置文件增加如下参数:
xpack.security.encryptionKey: "122333444455555666666777777788888888"
xpack.reporting.encryptionKey: "122333444455555666666777777788888888"

3.4 验证

访问http://192.168.0.101:5601,出现如下界面,说明成功。
kibana验证-1024x468

4 Logstash 安装

4.1 下载Logstash,命令如下:

[elk@ecs-elk ~]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.3.1.tar.gz

4.2 解压软件包

[elk@ecs-elk ~]# tar -zxvf logstash-6.3.1.tar.gz

4.3 验证

在/home/elk/logstash-6.3.1/bin目录下,执行bin/logstash -e ‘input { stdin { } } output { stdout {} }’,然后在输入hello,出现如下界面说明,logstash可以正常使用。

[elk@ecs-elk bin]# ./logstash -e 'input { stdin { } } output { stdout {} }'
Sending Logstash s logs to /home/elk/logstash-6.3.1/logs which is now configured via log4j2.properties
[2021-06-08T11:00:53,561][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/home/elk/logstash-6.3.1/data/queue"}
[2021-06-08T11:00:53,573][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.dead_letter_queue", :path=>"/home/elk/logstash-6.3.1/data/dead_letter_queue"}
[2021-06-08T11:00:54,027][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2021-06-08T11:00:54,061][INFO ][logstash.agent           ] No persistent UUID file found. Generating new UUID {:uuid=>"5ba819bc-7573-4f97-b1b3-29ef7ebe764e", :path=>"/home/elk/logstash-6.3.1/data/uuid"}
[2021-06-08T11:00:54,747][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=>"6.3.1"}
[2021-06-08T11:00:57,531][INFO ][logstash.pipeline        ] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>2, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50}
[2021-06-08T11:00:57,790][INFO ][logstash.pipeline        ] Pipeline started successfully {:pipeline_id=>"main", :thread=>"#<Thread:0x5e9d4fd0 run>"}
The stdin plugin is now waiting for input:
[2021-06-08T11:00:58,122][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
{
    "@timestamp" => 2021-06-08T03:00:58.183Z,
       "message" => "hello",
          "host" => "ecs-elk",
      "@version" => "1"
}
[2021-06-08T11:00:58,901][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

至此,ELK三个组件安装完成。

三. 示例

通过上述步骤,已经完成了三个组件的安装工作,下面来实现读取nginx访问日志,并写入到ES中的例子,保证存在/usr/local/nginx/logs/access.log访问日志(目录可以随意),用来作为logstash采集日志的来源。

1、配置logstash采集处理日志的配置

在/home/elk/logstash-6.3.1目录,创建job目录(目录自定义,可以随意),然后进入目录创建一个system.conf文件,内容如下:

input {#配置日志来源,使用固定文件的方式
    file {
        path => "/var/log/messages"
        type => "system-log"
        start_position => "beginning"
        }
}
output {#配置elasticsearch作为输出目的地
        elasticsearch {
              hosts => "192.168.0.101:9200"
              index => "system_log-%{+YYYY.MM.dd}" # index中含有时间戳
        }
}

2、根据上述nginx.conf文件重新启动logstash,命令如下:

[elk@ecs-elk ~]# cd logstash-6.3.1/bin/
[elk@ecs-elk bin]# ./logstash -f ../job/system.conf &  //后台运行

注意:执行较慢,需要等待。

3、浏览器访问

示例验证1-1024x474
示例验证2-1024x474
示例验证3-1024x473
示例验证4-1024x477

2

评论区