ELK介绍和集群环境安装

ELK介绍

介绍

ELK 是elastic公司提供的一套完整的日志收集、展示解决方案,是三个产品的首字母缩写,分别是ElasticSearch、Logstash 和 Kibana,同时加入了 beats 来优化Logstash

ElasticSearch 是一个基于 Lucene 构建的开源,分布式,RESTful 搜索引擎。
Logstash 传输和处理你的日志、事务或其他数据。
Kibana 将 Elasticsearch 的数据分析并渲染为可视化的报表。
Beats 是单一用途的数据传输平台,它可以将多台机器的数据发送到 Logstash 或 ElasticSearch。但 Beats 并不是不可或缺的一环

互联网行业里日志数据非常重要,形式也多种多样。通过日志我们可以计算请求量、流量来源分析、了解用户行为。对于故障排查肯定是希望能够快速的进行日志查询、定位、解决问题,对于实时性要求非常高。

一个完整的集中式日志系统,需要包含以下几个主要特点:

  • 收集-能够采集多种来源的日志数据
  • 传输-能够稳定的把日志数据传输到中央系统
  • 转换— 能够对收集的日志数据进行转换处理
  • 存储-如何存储日志数据
  • 分析-可以支持 UI 分析
  • 告警-能够提供错误报告,监控机制

ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。目前主流的一种日志系统

架构演变

ELK老架构
在这里插入图片描述
用Beats进行采集的架构
在这里插入图片描述
本文不讲述beats,只会对ELK三大组件进行安装使用说明

环境准备

  • CentOS 7
  • ELK版本:6.4.3
  • 三台机器
    elk01、kibana      10.8.206.46
    elk02                    10.8.206.47
    elk03、logstash   10.8.206.48
  • JDK1.8
    安装方式请参考另一篇博客:Linux下OpenJDK安装

Elasticsearch集群安装

每台机器都按照相同步骤安装Elasticsearch,但是先不要启动,因为每台机器的配置不一样,需要单独配置。

具体安装步骤参考另一篇博客:Elasticsearch搜索引擎第二篇-ES单机安装、结合Kibana使用

安装时候,特别要注意的是jvm配置要根据实际机器的内存大小进行配置。

也可以采用先配置好一台,然后将这个elasticsearch打包放到另外两台上,然后再分别修改配置。

修改配置:

vim /usr/local/elk/elasticsearch/elasticsearch-6.4.3/config/elasticsearch.yml

elk01节点

cluster.name: elk-cluster
node.name: elk01
path.data: /usr/local/elk/elasticsearch/data
path.logs: /usr/local/elk/elasticsearch/log
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.8.206.47", "10.8.206.48"]

elk02节点

cluster.name: elk-cluster
node.name: elk02
path.data: /usr/local/elk/elasticsearch/data
path.logs: /usr/local/elk/elasticsearch/log
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.8.206.46", "10.8.206.48"]

elk03节点

cluster.name: elk-cluster
node.name: elk03
path.data: /usr/local/elk/elasticsearch/data
path.logs: /usr/local/elk/elasticsearch/log
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.8.206.46", "10.8.206.47"]

三台机器分别切换到es用户进行启动(启动是可能会报错,基本都是内存、文件描述符的问题,见上面的博客,都有对应解决方案):

su es
/usr/local/elk/elasticsearch/elasticsearch-6.4.3/bin/elasticsearch -d

验证
访问每台机器

http://10.8.206.46:9200/
http://10.8.206.47:9200/
http://10.8.206.48:9200/

获取集群状态

http://10.8.206.46:9200/_cluster/health?pretty

Kibana安装

Kibana主要是用来提供一个ES界面进行可视化查询的,要安装的版本必须和elasticsearch一致!

官网下载对应版本:https://www.elastic.co/downloads/past-releases
或直接在服务器上下载(笔者安装在第一台机器:elk01):

cd /usr/local/src

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.3-linux-x86_64.tar.gz

