Linux安装配置ELK日志及与SpringBoot的整合使用

踩坑学习记录

一、下载ELK的安装包上传并解压

我这边用到的版本是7.6.1版本,ELK最好版本统一,避免版本兼容导致失败,可以在官网下载,下载可能会慢,我这里下载好了,可以直接用

1.Elasticsearch下载
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-linux-x86_64.tar.gz

2.Logstash下载

https://artifacts.elastic.co/downloads/logstash/logstash-7.6.1.tar.gz

3.Kibana下载

https://artifacts.elastic.co/downloads/kibana/kibana-7.6.1-linux-x86_64.tar.gz

上传到自定义目录:

/usr/local/src/elk

4.上传并解压

接下来使用 XShell 工具连接到服务器或者虚拟机

ES压缩包解压:进入 /usr/local/src/elk 目录
elasticsearch解压命令:tar -zxvf elasticsearch-7.6.1-linux-x86_64.tar.gz
logstash解压命令:tar -zxvf logstash-7.6.1.tar.gz
kibana解压命令:tar -zxvf kibana-7.6.1-linux-x86_64.tar.gz

解压后的文件夹修改下名字,方便输入:mv elasticsearch-7.6.1 elasticsearch7
解压后的文件夹修改下名字,方便输入:mv kibana-7.6.1 kibana7

解压后的文件夹修改下名字,方便输入:mv logstash-7.6.1 logstash7

ES目录介绍

bin:下面存放着Es启动文件         elasticsearch.bat/elasticsearch

config:配置目录

data:数据目录

jdk、lib:Java运行环境以及依赖包

logs:日志目录

modules、plugins:模块及插件目录,head插件可以存放在plugins目录下

二、Elasticsearch配置

1.修改配置文件elasticsearch.yml

基础配置
ES 本身其实也相当于是一个数据库,为此,我们在 elasticsearch7 文件夹下自己建一个 data 文件夹,用于存放数据:

mdkir data

进入 data 文件夹下,执行 pwd 命令拷贝下该文件夹的路径,下面配置要用到!

我的 data 路径:

/usr/local/src/elk/elasticsearch7/data

修改配置文件elasticsearch.yml,我们进入elasticsearch7 这个文件夹下的config 文件夹,编辑 elasticsearch.yml 文件:

vim elasticsearch.yml

node.name: node-1

cluster.initial_master_nodes: ["node-1"]

path.data: /usr/local/src/elk/elasticsearch7/data #目录位置以安装为主

path.logs: /usr/local/src/elk/elasticsearch7/logs #目录位置以安装为主

network.host: 0.0.0.0 #对外开放访问

http.port: 9200 #默认9200


跨域问题添加如下几行

http.cors.enabled: true

http.cors.allow-origin: "*"

http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

修改系统配置文件

vi  /etc/security/limits.conf  添加四行代码

*               soft    nofile          65536

*               hard    nofile          65536

*               soft    nproc           4096

*               hard    nproc           4096

vi /etc/sysctl.conf 文件,增加配置vm.max_map_count=262144

sysctl -p 执行生效

2.新建es用户

因为Elasticsearch为了安全起见,不支持root用户直接启动

新建一个用户elasticsearch,命令:

adduser es

passwd es//修改es用户密码

Changing password for user es.

New UNIX password:     //在这里输入新密码

Retype new UNIX password:  //再次输入新密码

passwd: all authentication tokens updated successfully.

elk 目录下 赋予 elasticsearch7 这个文件夹的权限给 es用户由于后续安装kibana也不能以root用户启动所以我们对外层elk文件夹下赋予权限命令:

chown -R es:es /usr/local/src/elk

命令,切换到 es 用户,并重新到 bin 目录下执行 ES服务

su es

3.启动Elasticsearch

在es安装目录bin下执行

./elasticsearch  -d

浏览器访问:http://服务器ip:9200/
显示如下内容表示成功

4.启动问题:

由于某种原因可能导致启动失败,我这边也遇到过一些情况,可以参考解决方案:

4.1:JDK版本问题:

future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk8/jdk1.8.0_291/jre] does not meet this requirement

原因:说明这个版本对应的jdk应该是java11。我们环境中的jdk是java8。其实新版的es是自带了jdk的。但是和我们环境变量的冲突了。

解决方案:修改启动文件,添加如下修改

wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz

tar -xzvf openjdk-11.0.1_linux-x64_bin.tar.gz /opt/

vi bin/elasticsearch

配置自己的jdk11,在启动脚本前加上如下两行

export JAVA_HOME=/opt/jdk-11.0.1  #根据自己解压后的路径设置

export PATH=$JAVA_HOME/bin:$PATH

