ELK日志分析系统概述与部署

一、ELK日志分析系统概述

(一)、ELK的组成

E:Elasticsearch
L:Logstash
K:Kibana

(二)、日志服务器

1、优点
提高安全性
集中存放日志
2、缺陷
对日志的分析困难

(三)、日志处理步骤

1、将日志进行集中化管理
2、将日志格式化(Logstash)并输出到 Elasticsearch
3、对格式化后的数据进行索引和存储( Elasticsearch)
4、前端数据的展示(Kibana)

(四)、Elasticsearch

1、概述

提供了一个分布式多用户能力的全文搜索(索引)引擎,开源。分布式即数据不会放在一个地方

2、特性

接近实时:指索引和数据处理的能力
集群:一个内部组件 ES 的架构(特性)
节点:有集群必定有节点
索引:索引(库)→ 索引类型(表)→ 索引的具体文档(记录)
分片:例如,一个40G的文件,分为两份20G的文件,存放至两个节点上,读取这个40G的文件时,会效率更快
副本:核心是为了容灾,不过也可以处理任务
分片加上副本的使用:例如,四台主机同时处理一项任务,理论上效率可以提高四倍

(五)、Logstash

1、概述

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

由三个组件组成:Input、Output、Filter Plugin
Input:获取日志
Output:输出日志
Filter Plugin:过滤日志、格式处理

2、主要组件

Shipper
Indexer
Broker
Search and Storage
Web Interface

(六)、Kibana

1、概述

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

2、主要功能

Elasticsearch无缝之集成
整合数据,复杂数据分析
让更多团队成员受益
接口灵活,分享更容易
配置简单,可视化多数据源
简单数据导出

二、部署ELK日志分析系统

(一)、实验需求

配置ELK日志分析集群
使用Logstash收集日志
使用Kibana查看分析日志

(二)、实验设备与实验环境

主机名操作系统IP地址软件
node1CentOS7192.168.229.10Elasticsearch Kibana
node2CentOS7192.168.229.20Elasticsearch
apacheCentOS7192.168.229.30httpd / Logstash
客户机Windows10192.168.229.1——

所有节点,关闭系统防火墙和安全机制

systemctl stop firewalld.service
setenforce 0

设置各主机名

hostnamectl set-hostname node1
su 

在这里插入图片描述

hostnamectl set-hostname node2
su 

在这里插入图片描述

hostnamectl set-hostname apache
su 

在这里插入图片描述

(三)、配置elasticsearch(node1、node2)

java -version          #如果没有安装,yum -y install java
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)

在这里插入图片描述

echo '192.168.229.10 node1' >> /etc/hosts
echo '192.168.229.20 node2' >> /etc/hosts
cd /opt
上传elasticsearch-5.5.0.rpm
rpm -ivh elasticsearch-5.5.0.rpm
systemctl daemon-reload
systemctl enable elasticsearch.service

在这里插入图片描述
在这里插入图片描述
修改elasticsearch主配置文件

cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml
17/ cluster.name: my-elk-cluster                           ####集群名字
23/ node.name: node1                                       ####节点名字,Node2节点为node2
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"]   ####集群发现通过单播实现

grep -v "^#" /etc/elasticsearch/elasticsearch.yml          ####查看修改的配置

在这里插入图片描述
创建数据存放路径并授权

mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

在这里插入图片描述
启动elasticsearch是否成功开启

systemctl start elasticsearch.service
netstat -antp | grep 9200
#服务启动较慢,耐心等待

在这里插入图片描述
查看节点信息

http://192.168.229.10:9200
http://192.168.229.20:9200

在这里插入图片描述
在这里插入图片描述
检测集群健康、查看集群状态

http://192.168.229.10:9200/_cluster/health?pretty
http://192.168.229.20:9200/_cluster/health?pretty

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

http://192.168.229.10:9200/_cluster/state?pretty
http://192.168.229.10:9200/_cluster/state?pretty

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

(四)、安装elasticsearch-head插件(node1、node2)

编译安装 node

yum -y install gcc gcc-c++ make 
cd /opt
上传node-v8.2.1.tar.gz
tar xzvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure 
make
make install

在这里插入图片描述
在这里插入图片描述
安装 phantomjs

cd /opt
上传phantomjs-2.1.1-linux-x86_64.tar.bz2 
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
cd /usr/local/src/
上传elasticsearch-head.tar.gz
tar xzvf elasticsearch-head.tar.gz
cd elasticsearch-head/
npm install

在这里插入图片描述
修改 Elasticsearch 主配置文件

vim /etc/elasticsearch/elasticsearch.yml
......
--末尾添加以下内容--
http.cors.enabled: true       #开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"   #指定跨域访问允许的域名地址为所有

systemctl restart elasticsearch

在这里插入图片描述
启动 elasticsearch-head 服务

cd /usr/local/src/elasticsearch-head/
npm run start &

netstat -natp |grep 9100

在这里插入图片描述
打开浏览器输入

http://192.168.229.10:9100 
http://192.168.229.20:9100 

在Elasticsearch 后面的栏目中输入

http://192.168.229.10:9200   
http://192.168.229.20:9200 

在这里插入图片描述
插入索引(node1上操作)
通过命令插入一个测试索引,索引为 index-demo,类型为 test。

curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

在这里插入图片描述
真机访问,查看索引信息
在这里插入图片描述
上面图可以看见索引默认被分片5个,并且有一个副本

(五)、部署 Logstash(apache节点)

yum -y install httpd
systemctl start httpd
cd /opt
上传logstash-5.5.1.rpm 
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash.service     
systemctl enable logstash.service
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

在这里插入图片描述
在这里插入图片描述
logstash(Apache)与elasticsearch(node)功能是否正常,做对接测试
Logstash 命令常用选项:
-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。
-e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。
-t:测试配置文件是否正确,然后退出。

logstash -e 'input { stdin{} } output { stdout{} }'

在这里插入图片描述

logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'

在这里插入图片描述
使用logstash将信息写入elasticsearch中,输入 输出 对接
在这里插入图片描述
在这里插入图片描述
打开浏览器 输入http://192.168.229.10:9100/ 查看索引信息
在这里插入图片描述
logstash配置文件(Apache主机 做对接配置)
Logstash配置文件主要由三部分组成:input、output、filter(根据需要)

chmod +r /var/log/messages	

vim /etc/logstash/conf.d/system.conf
input {
 file{
  path =>"/var/log/messages"      #指定要收集的日志的位置
  type =>"system"         #自定义日志类型标识
  start_position =>"beginning"     #表示从开始处收集
 }
}
output {
 elasticsearch {          #输出到 elasticsearch
  hosts => ["192.168.229.10:9200"]     #指定 elasticsearch 服务器的地址和端口
  index =>"system-%{+YYYY.MM.dd}"     #指定输出的索引格式
 }
}

systemctl restart logstash 

浏览器访问 http://192.168.229.10:9100查看索引信息

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

(六)、Kiabana 部署(Node1)

cd /usr/local/src/
上传kibana-5.5.1-x86_64.rpm
rpm -ivh kibana-5.5.1-x86_64.rpm
cd /etc/kibana/
cp kibana.yml kibana.yml.bak

vim kibana.yml
2/ server.port: 5601                      #kibana打开的端口
7/ server.host: "0.0.0.0"                #kibana侦听的地址
21/ elasticsearch.url: "http://192.168.229.10:9200"     #和elasticsearch建立联系
30/ kibana.index: ".kibana"                  #在elasticsearch中添加.kibana索引

systemctl start kibana.service 
systemctl enable kibana.service

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用浏览器输入192.168.229.10:5601
首次登录创建一个索引 名字:system-* ##这是对接系统日志文件
Index name or pattern ###下面输入system-*
然后点最下面的出面的create 按钮创建
在这里插入图片描述
然后点最左上角的Discover按钮 会发现system-*信息
在这里插入图片描述
然后点下面的host旁边的add 会发现右面的图只有 Time 和host 选项了 这个比较友好
在这里插入图片描述

(七)、将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示

cd /etc/logstash/conf.d/
vim /etc/logstash/conf.d/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 => ["192.168.229.10:9200"]
   index => "apache_access-%{+YYYY.MM.dd}"
  }
 }
 if [type] == "error" {
  elasticsearch {
   hosts => ["192.168.229.10:9200"]
   index => "apache_error-%{+YYYY.MM.dd}"
  }
 }
}

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

在这里插入图片描述
在这里插入图片描述
打开浏览器 输入http://192.168.229.10:9100/ 查看索引信息
在这里插入图片描述
打开浏览器 输入http://192.168.229.10:5601
点击左下角有个management选项—index patterns—create index pattern
----分别创建apache_error-*apache_access-* 的索引
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值