Linux部署ELK日志搜集教程

一、使用背景

  目前项目中,采用的是微服务框架,对于日志,采用的是logback的配置,每个微服务的日志,都是通过File的方式存储在部署的机器上,但是由于日志比较分散,想要检查各个微服务是否有报错信息,需要挨个服务去排查,比较麻烦。所以希望通过对日志进行聚合,然后通过监控,能够快速的找到各个微服务的报错信息,快速的排查。

二、ELK分析

  对于ELK,主要是分为Elastic Search、Logstash和Kibana三部分:其中Logstash作为日志的汇聚,可以通过input、filter、output三部分,把日志收集、过滤、输出到Elastic Search中(也可以输出到文件或其他载体);Elastic Search作为开源的分布式引擎,提供了搜集、分析、存储数据的功能,采用的是restful接口的风格;Kibana则是作为Elastic Search分析数据的页面展示,可以进行对日志的分析、汇总、监控和搜索日志用。

  本次使用ELK主要则是作为日志分析场景。

三、ELK部署

linux版本为CentOs 7,ElasticsearchLogstash Kibana的版本均为6.3.0

安装过程:

1、下载ELK(保持版本一致)!

Elasticsearch 官网elasticsearch-6.3.0.tar  

Kibana 官网kibana-6.3.0下载 linux64位

Logstash 官网logstash-6.3.0.tar

文件上传至centos7

2、全部解压至某一目录

tar -zxvf elasticsearch-6.3.0.tar.gz          
tar -zxvf kibana-6.3.0-linux-x86_64.tar.gz
tar -zxvf logstash-6.3.0.tar.gz

3、java环境搭建

推荐使用jdk1.8jdk环境配置

4、安装elasticsearch

修改配置文件

vi /home/elasticsearch-6.3.0/config/elasticsearch.yml
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0           ##服务器ip 本机
#
# Set a custom port for HTTP:
#
http.port: 9200                 ##服务端口
#
# For more information, consult the network module documentation.
#

启动elasticsearch

 Elastic Search启动:由于ES的启动不能用root账号直接启动,需要新创建用户,然后切换新用户去启动,执行命令如下:

-- 创建新用户及授权
# groupadd elsearch
# useradd elsearch -g elsearch -p elasticsearch
# cd /data/deploy/elk/
# chown -R elsearch:elsearch elasticsearch-6.3.0
-- 切换用户,启动
# su elsearch
# cd elasticsearch-6.3.0/bin
# sh elasticsearch &
/home/elasticsearch-6.3.0/bin/elasticsearch   #命令窗运行
/home/elasticsearch-6.3.0/bin/elasticsearch  -d  #后台线程运行

关闭elasticsearch

ctrl+c                                   #命令窗关闭
ps -ef | grep elastic                    #后台线程关闭
kill -9 4442                             ##pid 4442为查处线程的pid 

常见问题解决elasticsearch启动常见问题

验证elasticsearch启动,主机名是你的服务器的ip地址或域名

5、安装kibana

修改配置文件

vi /home/kibana-6.3.0-linux-x86_64/config/kibana.yml
server.port: 5601       ##服务端口
server.host: "0.0.0.0"  ##服务器ip  本机
 
elasticsearch.url: "http://localhost:9200" ##elasticsearch服务地址 与elasticsearch对应

启动kibana

/home/kibana-6.3.0-linux-x86_64/bin/kibana       #命令窗启动
nohup ./kibana-6.3.0-linux-x86_64/bin/kibana &   #后台线程启动

关闭kibana

ctrl+c                                   #命令窗关闭
ps -ef | grep kibana                    #后台线程关闭
kill -9 4525                             ##pid 4525 为查处线程的pid 
备注:常见问题多为 端口占用,以及目录未授权,需要同elasticsearch 使用目录运行执行的用户去执行 未配置则为root用户

验证kibana启动

6、安装logstash

新建配置文件

# cd logstash-6.4.2/bin

   -- 新增编辑配置文件

# vim logstash.conf
input {        
   tcp {                 
      port => 5044                 
      codec => json_lines                 
   }     
} 
output{      
   elasticsearch {
      hosts => ["localhost:9200"]
      # 为传入的日志索引命名
      index => "hermit-log-%{+YYYY.MM.dd}"
   }     
}

    启动Logstash:

logstash官方输入源支持以及下载

安装logstash json插件

/home/logstash-6.3.0/bin/logstash-plugin install logstash-codec-json_lines


启动logstash

 /home/logstash-6.3.0/bin/logstash -f /home/logstash-6.3.0/config/logstash.conf     ##命令窗形式
nohup /home/logstash-6.3.0/bin/logstash -f /home/logstash-6.3.0/config/logstash.conf &  ##后台线程形式


   关闭logstash

ctrl+c                                   #命令窗关闭
ps -ef | grep logstash                    #后台线程关闭
kill -9 4617                              ##pid 4617 为查处线程的pid 

通过以上的配置,基本上ELK和微服务之间,已经配置完成,接下来需要通过在Kibana中创建索引等进行日志的搜索和查看。

