暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

企业神器——ELK日志分析系统

菜鸟自学大数据Hadoop 2021-07-21
652


日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。


开源实时日志分析ELK平台由ElasticSearch、Logstash和Kiabana三个开源工具组成:

1)ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。在elasticsearch中,所有节点的数据是均等的。

2)Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

3)Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。


ELK工作原理展示图:

如上图:Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。


ELK环境部署

一、准备工作

(1)系统环境

系统:CentOS7.2 

防火墙:关闭

Centos7防火墙关闭方法与Centos6的有所区别

CentOS6关闭防火墙使用以下命令:

//临时关闭
service iptables stop
//禁止开机启动
chkconfig iptables off


CentOS7中关闭防火墙使用以下命令:

//临时关闭
systemctl stop firewalld
//禁止开机启动
systemctl disable firewalld


selinux:关闭

selinux关闭方式有两种,一种是临时关闭,另一种是永久关闭。

临时关闭方式:

setenforce 0

永久关闭方式:

编辑配置文件/etc/selinux/config 

将SELINUX=enforcing 改为 SELINUX=disabled


(2)ELK源码包(Elasticsearch、Logstash 、Kibana 

ELK官网下载地址https://www.elastic.co/downloads,下载相应的软件包


二、部署ElasticSearch

将下载好的源码包上传至linux服务器

[root@node1 src]ll
total 449592
-rw-r--r--  1 root root  91526572 Aug 23 11:15 elasticsearch-6.3.2.zip
-rw-r--r--  1 root root 191071620 Jul  6 14:07 jdk1.8.zip
-rw-r--r--  1 root root  30408272 May 16 11:08 kibana-4.3.1-linux-x64.tar.gz
-rw-r--r--  1 root root 144211416 Aug 23 13:55 logstash-6.3.2.tar.gz

注意:ELK的安装jdk的版本必须要求1.8以上

(1)安装jdk

[root@node1 src]# unzip jdk1.8.zip
[root@node1 src]# mv jdk  /usr/local/jdk
[root@node1 src]# vim /etc/profile    #在末尾增加以下内容
JAVA_HOME=/usr/local/jdk1.8.0_181
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
[root@node1 src]# source /etc/profile  #刷新配置
[root@node1 src]# java -version   #检验jdk版本
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)

(2)安装ElasticSearch

2.1、解压并移动至/usr/local下

[root@node1 src]# unzip elasticsearch-6.3.2.zip
[root@node1 src]# mv elasticsearch-6.3.2  /usr/local/elasticsearch

2.2、修改配置文件elasticsearch.yml

[root@node1 local]# vim elasticsearch/config/elasticsearch.yml  #修改或增加以下配置

2.3、创建数据目录和日志目录

[root@node1 local]# mkdir  /data/elasticsearch
[root@node1 local]# mkdir /var/log/elasticsearch

2.4、创建elk用户(elasticsearch不能以root用户身份启动)

[root@node1 local]# useradd elk

2.5、修改文件所属主、所属组

[root@node1 local]# chown -R elk:elk  elasticsearch
[root@node1 local]# chown -R elk:elk  /data/elasticsearch/
[root@node1 local]# chown -R elk:elk  /var/log/elasticsearch

2.6、启动elasticsearch

[root@node1 local]# su - elk
Last login: Fri Aug 24 15:42:08 CST 2018 on pts/0
[elk@node1 ~]$ nohup /usr/local/elasticsearch/bin/elasticsearch   > /dev/null  &

2.7、验证elasticsearch是否安装成功

若出现上述访问结果,则表示elasticsearch部署成功。

注意:在启动过程中可能会报错,根据错误提示搜索解决方法,以下是本文在搭建过程中遇到的错误和解决方法,读者可作为参考。

