ElasticSearch性感体验
作者简介
陈刚,高效运维社区资深 DevOps 专家
ELK 提供了一整套日志采集,存储,可视化的解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。在本文中,ELK也包含了采集日志的Filebeat。
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。
Kibana也是一个开源和免费的工具,Kibana可以为Logstash和ElasticSearch提供的日志分析友好的Web界面,可以帮助汇总、分析和搜索重要数据日志。
Logstash主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。
一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往Elasticsearch上去。
Filebeat是本地文件的日志数据采集器。作为服务器上的代理安装,Filebeat监视日志目录或特定日志文件,并将它们转发给Logstash、Kafka等。
环境配置
环境项 |
配置项 |
虚拟机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.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
yum makecache
2、加入 docker 的 repo 源,更新为国内仓库
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -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 -r
yum install docker-ce-20.10.6
/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安装
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
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、下载
2、安装(如果还没有安装JDK,需要提前安装)
rpm -ivh jdk-8u281-linux-x64.rpm
rpm -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'
}
}
4、运行
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-es.conf
输出如下,表示运行成功。
Filebeat安装
访问 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 中显示日志记录。
相关推荐: