ELK日志分析系统

一、ELK概述

1、ELK日志分析系统8

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。

Elasticsearch概述

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。主要负责将日志索引并存储起来,方便业务方检索查询。

LogStash概述

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。是一个日志收集、过滤、转发的中间件,主要负责将各条业务线的各类日志统一收集、过滤后,转发给 Elasticsearch 进行下一步处理。

Kibana概述

Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

2、ELK中日志处理步骤

在这里插入图片描述

第一步:将日志进行集中化管理(beats)
第二步:将日志格式化(Logstash),然后将格式化后的数据输出到Elasticsearch
第三步:对格式化后的数据进行索引和存储(Elasticsearch)
第四步:前端数据的展示(Kibana)

二、部署

软件包及提取码:zqzq

主机操作系统IP地址软件
node1CentOS7192.168.109.12Elasticsearch/Kibana
node2CentOS7192.168.109.22Elasticsearch
apacheCentOS7192.168.109.32httpd / Logstash
客户机(宿主机)Windows10192.168.109.132
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

hostnamectl set-hostname 主机名

在这里插入图片描述

1、配置elasticsearch环境

Node1
Node2

echo '192.168.109.12 node1' >> /etc/hosts
echo '192.168.109.22 node2' >> /etc/hosts

java -version    #如果没有安装,yum -y install java

在这里插入图片描述

2、部署elasticsearch软件

Node1
Node2
上传elasticsearch-5.5.0.rpm到/opt目录下
在这里插入图片描述

cd /opt
rpm -ivh elasticsearch-5.5.0.rpm

在这里插入图片描述

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

在这里插入图片描述

cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
#先做备份

在这里插入图片描述

#更改elasticsearch主配置文件

vim /etc/elasticsearch/elasticsearch.yml
#17行;取消注释,修改;集群名字
cluster.name: my-elk-cluster
#23行;取消注释,修改;节点名字(node2修改成node2)
node.name: node1
#33行;取消注释,修改;数据存放路径
path.data: /data/elk_data
#37行;取消注释,修改;日志存放路径
path.logs: /var/log/elasticsearch
#43行;取消注释,修改;不在启动的时候锁定内存
bootstrap.memory_lock: false
#55行;取消注释,修改;提供服务绑定的IP地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
#59行;取消注释;侦听端口为9200(默认)
http.port: 9200
#68行;取消注释,修改;集群发现通过单播实现,指定要发现的节点 node1、node2
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
netstat -antp |grep 9200

在这里插入图片描述

客户机

#查看节点信息
http://192.168.109.12:9200
http://192.168.109.22:9200

在这里插入图片描述

#检验集群健康状态
http://192.168.109.12:9200/_cluster/health?pretty
http://192.168.109.22:9200/_cluster/health?pretty

在这里插入图片描述

#查看集群状态
http://192.168.109.12:9200/_cluster/state?pretty
http://192.168.109.22:9200/_cluster/state?pretty

在这里插入图片描述

3、安装elasticsearch-head插件

Node1
Node2

#编译安装node组件依赖包
yum -y install gcc gcc-c++ make

在这里插入图片描述

#上传软件包 node-v8.2.1.tar.gz 到/opt
cd /opt
tar xzvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure && make && make install
#这里耗时比较长估计20-30分钟

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

#安装phantomjs(前端框架)上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到/opt目录下
cd /opt
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

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

#安装elasticsearch-head(数据可视化工具)
上传软件包 elasticsearch-head.tar.gz 到/opt
cd /opt
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install

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

#修改主配置文件
vim /etc/elasticsearch/elasticsearch.yml
......
#-------末尾;添加以下内容--------
http.cors.enabled: true
http.cors.allow-origin: "*"

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


systemctl restart elasticsearch.service

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

#启动elasticsearch-head,必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。
cd /usr/local/src/elasticsearch-head/
npm run start &

> elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

#elasticsearch-head 监听的端口是 9100
netstat -natp |grep 9100

在这里插入图片描述

客户机

#使用elasticsearch-head插件查看集群状态
http://192.168.109.12:9100
在Elasticsearch 后面的栏目中输入
http://192.168.109.12:9200

http://192.168.109.22:9100
在Elasticsearch 后面的栏目中输入
http://192.168.109.22:9200

在这里插入图片描述

Node1

#创建索引
curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

在这里插入图片描述

客户机

#打开浏览器输入地址,查看索引信息
http://192.168.109.12:9100

在这里插入图片描述

4、安装logstash(收集日志输出到elasticsearch中)

apache

#安装Apahce服务(httpd)
yum -y install httpd
systemctl start httpd

在这里插入图片描述

#安装Java环境
java -version        ###如果没有装 安装yum -y install java

在这里插入图片描述

#安装logstash 上传logstash-5.5.1.rpm到/opt目录下

cd /opt
rpm -ivh logstash-5.5.1.rpm

systemctl start logstash.service
systemctl enable logstash.service

#建立logstash软连接
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

在这里插入图片描述

#测试logstash命令
#定义输入和输出流:输入采用标准输入,输出采用标准输出(类似管道)
logstash -e 'input { stdin{} } output { stdout{} }'

#使用rubydebug显示详细输出,codec为一种编解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'

#使用 Logstash 将信息写入 Elasticsearch 中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.109.12:9200"] } }'
-----------------------------------------------------------------------
字段描述解释:
-f  通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
-e  后面跟着字符串 该字符串可以被当做logstash的配置(如果是” ”,则默认使用stdin做为输入、stdout作为输出)
-t  测试配置文件是否正确,然后退出

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
客户机

#查看索引信息多出 logstash-日期
http://192.168.109.12:9100

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

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

chmod o+r /var/log/messages
ll /var/log/messages

vim /etc/logstash/conf.d/system.conf
input {
       file{
        path => "/var/log/messages"
        type => "system"
        start_position => "beginning"
        }
      }
output {
        elasticsearch {
          hosts => ["192.168.109.12:9200"]
          index => "system-%{+YYYY.MM.dd}"
          }
        }


systemctl restart logstash.service

在这里插入图片描述
在这里插入图片描述
客户机

#查看索引信息多出 system-日期
http://192.168.109.12:9100

在这里插入图片描述

5、安装kibana

node1

上传kibana-5.5.1-x86_64.rpm 到/opt目录
cd /opt
rpm -ivh kibana-5.5.1-x86_64.rpm

cd /etc/kibana/
cp kibana.yml kibana.yml.bak

vim kibana.yml
#2行;取消注释;kibana打开的端口(默认5601)
server.port: 5601
#7行;取消注释,修改;kibana侦听的地址
server.host: "0.0.0.0"
#21行;取消注释,修改;和elasticsearch建立联系
elasticsearch.url: "http://192.168.109.12:9200"
#30行;取消注释;在elasticsearch中添加.kibana索引
kibana.index: ".kibana"              				

systemctl start kibana.service 
systemctl enable kibana.service

在这里插入图片描述
客户机

http://192.168.109.12:5601

首次登录创建一个索引 名字:system-* (这是对接系统日志文件)
然后点最下面的出面的create 按钮创建
在这里插入图片描述
在这里插入图片描述

apache

#对接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 => ["192.168.109.12:9200"]
          index => "apache_access-%{+YYYY.MM.dd}"
        }
    }
    if [type] == "error" {
        elasticsearch {
          hosts => ["192.168.109.12:9200"]
          index => "apache_error-%{+YYYY.MM.dd}"
        }
    }
}

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

在这里插入图片描述
在这里插入图片描述
客户机
浏览器访问 http://192.168.109.12:9100 查看索引是否创建
在这里插入图片描述
打开浏览器 输入http://192.168.109.12:5601
单击“Create Index Pattern”按钮添加索引,在索引名中输入之前配置的 Output 前缀“apache_access”,并单击“Create”按钮。
分别创建apache_error-* 和 apache_access-* 的索引
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值