Elk(日志收集分析工具) 基础知识、部署ElasticSearch集群环境

目录

一、什么是Elk?

ELK分别代表:

Elasticsearch:负责日志检索和存储

Logstash:负责日志的收集分析,处理

Kibana:负责日志的可视化

Filebeat隶属于Beats。

二、Elk可以做什么?

三、ELK架构:

架构一:Elasticsearch + Logstash + Kibana

架构二:Elasticsearch + Logstash + Filebeat + Kibana

架构三:Elasticsearch + Logstash + Filebeat + Kibana + Redis

架构四:Elasticsearch + Fluentd + Filebeat + Kibana

四、Elk的部署之部署ElasticSearch集群环境

(1)ELK安装jdk

(2)部署ElasticSearch集群环境

(3)配置ElasticSearch集群:

(4)安装head插件:

  (5)  安装Bigdesk插件

(6)安装cerebro插件

(7)配置开机自启动

(8)安装:node02和node03节点上elasticsearch的配置  

(9)检查Elasticsearch集群


一、什么是Elk?

ELK是一整套解决方案,是三个软件产品的首字母缩写。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

ELK分别代表:

Elasticsearch:负责日志检索和存储

特点:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash:负责日志的收集分析,处理

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

Kibana:负责日志的可视化

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

Filebeat隶属于Beats

目前Beats包含四种工具:

  1. Packetbeat(搜集网络流量数据)
  2. Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
  3. Filebeat(搜集文件数据)
  4. Winlogbeat(搜集 Windows 事件日志数据)

二、Elk可以做什么?

ELK组件在海量日志系统的运维中,可用于解决:

                                                     1,分布式日志数据集中式查询和管理

                                                     2,系统监控,包含系统硬件和应用各个组件的监控

                                                     3,故障排查

                                                     4,安全信息和事件管理

ELK主要解决:开发人员不能登录线上服务器查看详细日志、各个系统虽都有日志,但日志数据分散难以查找、日志数据量大,查询速度慢,或者数据不够实时等问题。

三、ELK架构:

架构一:Elasticsearch + Logstash + Kibana

通过 logstash 收集日志, elasticsearch 分析日志,然后再 kibana 中展示。

架构二:Elasticsearch + Logstash + Filebeat + Kibana

      增加了 filebeat 模块,它是一个轻量级的日志收集处理工具 (Agent) ,部署在客户
端, Filebeat 占用资源少,适合于在各个服务器上搜集日志后传输给 Logstash ,生产中使用较多,但缺 点是logstash 出现故障,会造成日志丢失。
                 Log  ------  filebeat  -----   Logstash ---------   Elasticsearch  -------  Kibana

架构三:Elasticsearch + Logstash + Filebeat + Kibana + Redis

这种架构,通过增加中间件来避免日志丢失。
                                redis
                                   ||
  Log  ------  filebeat  -----   Logstash ---------   Elasticsearch  -------  Kibana
                                   ||    
                                kafka
基本流程如下:
1 Logstash-Shipper 获取日志信息发送到 redis
2 Redis 在此处的作用是防止 ElasticSearch 服务异常导致丢失日志,提供消息队列的作用
3 logstash 是读取 Redis 中的日志信息发送给 ElasticSearch
4 ElasticSearch 提供日志存储和检索。
5 Kibana ElasticSearch 可视化界面插件。

架构四:Elasticsearch + Fluentd + Filebeat + Kibana

   这种使用了 fluentd 代替了 logstash 。当然,我们也可以使用 Fluentd 的插件( fluent-plugin
elasticsearch )直接将日志发送给 Elasticsearch ,可以根据自己的需要替换掉 Filebeat ,从而形成 Fluentd => ElasticSearch => Kibana 的架构,也称作 EFK

 

四、Elk的部署之部署ElasticSearch集群环境

至少需要三台机器,IP1:192.168.150.15,ip2:192.168.150.16 , ip3:192.168.150.17 ; 内存均在3G之上。

 准备工作:

三台虚拟机均在hosts文件中添加IP地址:

# vim + /etc/hosts
192.168.150.15 elk-node01
192.168.150.16 elk-node02
192.168.150.17 elk-node03

(1)ELK安装jdk

包名:jdk-8u144-linux-x64.rpm 

node01:   xftp上传jdk-8u144-linux-x64.rpm软件包
 查看:#ls 
拷贝到其他两台虚机中:

#scp jdk-8u144-linux-x64.rpm elk-node02:~
yes
输入密码
#scp jdk-8u144-linux-x64.rpm elk-node03:~
yes
输入密码

三台虚拟机均要安装:  #yum install jdk-8u144-linux-x64.rpm

安装完毕后检查: # java -version

(2)部署ElasticSearch集群环境

安装elasticsearch-7.2.0-x86_64.rpm

拷贝到其他两台虚机中:
#scp elasticsearch-7.2.0-x86_64.rpm elk-node02:~
输入密码
#scp elasticsearch-7.2.0-x86_64.rpm elk-node03:~
输入密码

三台虚拟机均要安装elasticsearch包: # yum install elasticsearch-7.2.0-x86_64.rpm

注意:此时不启动服务

(3)配置ElasticSearch集群:

从node01开始备份:
#cd /etc/elasticsearch/
#ls
#cp elasticsearch.yml{,.bak}
更改配置:
#vim elasticsearch.yml

cluster.name: my-elk //集群的节点
node.name: elk-node01  // 集群的名字
path.data: /var/lib/elasticsearch  //集群的存放路径
path.logs: /var/log/elasticsearch //日志存放路径
network.host: 192.168.150.15 //网络,写自己的IP地址
http.port: 9200 //监听的端口
discovery.seed_hosts:["elk-node01", "elk-node02", "elk-node03"] //集群
cluster.initial_master_nodes: ["elk-node01"]  
# 主节点相关配置,加在配置末尾。
node.master: true
node.data: false
node.ingest: false
node.ml: false
cluster.remote.connect: false

(4)安装head插件:

在5.0版本之后不支持直接把插件包放入es安装目录的plugin目录下,需要单独安装。

1>安装环境支持,需要安装nodejs

 # yum install -y nodejs npm
注意此处下载不成功则需要配置扩展源。
扩展源:
#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
配置完扩展源后,再次下载:
# yum install -y nodejs npm

2>下载head插件

 # cd /var/lib/elasticsearch/
此处直接将master.zip压缩包拖进。

3>安装依赖包

1.#yum install openssl bzip2 unzip -y
2.下载运行head必要的文件(放置在文件夹/tmp下):
# cd /tmp
此处直接将phantomjs-2.1.1-linux-x86_64.tar.bz2包拖进。
3.用以下命令把下载到的包添加到npm cache目录中:
# npm cache add phantomjs
4.# cd /var/lib/elasticsearch/
5.解压master.zip:
# unzip master.zip
6.开始安装依赖:
[root@elk-node01 elasticsearch]# cd elasticsearch-head-master/
7.# npm install  //此时临时下载的包都会放在tmp下。

注意:此处会有报错,提示缺少2.2.16的包,不做处理,忽略。

4>修改配置文件 修改Gruntfile.js

#vim  Gruntfile.js
在该文件中添加如下,务必注意不要漏了添加“,”号,这边的hostname:’*’,表示允许所有IP可以访问
options: {
port: 9100,
base: '.',
keepalive: true,
hostname: '*'

5> 修改elasticsearch-head默认连接地址,将localhost改为本机IP  

# vim _site/app.js
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") ||
"http://192.168.150.15:9200";

6>修改elasticsearch的配置文件elasticsearch.yml,以允许跨域访问,在文末追加如下代码即可。

#vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"

 7> 重启elasticsearch.service

#systemctl enable --now elasticsearch.service

8>启动插件

 #cd /var/lib/elasticsearchelasticsearch-head-master/
# nohup ./node_modules/grunt/bin/grunt server &
日志信息:
#tail -f nohup.out

浏览器访问192.168.150.15:9100就能看到我们集群信息  

 (5)  安装Bigdesk插件

1>下载bigdesk-master.zip

上传bigdesk-master.zip并解压
1.进入到绝对路径
# cd /var/lib/elasticsearch/bigdesk-master/_site/
2.用python启动web服务
# nohup python -m SimpleHTTPServer &
此时通过访问web界面来监控我们的集群状态。
http://IP:8000

(6)安装cerebro插件

1>下载cerebro-0.8.3.tgz

1.将cerebro-0.8.3.tgz包拖进去解压
2.解压:# tar xf cerebro-0.8.3.tgz -C /var/lib/elasticsearch
3.#ln -sv cerebro-0.8.3 cerebro

2>启动

# cd /var/lib/elasticsearch/cerebro
# nohup ./bin/cerebro &

3>浏览器访问IP:9000 就能看到数据分片信息。

(7)配置开机自启动

 # vim /etc/rc.d/rc.local 添加以下内容:
cd /var/lib/elasticsearch/elasticsearch-head-master/ && /usr/bin/nohup
./node_modules/grunt/bin/grunt server &
cd /var/lib/elasticsearch/bigdesk/_site && /usr/bin/nohup python -m
SimpleHTTPServer &
cd /var/lib/elasticsearch/cerebro && /usr/bin/nohup ./bin/cerebro &
chmod +x /etc/rc.d/rc.loca

#scp /etc/elasticsearch/elasticsearch.yml elk-node02:/etcelasticsearch/

#scp /etc/elasticsearch/elasticsearch.yml elk-node03:/etcelasticsearch/

最后重启:
#systemctl restart elasticsearch.service
#systemctl enable elasticsearch.service

(8)安装:node02和node03节点上elasticsearch的配置  

 node02:

#vim /etc/elasticsearch/elasticsearch.yml
更改如下:
节点名字:elk-node02
网络IP:192.168.150.16
node.master: false
node.data: true

最后重启:
#systemctl restart elasticsearch.service
#systemctl enable elasticsearch.service

 node03:

#vim /etc/elasticsearch/elasticsearch.yml
更改如下:
节点名字:elk-node03
网络IP:192.168.150.17
node.master: ture
node.data: false

最后重启:
#systemctl restart elasticsearch.service
#systemctl enable elasticsearch.service

(9)检查Elasticsearch集群

1>查看集群状态(任意节点执行)

[root@elk-node01 ~]# curl -XGET '192.168.150.15:9200/_cluster/health?pretty'

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值