错误[1]: max file descriptors [4096for elasticsearch process is too low, increase to at least [65536]
解决方法:编辑 limits.conf 在第一行加上如下内容:
cat /etc/security/limits.conf 
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
错误[2]: max virtual memory areas vm.max_map_count [65530is too low,increase to at least [262144]
解决方法:编辑 limits.conf 在第一行加上如下内容:
cat /etc/sysctl.conf 
vm.max_map_count = 655360
执行 sysctl -p
错误[3]:max number of threads [1024for user [elasticsearch] is too low, increase to at least [4096]
解决方法:编辑 /etc/security/limits.d/90-nproc.conf 将:
*          soft    nproc     1024
修改为:
*          soft    nproc     4096
错误[4]:ERROR: [1] bootstrap checks failed
          [1]: 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.system_call_filter: false

三、部署Kibana

3.1、解压并移动至/usr/local下

[root@node1 src]# tar xzvf kibana-6.3.2-linux-x86_64.tar.gz
[root@node1 src]# mv kibana-6.3.2-linux-x86_64   /usr/local/kibana-6.3.2/

3.2、修改配置文件kibana.yml

[root@node1 kibana-6.3.2]# vim config/kibana.yml #修改或增加以下内容

3.3、启动Kibana

[root@node1 kibana-6.3.2]# nohup /usr/local/kibana-6.3.2/bin/kibana > /dev/null  &

3.4、检查Kibana是否安装成功

若访问出现上述截图,则表示kibana安全成功。

四、部署Logstash

在需要搜集日志的服务上部署logstash,注意,在部署logstash之前应先安装jdk,并且jdk版本在1.8以上。

4.1、解压并移动至/usr/local下

[root@node1 src]# tar -xzvf logstash-6.3.2.tar.gz
[root@node1 src]# mv logstash-6.3.2  /usr/local/logstash

4.2、编辑收集文件

[root@iZm5ehbmmjvrem6fwc38zkZ logstash]# cat services.conf 
input {
    file {
      path => "/opt/center/log/global2018-08-27.log"
      type => "cqbb_center"
      start_position => "beginning"
    }
}

input {
    file {
      path => "/opt/route/log/global2018-05-18.log"
      type => "cqbb_route"
      start_position => "beginning"
    }
}

input {
    file {
      path => "/opt/web/logs/catalina.out"
      type => "cqbb_web"
      start_position => "beginning"
    }    
}      

input {
    file {
      path => "/opt/web-old/logs/catalina.out"
      type => "cqbb_web-old"
      start_position => "beginning"
    }
}


output {
    if [type] == "cqbb_center"  {
        elasticsearch {
           hosts => ["x.x.x.x:9200"]
           index => "cqbb1_center-%{+YYYY.MM.dd}"
        }
    }

    if [type] == "cqbb_route"  {
        elasticsearch {
           hosts => ["x.x.x.x:9200"]
           index => "cqbb1_route-%{+YYYY.MM.dd}"
        }
    }

    if [type] == "cqbb_web"  {
        elasticsearch {
           hosts => ["x.x.x.x:9200"]
           index => "cqbb1_web-%{+YYYY.MM.dd}"
        }
    }

    if [type] == "cqbb_web-old"  {
        elasticsearch {
           hosts => ["x.x.x.x:9200"]
           index => "cqbb1_web-old-%{+YYYY.MM.dd}"
        }
    }


}

说明:path定义日志的路径,type自定义程序类型,hosts定义elasticsearch服务地址端口,index表示索引。

4.3、启动logstash

[root@iZm5ehbmmjvrem6fwc38zkZ logstash]# /usr/local/logstash/bin/logstash -f services.conf   &

五、验证日志是否收集成功

5.1 登陆Kibana访问地址,选择“Managemen”,然后点击“index Patterns”,如下图所示:

5.2、选择“Create index pattern”,如下图所示:

5.3、 输入索引,索引支持匹配,然后点击“Next step”,如下图所示:

5 .4、选择“timestamp”,点击“Create index pattern”,如下图所示:

5.5、选择“Discover”,然后添加message、type,如下图所以:

此时我们可以看到收集到了日志,如果你想看具体程序的日志只需点击type下对应程序后的放大镜标志:

指定程序日志的显示如下:

5.6、配置实时日志刷新

点击“Auto-refresh”,选择对应的刷新时间,例如选择“5 seconds”表示5s刷新一次,如下图所示

到此,整套ELK日志分析系统部署完成。


菜鸟自学编程
长按左侧二维码添加


文章转载自菜鸟自学大数据Hadoop,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论