EFK实战一 - 基础环境搭建

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 在分布式系统中,由于节点服务会部署多台,一旦出现线上问题需要通过日志分析定位问题就需要登录服务器一台一台进行日志检索,非常不便利,这时候就需要用到EFK日志收集工具。

在应用服务端部署Filebeat,将我们打印到日志文件中的日志发送到Logstash中,在经过Logstash的解析格式化后将日志发送到ElasticSearch中,最后通过Kibana展现出来。EFK基础版的架构如下:


3.png


本文主要是使用docker和docker-Compose部署ELK的基础环境,选择7.5.1作为EFK组件版本。


当然了如果大家对dockerdocker-compose不是很熟悉的话可以翻看我之前为大家准备的两篇文章:



4.png


实在不想使用docker部署的话也可以下载对应的安装包然后手动部署,配置方式基本一样。


安装配置

elasticsearch

安装elasticsearch之前先配置如下的系统变量


  • 修改/etc/sysctl.conf,在最后追加如下配置
    vm.max_map_count = 655360


  • 修改/etc/security/limits.conf,增加如下配置


*softmemlockunlimited*hardmemlockunlimited*hardnofile65536*softnofile65536


  • 修改/etc/security/limits.d/20-nproc.conf,增加如下配置


*softnproc4096rootsoftnprocunlimited


  • 启动elasticsearch临时容器
    docker run --rm --name es -p9200:9200 -p9300:9300 -e discovery.type=single-node elasticsearch:7.5.1


  • 导出elasticsearch配置文件
    docker cp fbce586c8a56:/usr/share/elasticsearch/config/elasticsearch.yml /app/elk/elasticsearch/conf/elasticsearch.yml


  • 修改es配置文件


cluster.name: "elk-cluster"network.host: 0.0.0.0bootstrap.memory_lock: truediscovery.type: single-node


  • 建立es的日志文件夹和数据文件夹,并对文件夹授权


mkdir-p/app/elk/elasticsearch/logsmkdir-p/app/elk/elasticsearch/datachmod-R777/app/elk/elasticsearch/logschmod-R777/app/elk/elasticsearch/data


  • 停止临时容器
    docker stop fbce586c8a56


logstash


  • 启动临时容器
    docker run --rm --name logstash -p5044:5044 -p9600:9600 logstash:7.5.1


  • 导出docker的配置文件
    docker cp 5adb0971bb0f:/usr/share/logstash/config /app/elk/logstash


  • 建立logstash数据文件夹,并对其授权


mkdir-p/app/elk/logstash/datachmod-R777/app/elk/logstash/data


  • 复制logstash启动文件,并对其修改


cd/app/elk/logstash/configcplogstash-sample.conflogstash.conf


修改logstash.conf,配置output


