ELK日志分析系统-------【理论加实操】------过程真详细!速看!

一、ELK日志分析系统简介

1.1 日志服务器

■提高安全性
■集中存放日志
■缺陷:对日志的分析困难

1.2 ELK日志分析系统

■Elasticsearch
■Logstash
■Kibana

1.3 日志处理步骤

■将APP servers的日志进行集中化管理到Logstash agent
■将日志格式化(Logstash)并输出到Elasticsearch cluster
■对格式化后的数据进行索引和存储(Elasticsearch)
■前端数据的展示(Kibana)
■可以在线查看界面化展示

在这里插入图片描述

二、Elasticsearch介绍

2.1 Elasticsearch概述

■提供了一个分布式多用户能力的全文搜索引擎
■是一个基于Lucene的搜索服务器
■基于restful web接口
■使用java开发
■作为apache许可条款下的开放源码发布,是第二流行的企业搜索引擎
■被设计用于云计算中,能够达到实时搜索、稳定、可靠、快速、安装实用方便的需求

2.2 Elasticsearch的核心概念

■接近实时
■集群
■节点
■索引
●索引(库)------类型(表)------文档(记录)
■分片和副本

三、Logstash介绍

3.1 Logstash概述

■一款强大的数据处理工具
■可以实现数据传输、格式处理、格式化输出
■数据输入(collect)、数据加工(如过滤、改写等enrich)以及数据输出(transport)

3.2 Logstash主要组件

■Shipper:日志收集
负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可

■Indexer:日志存储
负责接受日志并写入到本地文件

■Broker:日志hub
负责链接多个shipper和对应数目的indexer

■Search and Storage
允许对事件进行搜索和存储

■Web Interface
基于web的展示界面

四、Kibana介绍

4.1 Kibana概述

■一个针对Elasticsearch的开源分析及可视化平台
■搜索、查看存储在Elasticsearch索引中的数据
■通过各种图标进行高级数据分析及展示

4.2 Kibana主要功能

■Elasticsearch无缝之集成:
Kibana架构为Elasticsearch定制,可以将任何结构化和非结构化加入Elasticsearch索引,Kibana还充分利用了Elasticsearch强大的搜索和分析功能

■整合数据,复杂数据分析:
根据海量数据创建柱形图、折线图、三代泥土、直方图、饼图和地图;提升了Elasticsearch地分析能力,更够更加智能化地分析数据,执行数学转化并且根据要求对数据切割分块

■让更多团队成员受益:
强大的数据可视化让各个业务岗位都可以直观了解数据

■接口灵活,分享更容易:
使用Kibana可以更加方便地创建保存和分享数据,并将可视化数据快速交流

■配置简单,可视化多数据源:
Kibana地配置和启动非常简单,用户体验友好,Kibana自带web服务器,可以快速运行;kibana可以非常方便地把来自logstash、ES-hadoop、Beats或第三方技术整合到Elasticsearch,支持地第三方技术包括apacheflume、fluentd等

■简单数据导出:
Kibana可以方便地导出感兴趣地数据,与其他数据融合后快速建模分析,发现新结果

五、实验操作

5.1 案例环境

■三台centos7.4服务器,配置安装ELK日志分析系统,安装集群方式,两个Elasticsearch节点,并监控apache服务器日志。关闭防火墙、核心防护

主机 操作系统 主机名/IP地址 主要软件
服务器 CentOS7.4 node1/20.0.0.16 Elasticsearch、Kibana
服务器 CentOS7.4 node2/20.0.0.17 Elasticsearch
服务器 CentOS7.4 Apache/20.0.0.15 Logstash

5.2 配置elasticsearch环境

5.2.1 更改主机名,添加映射,查看java环境

hostnamectl set-hostname node1
su

vi /etc/hosts
20.0.0.16 node1
20.0.0.17 node2

java -version
//图形界面安装的系统,默认系统已经安装了java,可以使用

5.2.2 安装node1(20.0.0.16)

1.安装elasticsearch rpm包
■上传rpm包到家目录下
rpm -ivh elasticsearch-5.5.0.rpm

2.加载系统服务
systemctl daemon-reload
systemctl enable elasticsearch

3.更改elasticsearch主配置文件
【node1】
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml

cluster.name: my-elk-cluster
node.name: node1
path.data: /data/elk_data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: [“node1”, “node2”]

【node2】
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml

cluster.name: my-elk-cluster
node.name: node2
path.data: /data/elk_data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: [“node1”, “node2”]

grep -v “^#” /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster
node.name: node1
path.data: /data/elk_data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: [“node1”, “node2”]

4.创建数据存放路径并授权
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

5.启动elastaticsearch是否成功开启
systemctl start elasticsearch
netstat -anpt |grep 9200

tcp6 0 0 :::9200 ::😗 LISTEN 5821/java

6.查看节点信息,用真机浏览器打开http://20.0.0.16:9200,下面是节点的信息
{
“name” : “node1”,
“cluster_name” : “my-elk-cluster”,
“cluster_uuid” : “88FUFvubRPaqwDk2HYZiSw”,
“version” : {
“number” : “5.5.0”,
“build_hash” : “260387d”,
“build_date” : “2017-06-30T23:16:05.735Z”,
“build_snapshot” : false,
“lucene_version” : “6.6.0”
},
“tagline” : “You Know, for Search”
}
在这里插入图片描述

查看节点信息,用真机浏览器打开http://20.0.0.17:9200,下面是节点的信息
{
“name” : “node2”,
“cluster_name” : “my-elk-cluster”,
“cluster_uuid” : “z4Y1Nq-7R56HPH1X-TXMhQ”,
“version” : {
“number” : “5.5.0”,
“build_hash” : “260387d”,
“build_date” : “2017-06-30T23:16:05.735Z”,
“build_snapshot” : false,
“lucene_version” : “6.6.0”
},
“tagline” : “You Know, for Search”
}

在这里插入图片描述

7.集群检查健康和状态
真机浏览器打开http://20.0.0.16:9200/_cluster/state?pretty,检查状态信息

{
“cluster_name” : “my-elk-cluster”,
“version” : 2,
“state_uuid” : “fD_gw9ypSc26Pjzg9dp2sA”,
“master_node” : “7zEsl7V4Q66s3TEhYgMptQ”,
“blocks” : { },
“nodes” : {
“7zEsl7V4Q66s3TEhYgMptQ” : {
“name” : “node1”,
“ephemeral_id” : “LNeTLSDoRUeXslIY0L4Pjg”,
“transport_address” : “20.0.0.16:9300”,
“attributes” : { }
}
},
“metadata” : {
“cluster_uuid” : “88FUFvubRPaqwDk2HYZiSw”,
“templates” : { },
“indices” : { },
“index-graveyard” : {
“tombstones” : [ ]
}
},
“routing_table” : {
“indices” : { }
},
“routing_nodes” : {
“unassigned” : [ ],
“nodes” : {
“7zEsl7V4Q66s3TEhYgMptQ” : [ ]
}
}
}

5.2.3 安装elasticsearch-head插件

■上述查看集群的方式不方便,可以通过安装elasticsearch-head插件后,来管理集群
1.上传node-v8.2.1.tar.gz到家目录
yum -y install gcc gcc-c++ make

■编译安装node组件依赖包
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make -j3
make install
cd ~

2.安装phantomjs前端框架
■上传软件包到家目录下:
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
cd ~

3.安装elasticsearch-head,数据可视化工具
■上传软件包到家目录下:
tar zxvf elasticsearch-head.tar.gz
cd elasticsearch-head/
npm install
cd ~

4.修改主配置文件
vim /etc/elasticsearch/elasticsearch.yml
//末尾插入下面两句话

http.cors.enabled: true
http.cors.allow-origin: “*”
systemctl restart elasticsearch

####解释####
http.cors.enabled:true
//开启跨域访问支持,默认为false
http.cors.allow-origin:"*"
//跨域访问允许的域名地址

5.启动elasticsearch-head
cd elasticsearch-head/
npm run start &

[1] 49942
[root@node2 elasticsearch-head]#

elasticsearch-head@0.0.0 start /root/elasticsearch-head
grunt server

Running “connect:server” (connect) task
Waiting forever…
Started connect web server on http://localhost:9100

netstat -anpt |grep 9100
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 49952/grunt

在这里插入图片描述
在这里插入图片描述

5.2.4 测试创建索引

curl -XPUT ‘localhost:9200/index-demo/test/1?pretty&pretty’ -H ‘content-Type: application/json’ -d '{“user”:“zhangsan”,“mesg”:“hello world”}'
{
“_index” : “index-demo”,
“_type” : “test”,
“_id” : “1”,
“_version” : 1,
“result” : “created”,
“_shards” : {
“total” : 2,
“successful” : 1,
“failed” : 0
},
“created” : true
}

在这里插入图片描述

5.3 在apache上安装logstash

■在apache上安装logstash并做一些日志搜集输出到elasticsearch中

hostnamectl set-hostname apache
su

5.3.1 安装httpd,查看java环境

yum -y install httpd
systemctl start httpd
//开启服务后开始产生日志
systemctl enable httpd

java -version
openjdk version “1.8.0_131”
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

5.3.2 安装logstash

■将logstash包上传到家目录下
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash
systemctl enable logstash

ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
//让系统命令能够直接调用

5.3.3 测试logstash(apache)与elasticsearch(node)之间功能对接是否正常,做对接测试

■Logstash这个命令测试
■字段描述解释:
● -f 通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
● -e 后面跟着字符串 该字符串可以被当做logstash的配置(如果是” ”,则默认使用stdin做为输入、stdout作为输出)
● -t 测试配置文件是否正确,然后退出

5.3.4 输入采用标准输入,输出采用标准输出

logstash -e 'input { stdin{} } output { stdout{} }'
…省略…
The stdin plugin is now waiting for input:
10:33:10.170 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9601}

www.baidu.com //输入地址
2020-10-29T02:33:33.279Z apache www.baidu.com //输出到屏幕上

5.3.5 使用rubydebug显示详细输出

logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
The stdin plugin is now waiting for input:
10:35:29.886 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9601}

www.baidu.com //输入
{
“@timestamp” => 2020-10-29T02:35:51.517Z,
“@version” => “1”,
“host” => “apache”,
“message” => “www.baidu.com”
} //输出详细信息

5.3.6 使用logstash将信息写入到elsticsearch

logstash -e ‘input { stdin{} } output { elasticsearch { hosts=>[“20.0.0.16:9200”] } }’
www.baidu.com //输入

■真机打开浏览器输入http://20.0.0.16:9100/查看:
//可以发现多出logstash-2020.10.28选项

在这里插入图片描述

5.3.7 将logstash与系统日志文件对接配置

■Logstash配置文件主要由三部分组成:input、output、filter(根据需要)

chmod o+r /var/log/messages
//让logstash能够读取系统日志信息
cd /etc/logstash/conf.d/
vim system.conf

input {
file {
path => “/var/log/messages”
type => “system”
start_position => “beginning”
}
}
output {
elasticsearch {
hosts => [“20.0.0.16:9200”]
index => “system-%{+YYYY.MM.dd}”
}
}

systemctl restart logstash

5.3.8 真机浏览器中输入地址http://20.0.0.16:9100/查看

在这里插入图片描述

5.4 在node1节点上安装Kibana

5.4.1 将kibana包上传到家目录下,并配置

rpm -ivh kibana-5.5.1-x86_64.rpm
cd /etc/kibana/
cp -p kibana.yml kibana.yml.bak
vim kibana.yml

server.port: 5601
server.host: “0.0.0.0”
elasticsearch.url: “http://20.0.0.16:9200”
kibana.index: “.kibana”

systemctl start kibana
systemctl enable kibana
netstat -natp | grep 5601

tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 8157/node

######解释######
2 server.port: 5601 //开启端口
7 server.host: “0.0.0.0” //监听IP
21 elasticsearch.url: “http://20.0.0.16:9200” //指定elasticsearch路径,生产环境中不能用具体的某台服务器,应该搭建负载均衡,同时搭建keepalive实现
30 kibana.index: “.kibana” //添加索引

5.4.2 真机浏览器输入http://20.0.0.16:5601登录Kibana

在这里插入图片描述

5.4.3 配置logstash去收集apache日志文件(apache)

cd /etc/logstash/conf.d/
vim apache_log.conf

input {
file{
path => “/etc/httpd/logs/access_log”
type => “access”
start_position => “beginning”
}
file{
path => “/etc/httpd/logs/error_log”
type => “error”
start_position => “beginning”
}
}
output {
if [type] == “access” {
elasticsearch {
hosts => [“20.0.0.16:9200”]
index => “apache_access-%{+YYYY.MM.dd}”
}
}
if [type] == “error” {
elasticsearch {
hosts => [“20.0.0.16:9200”]
index => “apache_error-%{+YYYY.MM.dd}”
}
}
}

ll /etc/httpd/logs/error_log
-rw-r–r-- 1 root root 675 Oct 28 23:49 /etc/httpd/logs/error_log

/usr/share/logstash/bin/logstash -f apache_log.conf
//开启

5.4.4 真机浏览器输入http://20.0.0.16:9100查看

在这里插入图片描述

这时只有error的日志,浏览器输入20.0.0.15访问apache网站,刷新此页面,就会出现access的日志记录

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5.4.5 真机浏览器输入http://20.0.0.16:5601

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值