关于java:Elasticsearch之分布式日志ELK-Stack

30次阅读

共计 4794 个字符,预计需要花费 12 分钟才能阅读完成。

@TOC

Elasticsearch 之分布式日志 ELK Stack:https://blog.csdn.net/weixin_…

Elasticsearch 官网用户手册:https://www.elastic.co/guide/…

Kibana 官网用户手册:https://www.elastic.co/guide/…

根本介绍

  • 什么是分布式日志

在分布式应用中,日志被扩散在贮存不同的设施上。如果你治理数十上百台服务器,你还在应用顺次登录每台机器的传统办法查阅日志。这样是不是感觉很繁琐和效率低下。所以咱们应用集中化的日志治理,分布式日志就是对大规模日志数据进行采集、追踪、解决。

  • 为什么要应用分布式日志

个别咱们须要进行日志剖析场景:间接在日志文件中 grepawk 就能够取得本人想要的信息。但在规模较大的场景中,此办法效率低下,面临问题包含日志量太大如何归档、文本搜寻太慢怎么办、如何多维度查问。须要集中化的日志治理,所有服务器上的日志收集汇总。常见解决思路是建设集中式日志收集零碎,将所有节点上的日志对立收集,治理,拜访。

  • ELK 分布式日志

实际上 ELK 是三款软件的简称,别离是 ElasticsearchLogstashKibana 组成。

Elasticsearch 基于 java,是个开源分布式搜索引擎,它的特点有:分布式,零配置,主动发现,索引主动分片,索引正本机制,restful 格调接口,多数据源,主动搜寻负载等。

Kibana 基于 nodejs,也是一个开源和收费的工具,Kibana 能够为 LogstashElasticSearch提供的日志剖析敌对的 Web 界面,能够汇总、剖析和搜寻重要数据日志。

Logstash 基于java,是一个开源的用于收集, 剖析和存储日志的工具。

上面是 ELK 的工作原理:

ElasticSearch

简介

ElasticSearch 是一个基于 Lucene 的搜寻服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码公布,是以后风行的企业级搜索引擎。设计用于云计算中,可能达到实时搜寻,稳固,牢靠,疾速,装置使用方便。

咱们建设一个网站或应用程序,并要增加搜寻性能,然而想要实现搜寻工作的创立是十分艰难的。咱们心愿搜寻解决方案要运行速度快,咱们心愿能有一个零配置和一个完全免费的搜寻模式,咱们心愿可能简略地应用 JSON 通过 HTTP 来索引数据,咱们心愿咱们的搜寻服务器始终可用,咱们心愿可能从一台开始并扩大到数百台,咱们要实时搜寻,咱们要简略的多租户,咱们心愿建设一个云的解决方案。因而咱们利用 Elasticsearch 来解决所有这些问题及可能呈现的更多其它问题。

ElasticSearch 是 Elastic Stack 的外围,同时 Elasticsearch 是一个分布式、RESTful 格调的搜寻和数据分析引擎,可能解决不断涌现出的各种用例。作为 Elastic Stack 的外围,它集中存储您的数据,帮忙您发现意料之中以及意料之外的状况。

下载

抉择须要的版本,目前高版本的曾经须要 JDK11 反对

我本地和服务器上都是应用 7.13 + JDK 1.8 , 试了 7.15 版本不反对

官网下载地址

装置

Windows

/elasticsearch 
或者
bin/elasticsearch.bat

Linux

  • 解压到相应目录
tar -zxvf elasticsearch-7.10.2-linux-x86_64.tar.gz -C /usr/local
  • 批改配置
cd /usr/local/elasticsearch-7.10.2/config/
vim elasticsearch.yml
node.name: node-1
path.data: /usr/local/elasticsearch-7.10.2/data
path.logs: /usr/local/elasticsearch-7.10.2/logs
network.host: 127.0.0.1
http.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]
  • 创立 es 用户 因为 ElasticSearch 不反对 Root 用户间接操作,因而咱们须要创立一个 es 用户
useradd es
chown -R es:es /usr/local/elasticsearch-7.10.2

启动

  • 切换用户成 es 用户进行操作
su - es
/usr/local/elasticsearch-7.10.2/bin/elasticsearch
  • 后盾启动
