当前位置: 首页 > 后端技术 > Java

Elasticsearch的分布式日志ELKStack

时间:2023-04-01 22:34:59 Java

@TOCElasticsearch的分布式日志ELKStack:https://blog.csdn.net/weixin_...Elasticsearch官方用户手册:https://www.elastic.co/guide/...Kibana官方使用手册:https://www.elastic.co/guide/...基本介绍什么是分布式日志在分布式应用中,日志是分散存储在不同的设备上的。如果您管理着数十台或数百台服务器,您仍然使用轮流登录每台机器的传统方法查看日志。这样是不是感觉很麻烦,效率很低。所以我们采用集中式日志管理,分布式日志就是对大规模的日志数据进行收集、跟踪、处理。为什么要使用分布式日志一般我们需要进行日志分析的场景:grep和awk直接在日志文件中就可以获取到我们想要的信息。但在大规模场景下,这种方式效率低下,问题包括日志太多如何归档、文本搜索太慢怎么办、多维度查询等。需要集中管理日志,在所有服务器上进行日志收集和聚合。一种常见的解决方案是建立一个集中的日志收集系统,统一收集、管理和访问所有节点上的日志。ELK分布式日志其实ELK是三个软件的简称,分别是Elasticsearch、Logstash、Kibana。Elasticsearch是一个基于java的开源分布式搜索引擎。其特点包括:分布式、零配置、自动发现、索引自动分片、索引复制机制、restful风格接口、多数据源、自动搜索加载等。基于nodejs,Kibana也是一个开源免费的工具。Kibana可以为Logstash和ElasticSearch提供友好的日志分析Web界面,可以对重要的数据日志进行汇总、分析和搜索。Logstash基于java,是一个用于收集、分析和存储日志的开源工具。以下是ELK的工作原理:ElasticSearch简介ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个基于RESTfulWeb界面的分布式多用户全文搜索引擎。Elasticsearch使用Java开发并根据Apache许可条款作为开源发布,是目前流行的企业级搜索引擎。专为云计算设计,可实现实时搜索,稳定可靠,速度快,安装使用方便。我们建立一个网站或一个应用程序,我们想要添加搜索功能,但是创建一个搜索作业非常困难。我们希望我们的搜索解决方案快速,我们希望拥有零配置和完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一个开始,扩展到数百个,我们想要实时搜索,我们想要简单的多租户,我们想要构建一个云解决方案。所以我们使用Elasticsearch来解决所有这些问题以及可能出现的更多问题。ElasticSearch是ElasticStack的核心,Elasticsearch是一个分布式的、RESTful风格的搜索和数据分析引擎,可以解决各种新兴的用例。作为ElasticStack的核心,它集中了您的数据并帮助您发现您期望的和不期望的。下载并选择所需的版本。目前高版本已经需要JDK11支持。我在本地和服务器上使用7.13+JDK1.8。我试过7.15版本,不支持官方下载地址。安装Windows/elasticsearch或bin/elasticsearch.batLinux,解压到对应目录tar-zxvfelasticsearch-7.10.2-linux-x86_64.tar.gz-C/usr/local修改配置cd/usr/local/elasticsearch-7.10.2/config/vimelasticsearch.ymlnode.name:node-1path.data:/usr/local/elasticsearch-7.10.2/datapath.logs:/usr/local/elasticsearch-7.10.2/logsnetwork.host:127.0.0.1http.host:0.0.0.0http.port:9200discovery.seed_hosts:["127.0.0.1"]cluster.initial_master_nodes:["node-1"]创建一个es用户因为ElasticSearch不支持Root用户直接操作,所以我们需要创建一个es用户useraddeschown-Res:es/usr/local/elasticsearch-7.10.2开始切换用户为es用户su-es/usr/local/elasticsearch-7.10.2/bin/elasticsearchbackground启动/usr/local/elasticsearch-7.10.2/bin/elasticsearch-d在浏览器中打开9200端口地址:(http://120.78.129.95:9200/(opensnewwindow)),如果出现如下信息,说明安全设置启动成功修改配置文件修改config目录下的elasticsearch.yml文件,在里面添加如下内容,重启关闭安全设置xpack.security.enabled:false开启安全设置xpack。security.enabled:truexpack.license.self_generated.type:basicxpack.security.transport.ssl.enabled:true设置用户名和密码这里需要分别设置4个用户的密码,elastic,kibana,logstash_system,beats_systemelasticaccount:具有superuser角色,是built-超级用户kibana账户中:拥有kibana_system角色,用户kibana用于与elasticsearch进行连接和通信。Kibana服务器以该用户身份提交访问集群监控API和.kibana索引的请求。无法访问索引。logstash_system帐户:具有logstash_system角色。Elasticsearch中存储监控信息时使用用户Logstash。cmd命令行进入ES安装目录,运行如下命令行。这里隐式设置了用户名和密码,不是因为键盘有问题bin/elasticsearch-setup-passwordsinteractive修改用户名和密码UserTestSuperelasticsearch-usersuseraddTestSuper-rsuperuser--通过界面curl修改密码--H"Content-Type:application/json"-XPOST-uelastic:now_password'http://10.10.17.19:9200/_xpack/security/user/elastic/_password'-d'{"password":"123456"}'windows重装方法未完成,已经崩溃,正在重启。..Logstash简介Logstash是一个开源的服务器端数据处理管道,可以同时从多个来源收集数据,对数据进行转换,然后将数据发送到你喜欢的存储库(我们的存储库当然是ElasticSearch)下载到官网下载:(https://www.elastic.co/cn/downloads/logstash(opensnewwindow))安装解压到对应目录tar-zxvflogstash-7.10.2.tar.gz-C/usr/local添加配置文件cd/usr/local/logstash-7.10.2/binvimlogstash-elasticsearch.confinput{stdin{}}output{elasticsearch{hosts=>'120.78.129.95:9200'}stdout{codec=>ruby??debug}}开始./logstash-flogstash-elasticsearch.confKibana简介Kibana是一个开源的数据分析和可视化平台。它是ElasticStack的成员,旨在与Elasticsearch一起使用。您可以使用Kibana搜索、查看Elasticsearch索引中的数据并与之交互。您可以轻松地使用图表、表格和地图对数据进行多样化的分析和展示。下载需要和es同版本才能从官网下载:(https://www.elastic.co/cn/downloads/kibana(opensnewwindow))安装解压到对应目录tar-zxvfkibana-7.10.2-linux-x86_64.tar.gz-C/usr/localmv/usr/local/kibana-7.10.2-linux-x86_64/usr/local/kibana-7.10.2修改配置cd/usr/local/kibana-7.10.2/configvimkibana.ymlserver.port:5601server.host:"0.0.0.0"elasticsearch.hosts:["http://120.78.129.95:9200"]kibana.index:".kibana"授权esuserchown-Res:es/usr/local/kibana-7.10.2/start切换用户为es用户运行su-es/usr/local/kibana-7.10.2/bin/kibanabackgroundstart/usr/local/kibana-7.10.2/bin/kibana&在浏览器中打开5601端口地址:(http://120.78.129.95:5601/(opensnewwindow)),如果出现如下信息,说明已经切换到中文了已成功启动在config/kibana.yml中添加i18n.locale:"zh-CN"日志采集对应服务器安装logstash,配置规则,例如newlogstash-apache.confinput{file{path=>"/home/ruoyi/logs/sys-*.log"start_position=>beginningsincedb_path=>"/dev/null"codec=>multiline{pattern=>"^\d{4}-\d{2}-\d{2}\d{2}:\d{2}:\d{2}"否定=>真auto_flush_interval=>3what=>previous}}}filter{if[path]=~"info"{mutate{replace=>{type=>"sys-info"}}grok{match=>{"message"=>"%{COMBINEDAPACHELOG}"}}date{match=>["timestamp","dd/MMM/yyyy:HH:mm:ssZ"]}}elseif[path]=~"error"{突变{replace=>{type=>"sys-error"}}}else{mutate{replace=>{type=>"random_logs"}}}}output{elasticsearch{hosts=>'120.78.129.95:9200'}stdout{codec=>ruby??debug}}启动logstash./logstash-flogstash-apache.conf通过kibana可视化获取各个服务的日志数据参考http://doc.ruoyi.vip/ruoyi-cl...