博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ELK介绍和集群环境安装
阅读量:4163 次
发布时间:2019-05-26

本文共 4704 字,大约阅读时间需要 15 分钟。

文章目录

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
    安装方式请参考另一篇博客:

Elasticsearch集群安装

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

具体安装步骤参考另一篇博客:

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

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

修改配置:

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

elk01节点

cluster.name: elk-clusternode.name: elk01path.data: /usr/local/elk/elasticsearch/datapath.logs: /usr/local/elk/elasticsearch/logbootstrap.memory_lock: truenetwork.host: 0.0.0.0http.port: 9200discovery.zen.ping.unicast.hosts: ["10.8.206.47", "10.8.206.48"]

elk02节点

cluster.name: elk-clusternode.name: elk02path.data: /usr/local/elk/elasticsearch/datapath.logs: /usr/local/elk/elasticsearch/logbootstrap.memory_lock: truenetwork.host: 0.0.0.0http.port: 9200discovery.zen.ping.unicast.hosts: ["10.8.206.46", "10.8.206.48"]

elk03节点

cluster.name: elk-clusternode.name: elk03path.data: /usr/local/elk/elasticsearch/datapath.logs: /usr/local/elk/elasticsearch/logbootstrap.memory_lock: truenetwork.host: 0.0.0.0http.port: 9200discovery.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/srcwget 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.gzmv kibana-6.4.3-linux-x86_64 /usr/local/elk/

修改配置文件:

vim /usr/local/elk/kibana-6.4.3-linux-x86_64/config/kibana.yml# 连接本机的eselasticsearch.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/srcwget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.3.tar.gz

解压并移动:

tar -zxvf logstash-6.4.3.tar.gzmv logstash-6.4.3 /usr/local/elk/

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

1. 控制台–>控制台

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

cd /usr/local/elk/logstash-6.4.3/binvim 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/binvim 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/binvim 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 参数

在这里插入图片描述

转载地址:http://fzpxi.baihongyu.com/

你可能感兴趣的文章
Observer模式
查看>>
高性能服务器设计
查看>>
图文介绍openLDAP在windows上的安装配置
查看>>
Pentaho BI开源报表系统
查看>>
Pentaho 开发: 在eclipse中构建Pentaho BI Server工程
查看>>
JSP的内置对象及方法
查看>>
android中SharedPreferences的简单例子
查看>>
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>
andorid里关于wifi的分析
查看>>
Spring MVC和Struts2的比较
查看>>
Hibernate和IBatis对比
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Android 的source (需安装 git repo)
查看>>
LOCAL_PRELINK_MODULE和prelink-linux-arm.map
查看>>
Simple Guide to use the gdb tool in Android environment
查看>>
Netconsole to capture the log
查看>>
Build GingerBread on 32 bit machine.
查看>>
How to make SD Card world wide writable
查看>>
Detecting Memory Leaks in Kernel
查看>>
Linux initial RAM disk (initrd) overview
查看>>