企业级日志分析系统——ELK(第二种部署)

本文详细介绍了如何部署企业级ELK(Elasticsearch, Logstash, Kibana)日志分析系统,包括配置Elasticsearch环境,安装Elasticsearch和logstash,设置elasticsearch-head插件,以及在node1主机安装kibana并对接Apache日志,提供了一种集群部署的实践方案。" 109291861,8451141,Spark实现PageRank算法详解,"['Spark', '数据处理', '算法实现', '分布式计算']

方法一:第一种部署方法

1.ELK日志分析系统简介

在这里插入图片描述

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

日志服务器
	提高安全性
	集中存放日志
	缺陷:对日志分析困难
ELK日志分析系统
	Elasticsearch
	Logstash
	Kibana
日志处理步骤
	将日志进行集中化管理
	将日志格式化(Logstash)并输出到(Elasticsearch)
	对格式化后的数据进行索引和存储(Elasticsearch)
	前端数据的展示(Kibana)
  • ElasticSearch

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

  • Logstash

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

  • Kibana

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

2.ELK部署

1.部署环境

配置和安装ELK日志分析系统,安装集群方式,2个elasticsearch节点,1个kibaha节点,监控apache服务器日志。

主机名IP地址主要软件
node1192.168.100.104Elasticsearch + Kibana
node2192.168.100.105Elasticsearch
apache192.168.100.106Logstash+Apache

3.部署Elasticsearch

  • 这里有两个elasticsearch服务器 node1 和 node2 需要配置,IP地址分别是192.168.100.104 和192.168.100.105

2.1配置Elasticsearch环境

  • 更改主机名,配置域名解析,安装环境编译包,查看Java版本
  • node1和node2的配置相同
[root@node1 ~]# hostnamectl set-hostname node1     #更改主机名

[root@node2 ~]# hostnamectl set-hostname node2

[root@node1 ~]#  vi /etc/hosts
192.168.100.131   node1
192.168.100.132   node2

#安装编译包
[root@node1 ~]# yum -y install gcc-c++ gcc make pcre
[root@node1 ~]# yum install -y java-1.8.0
[root@node1 ~]# java -version
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)

node1
在这里插入图片描述

node2

在这里插入图片描述

2.2部署Elasticsearch软件

1、安装elasticsearch—rpm包
上传elasticsearch-5.5.0.rpm到/opt目录下
[root@node1 ~]# cd /opt
[root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm 

2、加载系统服务
[root@node1 opt]# systemctl daemon-reload    
[root@node1 opt]# systemctl enable elasticsearch.service

3、更改elasticsearch主配置文件
[root@node1 opt]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak   #备份配置文件,以防出错无法恢复
[root@node1 opt]#  vi /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                               ####提供服务绑定的IP地址,0.0.0.0代表所有地址
http.port: 9200                                        ####侦听端口为9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]           ####集群发现通过单播实现

[root@node1 opt]#  grep -v "^#" /etc/elasticsearch/elasticsearch.yml

node1

在这里插入图片描述

node2

在这里插入图片描述

4、创建数据存放路径并授权
[root@node1 opt]# mkdir -p /data/elk_data
[root@node1 opt]# chown elasticsearch:elasticsearch /data/elk_data/

5、启动elasticsearch是否成功开启
[root@node1 elasticsearch]# systemctl daemon-reload    #修改了配置文件,要重新加载
[root@node1 elasticsearch]# systemctl start elasticsearch.service
[root@node1 opt]# netstat -antp | grep 9200

6、查看节点信息 用真机的浏览器打开 http://192.168.100.104:9200 显示节点的信息

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

2.3检查集群信息

检查群集健康情况
在真机浏览器192.168.100.1 打开 http://192.168.100.104:9200/_cluster/health?pretty

在这里插入图片描述

2、检查群集状态信息
输入http://192.168.100.104:9200/_cluster/state?pretty

在这里插入图片描述

2.4安装elasticsearch-head插件

上面查看集群的方式不太方便,但是我们可以通过安装 elasticsearch-head 插件后,来管理集群。elasticsearch-head是一个界面化的集群操作和管理工具,可以对集群进行傻瓜式操作。你可以通过插件把它集成到elasticsearch(5.0版本后不支持此方式),也可以安装成一个独立webapp。node1、node2都要安装head插件,步骤相同。

//上传node-v8.2.1.tar.gz到/opt
  编译安装node组件依赖包,耗时比较长,大约30分钟。
[root@localhost opt]# cd /opt
[root@node1 opt]# tar xzvf node-v8.2.1.tar.gz
[root@node1 opt]# cd node-v8.2.1/
[root@node1 node-v8.2.1]# ./configure 
[root@node1 node-v8.2.1]# make -j3    #j3参数指多线程编译,编译速度会大大提高
[root@node1 node-v8.2.1]# make install

// 安装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

###安装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

设置 elasticsearch 跨域访问

[root@localhost ~]# cd ~
[root@localhost ~]# vi /etc/elasticsearch/elasticsearch.yml   ####下面配置文件,插末尾##
http.cors.enabled: true
http.cors.allow-origin: "*"
[root@localhost ~]# systemctl restart elasticsearch

//启动elasticsearch-head 服务器
[root@localhost ~]# cd /usr/local/src/elasticsearch-head/
[root@localhost elasticsearch-head]# npm run start &      ####切换到后台运行

查看9100和9200端口是否开启

[root@node1 ~]# netstat -antp | grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      100180/grunt
[root@node1 ~]# netstat -antp | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      100088/java

2.5使用elasticsearch-head

打开浏览器输入node1和node2的地址查看集群状况。http://192.168.100.104:9100/
http://192.168.100.105:9100/

在这里插入图片描述

在这里插入图片描述

模拟在node1节点命令上创建索引、类型,查看网页版elasticsearch。

[root@node1 ~]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

在这里插入图片描述

下图可以看见索引默认被分片5个,并且有一个副本

在这里插入图片描述

在这里插入图片描述

4.部署logstash服务器

4.1安装logstash

配置环境
更改主机名、关闭防火墙、关闭核心防护
1、更改主机名
hostnamectl set-hostname apache
su

2、关闭防火墙
systemctl stop firewalld
setenforce 0

3、关闭核心防护
sed -i '7s/enforcing/disabled/' /etc/sysconfig/selinux

安装Apahce、logstash
4、安装Apahce服务(httpd)
[root@apache ~]# yum -y install httpd
[root@apache ~]# systemctl start httpd

5、安装Java环境
[root@apache ~]# java -version        ###如果没有装,安装yum -y install java-1.8.0
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)

