ElasticSearch性感体验

作者简介
陈刚,高效运维社区资深 DevOps 专家

本来,文章的题目命名《ELK—-感性体验》,但五笔输入法一过脑,打字时,感性就变性感了。这样也好,算是有点噱头。
ELK 是 Elasticsearch、Logstash、Kibana 三大开源框架首字母大写简称。市面上也被称为 Elastic Stack。

ELK 提供了一整套日志采集,存储,可视化的解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。在本文中,ELK也包含了采集日志的Filebeat。

  • Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。

  • Kibana也是一个开源和免费的工具,Kibana可以为Logstash和ElasticSearch提供的日志分析友好的Web界面,可以帮助汇总、分析和搜索重要数据日志。

  • Logstash主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。

    一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往Elasticsearch上去。

  • Filebeat是本地文件的日志数据采集器。作为服务器上的代理安装,Filebeat监视日志目录或特定日志文件,并将它们转发给Logstash、Kafka等。

本篇,主要讲解以docker方式,快速在win10的VirtualBox的一个虚拟机里,部署起ELK组件(Elasticsearch,Kibana)。
然后,使用 Filebeat和Logstash采集数据,使读者对ELK的运行流程有个直观感性的体验。后续,如果读者有需要,我会再深入到Kafka等组件与ELK的组合使用。

环境配置

环境项

配置项

虚拟机IP 192.168.1.215
Docker版本 20.10.6
ElasticSearch镜像 elasticsearch: 7.6.0
Kibana镜像 kibana: 7.6.0

Docker 安装

1、更新国内yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup//rm -rf /etc/yum.repos.d/*wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.reposed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repoyum makecache

2、加入 docker 的 repo 源,更新为国内仓库

wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.reposed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
3、安装依赖软件
yum install -y yum-utils device-mapper-persistent-data lvm2

4、查询并安装最新 docker 版本

yum list docker-ce --showduplicates | sort -ryum install docker-ce-20.10.6
5、加入国内 docker 镜像仓库

/etc/docker/daemon.json 内容如下:

{         'registry-mirrors' : [           'https://mirror.ccs.tencentyun.com',           'http://registry.docker-cn.com',           'http://docker.mirrors.ustc.edu.cn',           'http://hub-mirror.c.163.com'         ]}

6、启动 docker 服务

systemctl restart docker.service

Elasticsearch安装

1、运行如下命令,启动一个 Elasticsearch(简称ES)单节点实例。
docker run -d --name elasticsearch \-p 9200:9200 -p 9300:9300 \-v /etc/localtime:/etc/localtime:ro \-v /etc/timezone:/etc/timezone:ro \-v /opt/elasticsearch/data:/usr/share/elasticsearch/data \-v /opt/elasticsearch/logs:/usr/share/elasticsearch/logs \-e 'discovery.type=single-node' \elasticsearch:7.6.0
可以看到,在运行 docker 时,我们将相关端口打开,挂载了宿主机的目录,时区文件,传递了ES的启动参数。这样操作之后,后面才不会出现网络上常见的8小时时间差的问题。

2、浏览器访问 192.168.1.215:9200,出现如下界面,表示 ES 成功运行。

Kibana安装

1、运行如下命令,启动一个 Kibana 实例。

docker run -d  --name kibana \-p 5601:5601  \-e ELASTICSEARCH_HOSTS=http://192.168.1.215:9200 \-v /etc/localtime:/etc/localtime:ro \-v /etc/timezone:/etc/timezone:ro \kibana:7.6.0

同样的,在运行 docker 版本 kibana 时,也将宿主机的时区挂载到了容器里,且配置了kibana 连接的 ES 地址为上面我们安装过的地址。

2、访问 http://192.168.1.215:5601,出现如下界面,表示Kibana成功运行。

Logstash安装

1、下载

访问 https://elasticsearch.cn/download/,找到合适操作系统的 rpm 文件进行下载。此次测试的文件名为 logstash-7.6.0.rpm。

2、安装(如果还没有安装JDK,需要提前安装)

rpm -ivh jdk-8u281-linux-x64.rpmrpm -ivh logstash-7.6.0.rpm

3、配置
新增 /etc/logstash/conf.d/logstash-es.conf 文件内容如下:

input { beats { port => 5044 }}output { elasticsearch { hosts => ['192.168.1.215:9200'] index => 'elk_logs' }}
这个 Logstash 的配置文件极简,只作 Demo 演示用。Input 段表示输入端来自 Filebeat,启动 5044 端口进行监听和采集数据的接收。Output 段表示会将采集到的数据,发送到 ES 服务器中,生成的索引名称为 elk_logs。

4、运行

/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-es.conf

输出如下,表示运行成功。

Filebeat安装

1、下载

访问 https://elasticsearch.cn/download/,找到合适操作系统的 rpm 文件进行下载。此次测试的文件名为 filebeat-7.6.0-x86_64.rpm。

2、安装

rpm -ivh filebeat-7.6.0-x86_64.rpm

3、配置

/etc/filebeat/filebeat.yml 文件内容,更新如下:

#=========================== Filebeat inputs =============================
filebeat.inputs:- type: log enabled: true paths: - /var/log/elk.log#----------------------------- Logstash output --------------------------------output.logstash: # The Logstash hosts hosts: ['192.168.1.215:5044']

这里,也是一个 Filebeat 的极简配置,表示我们要采集的日志文件为 /var/log/elk.log,采集到的内容,将就发送到 192.168.1.215:5044,这样,我们就将 Filebeat 和上一节配置的 Logstash 串起来了。

4、运行

filebeat -e -c /etc/filebeat/filebeat.yml

输出如下,表示运行成功。

ELK串连测试

1、模拟向日志文件中写入数据。

[root@localhost ~]# echo 'you arme me uuuuuuuu============456==uuu' >> /var/log/elk.log [root@localhost ~]# echo 'you arme me uuuuuuuu============456==uuu' >> /var/log/elk.log [root@localhost ~]# echo 'you arme me uuuuuuuu============731==uuu' >> /var/log/elk.log

2、Kibana 中定义 ES 中的索引。

3、Kibana 中显示日志记录。

相关推荐:

Elasticsearch 数据迁移与容灾实践,看这一篇就够了!

“高效运维”公众号诚邀广大技术人员投稿,

(0)

相关推荐