#SampleLogstashconfigurationforcreatingasimple#Beats->Logstash->Elasticsearchpipeline.
input {
beats {
port=>5044  }
}
output {
elasticsearch {
hosts=> ["http://172.31.0.207:9200"]
index=>"%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"#user=>"elastic"#password=>"changeme"  }
}


暂时修改一下ES的访问路径即可。


  • 停止临时容器
    docker stop 5adb0971bb0f


kibana


  • 启动临时容器
    docker run --rm --name kibana -p5601:5601 kibana:7.5.1


  • 导出kibana配置文件
    docker cp f21f0f9e0259:/usr/share/kibana/config/kibana.yml /app/elk/kibana/conf/kibana.yml


  • 修改kibana配置


server.name: kibanaserver.host: "0"elasticsearch.hosts: [ "http://172.31.0.207:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: truei18n.locale: zh-CN


设置i18n.locale: zh-CN属性后会对kibana进行汉化,这样便于操作,主要还是我英语不太好~


  • 停止临时容器
    docker stop f21f0f9e0259


docker-compose


经过上面的准备,我们可以编写docker-compose文件,方便我们对容器进行编排,一键启动。有了之前的基础,我们很容易编写出对应的yml文件,编写后的内容如下:

version: "3"services:
elasticsearch:
image: docker.io/elasticsearch:7.5.1container_name: elasticsearchenvironment:
-"ES_JAVA_OPTS=-Xms4096m -Xmx4096m -Xmn1300m"volumes:
-/app/elk/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml-/app/elk/elasticsearch/data:/usr/share/elasticsearch/data:rw-/app/elk/elasticsearch/logs:/usr/share/elasticsearch/logs:rwports:
-"9200:9200"-"9300:9300"restart: alwayskibana:
image: docker.io/kibana:7.5.1container_name: kibanavolumes:
-/app/elk/kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.ymlports:
-"5601:5601"depends_on:
-elasticsearchrestart: alwayslogstash:
image: logstash:7.5.1container_name: logstashcommand: logstash-f/usr/share/logstash/config/logstash.confvolumes:
-/app/elk/logstash/config:/usr/share/logstash/config-/app/elk/logstash/data:/usr/share/logstash/dataports:
-"9600:9600"-"5044:5044"depends_on:
-elasticsearchrestart: always


将docker-compose文件上传至服务器,启动docker服务

docker-compose -f elk.yml up -d


5.png


启动完成后访问kibana地址http://172.31.0.207:5601/验证是否正常访问


安全认证


我们刚刚部署的elk环境是不需要密码就可以登录kibana的,这样谁都可以访问而且可以更改数据。所以我们需要给kibana加个密码,必须要登录才可以进行操作。


主要是利用elasticsearch自带的xpack作为权限验证功能。操作步骤如下:


  • 修改es外部配置文件/app/elk/elasticsearch/conf/elasticsearch.yml,开启权限验证


xpack.security.enabled: true


  • 重启elasticsearch服务
    docker-compose -f elk.yml restart elasticsearch


  • 进入es容器,为内置账号设置密码


dockerexec-itelasticsearch/bin/bashcd/usr/share/elasticsearch/bin./elasticsearch-setup-passwordsinteractive


1.png


  • 修改kibana配置文件/app/elk/kibana/conf/kibana.yml


elasticsearch.username: "elastic"elasticsearch.password: "xxxxxx"


  • 重启kibana
    docker-compose -f elk.yml restart kibana


  • 重新访问kibana,并使用上面设置的elastic账号进行登录
    2.png
    至此我们顺利给ELK加上了安全认证,可以放心在生产环境部署使用了!
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
1月前
|
存储 NoSQL Redis
KubeSphere 核心实战之二【在kubesphere平台上部署redis】(实操篇 2/4)
KubeSphere 核心实战之二【在kubesphere平台上部署redis】(实操篇 2/4)
51 0
|
6月前
|
域名解析 存储 Kubernetes
kubernets学习 -环境搭建
kubernets学习 -环境搭建
|
10月前
|
Java Shell API
|
12月前
|
监控 安全 数据安全/隐私保护
EFK实战一 - 基础环境搭建
EFK实战一 - 基础环境搭建
222 1
EFK实战一 - 基础环境搭建
|
12月前
|
JSON 监控 搜索推荐
ELK服务搭建学习
ELK服务搭建学习
121 0
|
运维 Kubernetes 应用服务中间件
k8s 基础&环境搭建
k8s 基础&环境搭建
170 0
k8s 基础&环境搭建
|
消息中间件 数据采集 监控
EFK搭建笔记
因为工作需要需要搭一个日志分析系统,本来打算直接搭 ELK,看了下文档也咨询了下同事,觉得 ELK 可以不过,可能需要改下,使用 EFK 的方式,也就是 es + kafka + kibana 的方式,首先将 数据收到 kafka,在送到es。日志收集工具使用 vector,这个工具也可以将数据从 kafka 送到es。前提就是这么多,开干!
211 0
|
NoSQL Redis
手把手教你搭建ELK-新手必看-第六章:搭建filebeat
手把手教你搭建ELK-新手必看-第六章:搭建filebeat
148 0
手把手教你搭建ELK-新手必看-第六章:搭建filebeat
|
Docker 容器
手把手教你搭建ELK-新手必看-第三章:搭建kibana
手把手教你搭建ELK-新手必看-第三章:搭建kibana
124 0
手把手教你搭建ELK-新手必看-第三章:搭建kibana
|
数据可视化 数据挖掘 定位技术
不得不学!从零到一搭建ELK日志,在Docker环境下部署 Kibana 可视化工具
最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。

热门文章

最新文章