解压并移动:

tar -zxvf kibana-6.4.3-linux-x86_64.tar.gz

mv kibana-6.4.3-linux-x86_64 /usr/local/elk/

修改配置文件:

vim /usr/local/elk/kibana-6.4.3-linux-x86_64/config/kibana.yml

# 连接本机的es
elasticsearch.url: "http://127.0.0.1:9200"
# kibana对外提供服务的端口
server.port: 5601
# 允许外部所有机器远程连接,默认为localhost,只允许本机连接
server.host: "0.0.0.0"

启动:

#非后台启动
/usr/local/elk/kibana-6.4.3-linux-x86_64/bin/kibana

#后台启动
nohup /usr/local/elk/kibana-6.4.3-linux-x86_64/bin/kibana &

kibana使用流程:

  • 定义index pattern
  • 在discover中查询数据、保存查询
  • 在Visualize中为查询创建可视化的图表
  • 在dashboard中汇总展示多个数据图表
  • 在Timelion中创建时序数据的可视化展示
  • 在management中管理各种保存的对象

kibana官方用户手册:
https://www.elastic.co/guide/cn/kibana/current/index.html

Logstash安装

Logstash主要是用来采集数据的,如果一台机器需要采集数据上传到es,则必须在这台机器上安装Logstash,要安装的版本必须和elasticsearch一致!

官网下载对应版本:https://www.elastic.co/downloads/past-releases
或直接在服务器上下载(笔者安装在第三台机器:elk03):

cd /usr/local/src

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.3.tar.gz

解压并移动:

tar -zxvf logstash-6.4.3.tar.gz

mv logstash-6.4.3 /usr/local/elk/

接下来做如下几个实验进行验证:

1. 控制台–>控制台
测试控制台输入,控制台输出的情况,进入bin/目录创建test_std_std.conf文件

cd /usr/local/elk/logstash-6.4.3/bin
vim test_std_std.conf

# test_std_std.conf内容如下
input {
  stdin {
  }
}

output {
  stdout {
  }
}

启动:

./logstash -f test_std_std.conf

等待一段时间后,输入 hello world,会打印一串内容,如下:
在这里插入图片描述

2. 文件–>控制台
测试文件输入,控制台输出的情况,进入bin/目录创建test_file_std.conf文件

cd /usr/local/elk/logstash-6.4.3/bin
vim test_file_std.conf

# test_file_std.conf内容如下
input {
  file {
    path => "/usr/local/elk/elasticsearch/log/elk-cluster.log"
    start_position => "beginning"
  }
}

output {
  stdout{
    codec => rubydebug
  }
}

启动:

./logstash -f test_file_std.conf

等待一段时间后,会看到日志文件的内容会被逐行打印出来,如下:
在这里插入图片描述
3. 文件–>elasticsearch
测试文件输入,输出到es的情况,进入bin/目录创建test_file_es.conf文件

cd /usr/local/elk/logstash-6.4.3/bin
vim test_file_es.conf

# test_file_es.conf内容如下
input {
  file {
    path => "/usr/local/elk/elasticsearch/log/elk-cluster.log" #读取哪个文件
    start_position => "beginning"  #从文件开始处读写
  }
}

output {
  elasticsearch {
    hosts => ["10.8.206.46:9200"]  #es http地址
    index => "es-test-%{+YYYY.MM.dd}"  #索引名称
  }

  stdout{
    codec => rubydebug
  }
}

启动:

./logstash -f test_file_es.conf

和上一个例子的不同之处是在于output部分要输出到es

至此ELK安装讲解完毕!

常见问题(20191113补)

问题一:多个网卡情况下,如何指定其中某个网卡发布

如果机器有多个网卡,比如安装docker会多出docker0网卡,如下:
在这里插入图片描述
elasticsearch每次启动时都默认选择第一个网卡docker0,是错误的,我想让他指定使用ens33,

解决方法:使用 network.publish_host 参数
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值