访问主机/服务器:5601即可进入kibana管理界面:

 1、创建索引

    可以新建一个全局的索引,【Index pattern】设置为【*】,点击下一步至完成为止。

 

 2、日志搜索

    如截图所示,可以通过Discover和新建的索引,对日志进行详细的查看,并且可以选择具体的字段进行查看。在右上角,可以通过选择不同的时间段,对日志进行查看和搜索。

  3、创建查询

    如2中截图所示,可以通过添加filter,对日志进行过滤查询。然后点击Save后,可以创建新的查询。

  4、创建Visualize和Dashboard

    创建完查询后,可以在Visualize中,创建一个新的图示,通过查询进行创建。创建Dashboard,依赖Visualize图示,进行展示。

    即依赖关系:Dashboard -》 Visualize -》 Search

    在本项目中,Search主要是通过增加了两个Filter:①service:“ff-watersource” ②severity:“ERROR”,查询的是微服务为ff-watersource的error级别的日志。然后根据本Search,依次创建Visualize和Dashboard,最终在Dashboard中,可以监控日志信息的页面为:

    以上,日志聚合分析的实现,就算完成了。

至此,elk搭建完成。

1、可能遇到的错误:

os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error='Cannot allocate memory' (errno=12)
  1. 
        -Xms1g  
        -Xmx1g   
    

    进入elasticsearch的conf目录下,修改vm.什么的配置。可以改1g为512m

  2. 安装排错 max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

    解决方案:https://www.cnblogs.com/linus-tan/p/10276289.html 或者 https://blog.csdn.net/cookzrk/article/details/80179006

  3. elasticsearch ERROR: bootstrap checks failed 异常处理    或者参考----https://blog.51cto.com/xpleaf/2327317

  4. ERROR: bootstrap checks failed
    max file descriptors [10240] for elasticsearch process likely too low, increase to at least [65536]
    max number of threads [1024] for user [elsearch] likely too low, increase to at least [2048]
    max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

    切换到root用户

    修改limits.conf

    vi /etc/security/limits.conf
    #添加如下内容:
    * soft nofile 65536
    * hard nofile 131072
    * soft nproc 4096
    * hard nproc 4096

    修改XX-nproc.conf  (不同机器XX不一样,可先到 cd /etc/security/limits.d/ 查看下)

    vi /etc/security/limits.d/XX-nproc.conf
    #修改为
    * soft nproc 4096

    修改/etc/sysctl.conf 

    #添加下面配置:
    vm.max_map_count=655360

    执行命令:

    sysctl -p

    注意:如果仍然提示异常

    max file ******

    max number ******

    max virtual ******

    可根据提示调整上述文件参数大小即可解决。

  5. Elasticsaerch启动报错:Exception in thread "main" java.nio.file.AccessDeniedException:

    Exception in thread "main" java.nio.file.AccessDeniedException: /root/home/searchengine/elasticsearch-6.2.4/config/jvm.options
        at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
        at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
        at java.nio.file.Files.newByteChannel(Files.java:361)
        at java.nio.file.Files.newByteChannel(Files.java:407)
        at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
        at java.nio.file.Files.newInputStream(Files.java:152)
        at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:58)

    错误原因:使用非 root用户启动ES,而该用户的文件权限不足而被拒绝执行。

    解决方法(在root用户下操作该命令): chown -R 用户名:用户名  文件(目录)名

    例如: chown -R abc:abc searchengine
    再启动ES就正常了

  6. kinana界面报错:

    Kibana log in is currently disabled. administrators should consult the kibana logs for more details

    solution:https://discuss.elastic.co/t/kibana-log-in-is-currently-disabled-administrators-should-consult-the-kibana-logs-for-more-details/110234

  7. Linux 系统下用户之间的切换  参考:https://blog.csdn.net/u013118258/article/details/79300450

经过以上步骤,你应该安装完可以使用了,可以收藏该文章,然后谢谢我了。

之后的不揍,通过nginx代理elk,为elk添加安全验证。也就是输入密码才能访问你的ELK(kinana)。

  1. linux下yum安装Nginx  https://blog.csdn.net/sinat_36710456/article/details/79952862
  2. kibana安全——设置访问账号密码  https://blog.51cto.com/10950710/2334528?source=dra   或者 https://blog.51cto.com/tryingstuff/2049877?utm_source=oschina-app  再或者  https://www.cnblogs.com/zhaojingyu/p/9545253.html

6、搭建完成后,参考如下配置你的项目输送日志到ELK:

快速使用ELK构建SpringCloud微服务日志中心   https://blog.csdn.net/Loiterer_Y/article/details/90474390

参考文档:

1、ELK日志系统浅析与部署  https://blog.csdn.net/qq_22211217/article/details/80764568

2、部署ELK-6.3.0  https://blog.csdn.net/leo15561050003/article/details/80896509

3、微服务下,使用ELK做日志收集及分析   https://www.cnblogs.com/just-coder/p/11017050.html

4、Spring Boot 使用 logback、logstash、ELK 记录日志 https://www.jianshu.com/p/b34980d85377

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值