/usr/local/elasticsearch-7.10.2/bin/elasticsearch -d 

在浏览器关上 9200 端口地址:(http://120.78.129.95:9200/ (opens new window)),如果呈现了上面的信息,就示意曾经胜利启动了

平安设置

批改配置文件

批改 config 目录上面的 elasticsearch.yml 文件,在外面增加如下内容, 并重启

敞开平安设置

xpack.security.enabled: false

开启平安设置

xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

设置用户名和明码

这里须要为 4 个用户别离设置明码,elastic, kibana, logstash_system,beats_system

elastic 账号:领有 superuser 角色,是内置的超级用户。
kibana 账号:领有 kibana_system 角色,用户 kibana 用来连贯 elasticsearch 并与之通信。Kibana 服务器以该用户身份提交申请以拜访集群监督 API 和 .kibana 索引。不能拜访 index。
logstash_system 账号:领有 logstash_system 角色。用户 Logstash 在 Elasticsearch 中存储监控信息时应用。

cmd 命令行进入 ES 装置目录,运行上面的命令行

这里在设置用户名和明码的时候都是隐式的设置,并非键盘有问题

bin/elasticsearch-setup-passwords interactive

批改用户名和明码

Linux 服务器

-- 创立超级用户 TestSuper
elasticsearch-users useradd TestSuper -r superuser
-- 通过接口更改明码
 curl -H "Content-Type:application/json" -XPOST -u elastic: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 (opens new window))

装置

  • 解压到相应目录
tar -zxvf logstash-7.10.2.tar.gz -C /usr/local
  • 新增配置文件
cd /usr/local/logstash-7.10.2/bin
vim logstash-elasticsearch.conf
input {stdin {}
}
output {
    elasticsearch {hosts => '120.78.129.95:9200'}
    stdout {codec => rubydebug}
}

启动

./logstash -f logstash-elasticsearch.conf

Kibana

简介

Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 合作。您能够应用 Kibana 对 Elasticsearch 索引中的数据进行搜寻、查看、交互操作。您能够很不便的利用图表、表格及地图对数据进行多元化的剖析和出现。

下载

须要和 es 同一个版本

到官网下载:(https://www.elastic.co/cn/downloads/kibana (opens new window))

装置

  • 解压到相应目录
tar -zxvf kibana-7.10.2-linux-x86_64.tar.gz -C /usr/local
mv /usr/local/kibana-7.10.2-linux-x86_64 /usr/local/kibana-7.10.2
  • 批改配置
cd /usr/local/kibana-7.10.2/config
vim kibana.yml
server.port: 5601 
server.host: "0.0.0.0" 
elasticsearch.hosts: ["http://120.78.129.95:9200"] 
kibana.index: ".kibana"
  • 受权 es 用户
chown -R es:es /usr/local/kibana-7.10.2/

启动

  • 切换用户成 es 用户进行操作
su - es
/usr/local/kibana-7.10.2/bin/kibana 
  • 后盾启动
/usr/local/kibana-7.10.2/bin/kibana &

在浏览器关上 5601 端口地址:(http://120.78.129.95:5601/ (opens new window)),如果呈现了上面的信息,就示意曾经胜利启动了

切换中文

config/kibana.yml 增加

i18n.locale: "zh-CN"

日志收集

对应服务器装置logstash,配置规定,例如新建logstash-apache.conf

input {
  file {
    path => "/home/ruoyi/logs/sys-*.log"
    start_position => beginning
    sincedb_path => "/dev/null"
    codec => multiline {pattern => "^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}"
      negate => true
      auto_flush_interval => 3
      what => previous
    }
  }
}

filter {if [path] =~ "info" {mutate { replace => { type => "sys-info"} }
    grok {match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    date {match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z"]
    }
  } else if [path] =~ "error" {mutate { replace => { type => "sys-error"} }
  } else {mutate { replace => { type => "random_logs"} }
  }
}

output {
  elasticsearch {hosts => '120.78.129.95:9200'}
  stdout {codec => rubydebug}
}
  • 启动 logstash
./logstash -f logstash-apache.conf
  • 通过 kibana 可视化检索各个服务日志数据

参考

  • http://doc.ruoyi.vip/ruoyi-cl…

正文完
 0