4.2:GC异常问题

修改jvm.options将+UseConcMarkSweepGC 改为+UseG1GC

 

 

 

三、Logstash配置

1.新建持久化目录:

mkdir -p /usr/local/src/elk/logstash7/plugin-data

2.修改配置文件logstash.yml

编辑 /config/logstash.yml 配置文件

path.data: /usr/local/src/elk/logstash7/plugin-data    #上一步创建logstash 和插件使用的持久化目录

config.reload.automatic: true    #开启配置文件自动加载

config.reload.interval: 10    #定义配置文件重载时间周期

http.host: "172.18.10.172"    #本台服务器地址,一般为域名或IP,对外开放

  1. 安装logstash所需插件

从Filebeat 输入、过滤、输出至elasticsearch(logstash 有非常多插件,详见官网,此处不列举)
安装logstash-input-jdbc 和logstash-input-beats-master 插件
如果你的Logstash没有安装logstash-codec-json_lines插件,通过以下命令安装

/usr/local/src/elk/logstash7/bin/logstash-plugin install logstash-integration-jdbc

wget https://github.com/logstash-plugins/logstash-input-beats/archive/master.zip -O /opt/master.zip

unzip -d /usr/local/src/elk/logstash7 /opt/master.zip

root@iZwz91w9jegcgf28ttbe2yZ:/usr/local/src/elk/logstash7/bin# ./logstash-plugin install logstash-codec-json_lines

Validating logstash-codec-json_linesInstalling 

logstash-codec-json_lines

Installation successful

4.新建配置文件 logstash.conf(/bin目录下)

vim logstash.conf

配置文档内容

input {

  tcp {

    #模式选择为server

    mode => "server"

    #本台服务ip和端口根据自己情况填写,端口默认4560,对应后面整合spring boot的logback.xml里appender中的destination

    host => "172.18.10.172"

    port => 4560

    #格式json

    codec => json_lines

  }

}

filter {

  #过滤器,根据需要填写

}

output {

  elasticsearch {

    action => "index"

    #这里是es的服务器地址

    hosts  => "172.18.10.172:9200"

    #用于kibana过滤,可以填项目名称

    index  => "cim-logstash-%{+YYYY.MM.dd}"

  }

}

5.启动logstash

切换到/usr/local/src/elk/logstash7/bin

nohup ./logstash -f logstash.conf >/dev/null 2>&1 &

验证
访问http://服务器ip:9600/,成功的话会显示一个JSON串

6.启动问题:

由于某种原因可能导致启动失败,我这边也遇到过一些情况,可以参考解决方案:

6.1:内存问题:

:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000

解决方案
修改logstash核心的执行文件 在bin目录下,有一个可执行的文件logstash,需要添加参数:(可以先不用设置,报错的话再设置)

LS_JAVA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m"

2./usr/local/src/elk/logstash7/config修改jvm.options

-Xms256m-Xmx256m

四、Kibana配置

1.修改配置文件kibana.yml

修改内容:

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.hosts: ["http://localhost:9200"] #es部署不在同一台,要修改IP地址

i18n.locale: "zh-CN" #kibana页面汉化设置,默认英文

2.启动kibanakibana启动也是不建议root启动如果强制,可以命令后加--allow-root

进入bin目录启动:  ./bin/kibana --allow-root

或者守护进程启动: nohup ./bin/kibana --allow-root

>/dev/null 2>&1 &

进行访问本机访问 http://服务器ip:5601

五、Spring boot整合ELK

日志采集新增Logback直接发送日志到Logstash的形式。如果采用此方式,web服务可减少部分生成log文件配置,提高实时性和日志推送效率

1. 修改 pom.xml

logback 相关

<!-- https://mvnrepository.com/artifact/net.logstash.logback/logstash-logback-encoder -->

<dependency>

   <groupId>net.logstash.logback</groupId>

   <artifactId>logstash-logback-encoder</artifactId>

   <version>5.3</version>

</dependency>

2. logback.xml

<?xml version="1.0" encoding="UTF-8"?>

    <!--输出到logstash的appender-->

    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">

        <!--可以访问的logstash日志收集ip-->

        <destination>172.18.10.172:4560</destination>

        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>

    </appender>

    <root level="INFO">

        <appender-ref ref="LOGSTASH"/>

    </root>

</configuration>

3. Test.java

在接口中使用log进行日志生成,启动项目

  1. 进入kibana -> 管理 -> 索引模式 -> 创建索引模式,输入 logstash-* ,下一步创建

 

5. 调用接口触发日志记录,打开Kibana-->Discover菜单-->筛选" logstash-* ",显示请求日志,出现如下信息说明整合成功!!!

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值