6、安装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软连接

4.2logstash与elasticsearch对接

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

//使用logstash将信息写入elasticsearch中输入 输出 对接
[root@apache opt]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.100.131:9200"] } }'
。。。。。。。。省略。。。。。。。
The stdin plugin is now waiting for input:
10:40:06.558 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
www.baidu.com                    ###输入内容
www.sina.com.cn                   ###输入内容
www.google.com.cn                ###输入内容

登录宿主机打开浏览器 输入http://192.168.100.104:9100/ 查看索引信息,会多出 logstash-2020.12.24索引。

在这里插入图片描述

点击数据浏览查看响应的内容就是在命令行输入的信息。

在这里插入图片描述

登录192.168.100.106主机,做对接配置

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
[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.100.104:9200"]
          index => "system-%{+YYYY.MM.dd}"
          }
        }

[root@apache opt]# systemctl restart logstash.service

打开浏览器 输入http://192.168.100.104:9100/ 查看索引信息,会多出 system-2020.12.24

在这里插入图片描述

5.在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
server.port: 5601                #### kibana打开的端口
server.host: "0.0.0.0"           ####kibana侦听的地址
elasticsearch.url: "http://192.168.100.104:9200"             ###和elasticsearch建立联系
kibana.index: ".kibana"              ####在elasticsearch中添加.kibana索引
[root@node1 kibana]# systemctl start kibana.service    ###启动kibana服务
[root@node1 kibana]# systemctl enable kibana.service   ###开机启动kibana服务

登录宿主机使用浏览器输入192.168.100.104:5601
首次登录创建一个索引名字:system-* 这是对接系统日志文件
然后点击create即可

在这里插入图片描述

然后点最左上角的Discover按钮,再点下面的 host旁边的add 右面的图中只显示 Time 和host 选项。

在这里插入图片描述

5.1对接Apache主机的Apache 日志文件

[root@apache opt]# cd /etc/logstash/conf.d/
[root@apache conf.d]# touch apache_log.conf
[root@apache conf.d]# vi 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.100.104:9200"]
          index => "apache_access-%{+YYYY.MM.dd}"
          }
        }
        if [type] == "error" {
        elasticsearch {
          hosts => ["192.168.100.104:9200"]
          index => "apache_error-%{+YYYY.MM.dd}"
          }
        }
        }

[root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf

在这里插入图片描述

登录宿主机打开浏览器输入http://192.168.100.106
再次打开浏览器 输入http://192.168.100.104:9100/ 连接,查看索引信息
能发现上面两个

打开浏览器 输入http://192.168.100.104:5601
点击左下角有个management选项-----index patterns----create index pattern----分别创建apache_error-* 和 apache_access-* 的索引

  }
    }

[root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf


[外链图片转存中...(img-KrTodIpz-1608808244410)]

登录宿主机打开浏览器输入http://192.168.100.106
再次打开浏览器 输入http://192.168.100.104:9100/ 连接,查看索引信息
能发现上面两个

打开浏览器 输入http://192.168.100.104:5601
点击左下角有个management选项-----index patterns----create index pattern----分别创建apache_error-* 和 apache_access-* 的索引

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201224191702149.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JveXVzZXI=,size_16,color_FFFFFF,t_70)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值