ELK日志实时监控

目录

一、ELK/EFK简介

1.1 什么是ELK/EFK?

1.2 常见架构 

1、Elasticsearch + Logstash + Kibana

2、Elasticsearch + Logstash + Filebeat + Kibana

3、Elasticsearch + Logstash + Filebeat + Kibana + Redis

4、Elasticsearch + Fluentd + Filebeat + Kibana

1.3 基本流程

二、ELK部署

2.1 环境准备

2.2 部署ElasticSearch集群环境

2.2.1 安装Elasticsearch

2.2.2 配置Elasticsearch集群

2.2.3 检查Elasticsearch集群

2.3 部署Redis+Keepalived高可用环境 

 2.4 部署Kibana及nginx代理访问环境

三、ELK日志收集

3.1 客户机日志收集操作(Logstash)

 3.1.1 logstash 介绍

3.1.2 安装logstash

3.1.3 logStash配置语法 

3.1.4 logstash插件  

3.2 客户机日志收集操作(Filebeat)

3.2.1 安装 Filebeat

3.2.2 配置 Filebeat


一、ELK/EFK简介

1.1 什么是ELK/EFK?

ELK 是三个开源软件的缩写,分别表示: Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat ,它是一个轻量级的日志收集处理工具 (Agent) Filebeat 占用资源少,适合于在各个服务器上搜集日志后传输给Logstash ,官方也推荐此工具。
Elasticsearch 是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s 架构, client 端安装在需要收集日志的主机上, server 端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch 上去。
Kibana 也是一个开源和免费的工具, Kibana 可以为 Logstash ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
ELK EFK:
        由于logstash 内存占用较大,灵活性相对没那么好, ELK 正在被 EFK 逐步替代 . 其中本文所讲的 EFK 是Elasticsearch+Fluentd+Kafka。
        Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch Fluentd Kibana EFK )技术栈,也是官方现在比较推荐的一种方案。
        Fluentd是一个收集日志文件的开源软件,目前提供数百个插件可用于存储大数据用于日志搜索,数据分析和存储。
Fluentd 适用于以下场景。
        收集多台服务器的访问日志进行可视化
        在AWS 等云端使用 AutoScaling 时把日志文件收集至 S3( 需要安装插件 )
        收集客户端的信息并输出至Message Queue ,供其他应用处理

1.2 常见架构 

1Elasticsearch + Logstash + Kibana

        这是一种简单架构。这种架构,通过logstash 收集日志, elasticsearch 分析日志,然后再 kibana 中展示,生产中很少使用。

2Elasticsearch + Logstash + Filebeat + Kibana

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

3Elasticsearch + Logstash + Filebeat + Kibana + Redis

这种架构,通过增加中间件来避免日志丢失。 

4Elasticsearch + Fluentd + Filebeat + Kibana

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

1.3 基本流程

下面以第三种架构为例,基本流程如下:

1 Logstash-Shipper 获取日志信息发送到 redis
2 Redis 在此处的作用是防止 ElasticSearch 服务异常导致丢失日志,提供消息队列的作用。
3 logstash 是读取 Redis 中的日志信息发送给 ElasticSearch
4 ElasticSearch 提供日志存储和检索。
5 Kibana ElasticSearch 可视化界面插件。

二、ELK部署

2.1 环境准备

主机名 IP地址 角色
 
elk-node01 192.168.186.161 es01,redis01
elk-node02 192.168.186.162 es02,redis02(vip:192.168.186.100)
elk-node03 192.168.186.163 es03,kibana,nginx

1、设置主机名和hosts解析

[root@elk-node01 ~]# cat >> /etc/hosts << EOF
192.168.186.161 elk-node01
192.168.186.162 elk-node02
192.168.186.163 elk-node03
EOF

cat >> /etc/hosts << EOF
 192.168.186.161 elk-node01
 192.168.186.162 elk-node02
 192.168.186.163 elk-node03
EOF

[root@elk-node01 ~]# tail -3 /etc/hosts 
192.168.186.161 elk-node01
192.168.186.162 elk-node02
192.168.186.163 elk-node03

2、时间同步

3、部署jdk

三台机器都部署jdk,建议内存3G以上

[root@elk-node01 ~]# rpm -ivh jdk-8u261-linux-x64.rpm 

[root@elk-node01 ~]# java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

2.2 部署ElasticSearch集群环境

2.2.1 安装Elasticsearch

三台机器都部署

使用清华镜像源,本文安装7.2.0

# vim /etc/yum.repos.d/elk.repo
[elk]
name=elk 7.x
baseurl=https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/
gpgcheck=0

安装:# yum install -y elasticsearch-7.2.0

2.2.2 配置Elasticsearch集群

elk-node01节点的配置

root@elk-node01 ~]# grep '^[a-Z]' /etc/elasticsearch/elasticsearch.yml
cluster.name: elk-node01
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 192.168.186.161
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

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

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

[root@elk-node01 ~]# yum install -y nodejs npm

2>下载head插件

[root@elk-node01 elasticsearch]# cd /var/lib/elasticsearch/

[root@elk-node01 elasticsearch]#  wget https://github.com/mobz/elasticsearch-head/archive/master.zip

3>安装依赖包

[root@elk-node01 elasticsearch]# yum install openssl bzip2 unzip -y

下载运行head必要的文件(放置在文件夹/tmp下)

[root@elk-node01 elasticsearch]# cd /tmp
[root@elk-node01 tmp]# wget https://npm.taobao.org/mirrors/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2

用以下命令把下载到的包添加到npm cache目录中

\# npm cache add phantomjs

执行npm install,它便会使用本地缓存的xxx.tgz,而跳过下载过程。

npm安装卡时可以打开info level的log,命令如下

#npm config set loglevel info



解压master.zip

\# unzip master.zip

开始安装依赖:

[root@elk-node01 elasticsearch]# cd elasticsearch-head-master/

\# npm install



\# 直接使用npm安装时间久,依赖网络,替换为淘宝的cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

\# 安装依赖

cnpm install
4> 修改配置文件
修改 Gruntfile.js
在该文件中添加如下,务必注意不要漏了添加“,”号,这边的hostname:’*’,表示允许所有IP可以访问
options: {
port: 9100,
base: '.',
keepalive: true,
hostname: '*'
}
修改elasticsearch-head默认连接地址,将localhost改为本机IP
# vim _site/app.js
this.base_uri = this.config.base_uri || this.prefs.get( "app-base_uri" ) ||
"http://192.168.186.161:9200" ;

 5>修改elasticSearch配置文件并启动ElasticSearch

修改 elasticsearch 的配置文件 elasticsearch.yml ,以允许跨域访问,在文末追加如下代码即可
[root@elk-node01 elasticsearch]# vim elasticsearch.yml

重启:

[root@elk-node01 elasticsearch]# systemctl restart elasticsearch

启动插件:
# cd /var/lib/elasticsearch/elasticsearch-head-master/
# nohup ./node_modules/grunt/bin/grunt server &

访问IP:9100就能看到我们集群信息  

安装Bigdesk插件

 1>下载

# cd /var/lib/elasticsearch/
# yum install git -y
# git clone https://github.com/hlstudio/bigdesk

2>启动web服务器,默认监听端口号8000,指定启动端口,并后台启动  

# cd /var/lib/elasticsearch/bigdesk/_site
# nohup python -m SimpleHTTPServer &
此时通过访问 web 界面来监控我们的集群状态。
http://IP:8000

 

安装cerebro插件

 1>下载cerebro插件:

git 项目: https://github.com/lmenezes/cerebro/releases
# wget https://github.com/lmenezes/cerebro/releases/download/v0.8.3/cerebro- 0.8.3.tgz

2>上传到安装目录、解压:

 # tar xf cerebro-0.8.3.tgz -C /var/lib/elasticsearch

# ln -s /var/lib/elasticsearch/cerebro-0.8.3 /var/lib/elasticsearch/cerebro

3>启动cerebro

 # cd /var/lib/elasticsearch/cereb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值