ELK日志分析系统

375 阅读7分钟

ELK日志分析系统

  1. ---三个开源工具配合使用
  2. ---主要用来完成用户对日志的操作,统计,统一格式化,并进性友好的web界面显示

为什么使用

  1. --日志集中化处理---解决集群(多台机器)错误
  2. ---快速定位错误,提高效率
  3. --可以分析错误产生的原因(软硬件和配置文件错误)
  4. --便于运维人员了解机器负荷和性能安全性,并及时修改

完整日志系统基本特征

收集:能够采集多种来源的日志数据 传输:能够稳定的把日志数据解析过滤并传输到存储系统 存储:存储日志数据 分析:支持 UI 分析 警告:能够提供错误报告,监控机制

ELK流程图及原理

(1). 在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。

(2). Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。

(3). Elasticsearch 对格式化后的数据进行索引和存储。

(4). Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示

数据流向

image.png

EFLK流程图

image.png

Elasticsearch

分布式存储检索引擎,并且存储各类日志 》》》特点 1---提供了分布式多用户全文搜索 2---实时-群集-节点-索引(延迟1S)-分片和副本 3---java开发,用户可以通过web浏览器进行查询(RESTful web接口)

Logstash

主要数据收集引擎---对数据进行过滤,分析,丰富,统一化格式; 一般会存储到指定位置并发送给Elsaticesearch

-------特点---------

  1. --数据处理工具 RIby语言编写
  2. --数据传输-数据传入-过滤数据-统一化格式
  3. --运行在内存

--------数据分析--------

  1. --数据采集【input】
  2. --数据过滤【filter】
  3. --数据输出【output】

kibana

通常和E在一起部署,提供给E强大的可视化服务,主要提供图形化webUI界面 便于浏览E的日志数据(汇总,分析,搜索,重要数据)展示给用户。

------特点------

  1. --开源分析可视化平台
  2. --搜索,查看存储在E索引中的数据
  3. --通过图表进行高级数据分析和展示

ELK插件

一,file beat

轻量级开源日志文件数据收集器(收集日志)指定目录和日志格式

------特点------

  1. --轻量级开源日志文件搜集器
  2. --在需要采集数据的客户端安装,并指定目录和日志格式
  3. --和logstash配合使用,常用于EFLK架构

------filebeat结合logstash带来的好处------

1). 通过 Logstash 具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻 Elasticsearch 持续写入数据的压力
2)从其他数据源(例如数据库,S3对象存储或消息传递队列)中提取
3)将数据发送到多个目的地,例如S3,HDFS(Hadoop分布式文件系统)或写入文件
4)使用条件数据流逻辑组成更复杂的处理管道

二,缓存消息队列

  1. --redis-kafka,rabbitMQ
  2. --可以对高并发日志数据进行流量削峰,缓冲
  3. --保护数据不容易丢失,对架构进行应用解耦

三,fluentd

是一个流行的开源数据收集器,受到企业欢迎

------特点,相比较L------

  1. --是对logstash替代,常用于EFK架构---是ELK的替代方案
  2. --资源消耗少,性能更高,数据处理上高效可靠

------流程-------

在 Kubernetes 集群中一般是通过 DaemonSet 来运行 Fluentd,以便它在每个 Kubernetes 工作节点上都可以运行一个 Pod。 它通过获取容器日志文件、过滤和转换日志数据,然后将数据传递到 Elasticsearch 集群,在该集群中对其进行索引和存储。

实验

192.168.182.137 node1

192.168.182.138 node2

192.168.182.139 httpd

配置elasticearch环境

1、配置elasticsearch环境

192.168.182.137 node1

192.168.182.138 node2

image.png

image.png tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/

在末行添加

vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_91

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:JAVAHOME/lib:{JAVA_HOME}/lib:{JRE_HOME}/lib

image.png

image.png 【部署elasticsearch软件】

####登录192.168.182.137####

1、安装elasticsearch—rpm包

上传elasticsearch-5.5.0.rpm到/opt目录下

[root@node1 ~]# cd /opt

[root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm

image.png

2、加载系统服务

[root@node1 opt]# systemctl daemon-reload

[root@node1 opt]# systemctl enable elasticsearch.service

image.png 3.更改配置文件

3、更改elasticsearch主配置文件
 
[root@node1opt]#cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
 
[root@node1 opt]#  vi /etc/elasticsearch/elasticsearch.yml
 
17/ cluster.name: my-elk-cluster                   ####集群名字
 
23/ node.name: node1                                  ####节点名字
 
33/ path.data: /data/elk_data                        ####数据存放路径
 
37/ path.logs: /var/log/elasticsearch/           ####日志存放路径
 
43/ bootstrap.memory_lock: false                 ####不在启动的时候锁定内存(前端缓存。与IOPS-性能测试方式,每秒读写次数相关)
 
55/ network.host: 0.0.0.0                               ####提供服务绑定的IP地址,0.0.0.0代表所有地址
 
59/ http.port: 9200                                        ####侦听端口为9200
 
68/ discovery.zen.ping.unicast.hosts: ["node1", "node2"]           ####集群发现通过单播实现
 
节点名字不能一样 需要更改

image.png

image.png 4.创建数据存放路径并授权 [root@node1 opt]# mkdir -p /data/elk_data

[root@node1 opt]# chown elasticsearch:elasticsearch /data/elk_data/ 5.启动服务 [root@node1 elasticsearch]# systemctl start elasticsearch.service

[root@node1 elasticsearch]# netstat -antp |grep 9200

image.png

安装elasticsearch

上述查看集群的方式,及其不方便,我们可以通过安装elasticsearch-head插件后,来管理集群

上传node-v8.2.1.tar.gz到/opt

###编译安装node组件依赖包##耗时比较长 47分钟

yum install gcc gcc-c++ make -y

[root@localhost opt]# cd /opt

[root@node2 opt]# tar xzvf node-v8.2.1.tar.gz

[root@node2 opt]# cd node-v8.2.1/

[root@node2 node-v8.2.1]# ./configure

[root@node2 node-v8.2.1]# make && make install

image.png ####安装phantomjs####前端框架

上传软件包到/usr/local/src/

[root@localhost node-v8.2.1]# cd /usr/local/src/

[root@localhost src]# tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2

[root@localhost src]# cd phantomjs-2.1.1-linux-x86_64/bin

[root@localhost bin]# cp phantomjs /usr/local/bin

image.png ###安装elasticsearch-head###数据可视化工具

[root@localhost bin]# cd /usr/local/src/

[root@localhost src]# tar xzvf elasticsearch-head.tar.gz

[root@localhost src]# cd elasticsearch-head/

[root@localhost elasticsearch-head]# npm install

image.png

image.png #####修改主配置文件###

[root@localhost ~]# cd ~

[root@localhost ~]# vi /etc/elasticsearch/elasticsearch.yml ####下面配置文件,插末尾##

http.cors.enabled: true ##开启跨域访问支持,默认为false

http.cors.allow-origin: "*" ## 跨域访问允许的域名地址

[root@localhost ~]# systemctl restart elasticsearch

image.png ####启动elasticsearch-head 启动服务器####

[root@localhost ~]# cd /usr/local/src/elasticsearch-head/

[root@localhost elasticsearch-head]# npm run start & ####切换到后台运行

image.png [root@localhost elasticsearch-head]# netstat -lnupt |grep 9100

[root@localhost elasticsearch-head]# netstat -lnupt |grep 9200

安装logstash

做一些日志搜集输出到elasticsearch中登录主机192.168.226.130

关闭防火墙关闭核心防护

1、更改主机名

hostnamectl set-hostname apache

2、安装Apahce服务(httpd)

[root@apache ~]# yum -y install httpd

[root@apache ~]# systemctl start httpd
 
3、安装Java环境
 
[root@apache ~]# java -version        ###如果没有装 安装yum -y install java
 
openjdk version "1.8.0_181"
 
OpenJDK Runtime Environment (build 1.8.0_181-b13)
 
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
 
 
 
4、安装logstash
 
上传logstash-5.5.1.rpm到/opt目录下
 
[root@apache ~]# cd /opt
 
[root@apache opt]# rpm -ivh logstash-5.5.1.rpm                                                  ##安装logstash
 
[root@apache opt]# systemctl start logstash.service                                              ##启动logstash
 
[root@apache opt]# systemctl enable logstash.service
 
[root@apache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/          ##建立logstash软连接

image.png 6、输入采用标准输入 输出采用标准输出---登录192.168.100.43 在Apache服务器上

logstash agent

① input

② filter

③ output

[root@apache opt]# logstash -e 'input { stdin{} } output { stdout{} }'

[root@apache opt]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'

当出现以下情况 在 logstash.yml 文件中找到 Data path 的路径(默认在安装目录的data目录下

在这里重新指定data路径或者将原data下隐藏 .lock 文件删除重启 logstash即可)

image.png image.png 使用rubydebug显示详细输出,codec为一种编解码器

[root@apache opt]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }

image.png

image.png

image.png

【登录192.168.100.43 Apache主机 做对接配置】
###logstash配置文件###
Logstash配置文件主要由三部分组成:input、output、filter(根据需要)
 
[root@apache opt]# chmod o+r /var/log/messages
[root@apache opt]# ll /var/log/messages
-rw----r--. 1 root root 572555 4月  16 23:50 /var/log/messages
 
 
#配置文件中定义的是收集系统日志(system)
[root@apache opt]# vi /etc/logstash/conf.d/system.conf 
input {
       file{
        path => "/var/log/messages"
        type => "system"
        start_position => "beginning"
        }
      }
output {
        elasticsearch {
          hosts => ["192.168.182.137:9200"]
          index => "system-%{+YYYY.MM.dd}"
          }
        }
[root@apache opt]# systemctl restart logstash.service

在node1安装kibana

上传kibana-5.5.1-x86_64.rpm 到/usr/local/src目录
[root@node1 ~]# cd /usr/local/src/
[root@node1 src]# rpm -ivh kibana-5.5.1-x86_64.rpm
[root@node1 src]# cd /etc/kibana/
[root@node1 kibana]# cp kibana.yml kibana.yml.bak
[root@node1 kibana]# vi kibana.yml
2/ server.port: 5601                #### kibana打开的端口
7/ server.host: "0.0.0.0"           ####kibana侦听的地址
21/ elasticsearch.url: "http://192.168.182.137:9200"             ###和elasticsearch建立联系
30/ kibana.index: ".kibana"              ####在elasticsearch中添加.kibana索引
[root@node1 kibana]# systemctl start kibana.service    ###启动kibana服务
[root@node1 kibana]# systemctl enable kibana.service   ###开机启动kibana服务

image.png

image.png ####登录192.168.100.1真机###

使用浏览器输入192.168.182.137:5601

首次登录创建一个索引 名字:system-* ##这是对接系统日志文件

Index name or pattern ###下面输入system-*

然后点最下面的出面的create 按钮创建

然后点最左上角的Discover按钮 会发现system-*信息

然后点下面的host旁边的add 会发现右面的图只有 Time 和host 选项了 这个比较友好

image.png