ELKstack搭建微服务日志中心的教程

这篇文章给大家分享的是ELKstack搭建微服务日志中心的教程,相信大部分人都还不知道怎么部署,为了让大家学会,故而给大家总结了以下内容。

从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供网站建设、成都网站建设、网站策划、网页设计、空间域名、虚拟空间、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。

ELK简介

什么是ELK?通俗来讲,ELK是由Elasticsearch、Logstash、Kibana 三个开源软件组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK又称ELKstack,官网 https://www.elastic.co/ , ELK主要优点有如下几个:
1、处理方式灵活:elasticsearch是实时全文索引,具有强大的搜索功能
2、配置相对简单:elasticsearch全部使用JSON接口,logstash使用模块配置,kibana的配置文件部分更简单
3、检索性能高:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应
4、集群线性扩展:elasticsearch和logstash都可以灵活线性扩展
5、前端操作绚丽:kibana的前端设计比较绚丽,而且操作简单

Elasticsearch

elasticsearch是一个高度可扩展全文搜索和分析引擎,基于Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作,可以处理大规模日志数据,比如Nginx、Tomcat、系统日志等功能。

Logstash

数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;支持普通log、自定义json格式的日志解析。

Kibana

数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示。

filebeat

首先 filebeat 不属于 ELK中的组件是为ELK服务的可选组件之一。因为Logstash 有一个致命的问题是它的性能以及资源消耗(默认的堆大小是 1GB)。尽管它的性能在近几年已经有很大提升,与它的替代者们相比还是要慢很多的。作为 Beats 家族的一员,Filebeat 是一个轻量级的日志传输工具,它的存在正弥补了 Logstash 的缺点:Filebeat 作为一个轻量级的日志传输工具可以将日志推送到中心 Logstash。Filebeat 只是一个二进制文件没有任何依赖。它占用资源极少,尽管它还十分年轻,正式因为它简单,所以几乎没有什么可以出错的地方,所以它的可靠性还是很高的。它也为我们提供了很多可以调节的点,例如:它以何种方式搜索新的文件,以及当文件有一段时间没有发生变化时,何时选择关闭文件句柄。

开始部署

系统环境检查

1、因为elasticsearch服务运行需要java环境,所有首先要检查服务器中的 java 环境。推荐jdk版本至少为1.8以上

[root@iZbp136dr1iwajle0r9j83Z soft]# java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

2、创建用户,因为elasticsearch是不能再root账户下运行所以重新创建一个用户

[root@iZbp136dr1iwajle0r9j83Z ~]# useradd elk

3、创建文件夹

[root@iZbp136dr1iwajle0r9j83Z ~]# su - elk  # 切换到 elk 用户
[elk@iZbp136dr1iwajle0r9j83Z ~]$ mkdir soft  # 用来存储原始压缩包文件
[elk@iZbp136dr1iwajle0r9j83Z ~]$ mkdir applications  #  用来存放部署的文件
下载 ELK 文件

下载过程就自行到相关的官网上下载把,注意下载版本最好是能够对应起来的否则会出现一些莫名其妙的问题。

[root@iZbp136dr1iwajle0r9j83Z soft]# ll -l 
total 708484
-rw-rw-r-- 1 app app 290094012 Jan  2 14:31 elasticsearch-7.5.1-linux-x86_64.tar.gz
-rw-rw-r-- 1 app app  24086235 Jan  2 14:26 filebeat-7.5.1-x86_64.rpm
-rw-rw-r-- 1 app app 238481011 Jan  2 13:28 kibana-7.5.1-linux-x86_64.tar.gz
-rw-rw-r-- 1 app app 172809530 Jan  2 13:27 logstash-7.5.1.zip

这是我下载的文件,从文件属性上还是属于 app 用户的。为了方便统一管理现在将这些文件全部转给 elk 用户

[root@iZbp136dr1iwajle0r9j83Z soft]# chown -R elk:elk *
[root@iZbp136dr1iwajle0r9j83Z soft]# ll -l 
total 708484
-rw-rw-r-- 1 elk elk 290094012 Jan  2 14:31 elasticsearch-7.5.1-linux-x86_64.tar.gz
-rw-rw-r-- 1 elk elk  24086235 Jan  2 14:26 filebeat-7.5.1-x86_64.rpm
-rw-rw-r-- 1 elk elk 238481011 Jan  2 13:28 kibana-7.5.1-linux-x86_64.tar.gz
-rw-rw-r-- 1 elk elk 172809530 Jan  2 13:27 logstash-7.5.1.zip

将文件解压到 applications 文件夹中

# 处理 elasticsearch-7.5.1
[elk@iZbp136dr1iwajle0r9j83Z soft]$ tar -zxvf elasticsearch-7.5.1-linux-x86_64.tar.gz
[elk@iZbp136dr1iwajle0r9j83Z soft]$ mv elasticsearch-7.5.1 ../applications/
# 处理 logstatsh-7.5.1.zip
[elk@iZbp136dr1iwajle0r9j83Z soft]$ unzip logstatsh-7.5.1.zip
[elk@iZbp136dr1iwajle0r9j83Z soft]$ mv logstash-7.5.1 ../applications/
# 处理 kibana-7.5.1
[elk@iZbp136dr1iwajle0r9j83Z soft]$ tar -zxvf kibana-7.5.1-linux-x86_64.tar.gz
[elk@iZbp136dr1iwajle0r9j83Z soft]$ mv kibana-7.5.1-linux-x86_64 ../applications/
部署 elasticsearch

修改elasticsearch.yml文件

[elk@iZbp136dr1iwajle0r9j83Z config]$ vim elasticsearch.yml
#集群名称
cluster.name: els
#节点名称
node.name: els-1
#数据存放路径
path.data: /data/els/data
#日志存放路径
path.logs: /data/logs/els/log
#绑定IP地址
network.host: 172.16.240.19
#端口号
http.port: 7008
discovery.seed_hosts: ["172.16.240.19"]
cluster.initial_master_nodes: ["els-1"]
# 允许跨域访问(kibana获取数据时需要开放)
http.cors.enabled: true
http.cors.allow-origin: '*'

创建数据目录

mkdir /data/els
mkdir /data/logs/els

启动 elasticsearch

        [elk@iZbp136dr1iwajle0r9j83Z soft]$ cd /home/elk/applications/elasticsearch-7.5.1/bin/
        [elk@iZbp136dr1iwajle0r9j83Z soft]$ ./elasticsearch

访问elasticsearch_ip:port 看是否启动正常
ELKstack搭建微服务日志中心的教程

部署 kibana

编辑配置文件

cd /home/elk/applications/kibana-7.5.1-linux-x86_64/config
# 修改配置
server.port: 7011
server.host: "0.0.0.0"
server.name: "kibana-server"
elasticsearch.url: "http://172.16.240.19:7008"
kibana.index: ".kibana"
i18n.locale: "zh-CN"

启动 kibana

cd /home/elk/applications/kibana-7.5.1-linux-x86_64/bin
./kibana

访问kibana_ip:port
ELKstack搭建微服务日志中心的教程

部署 logstatsh

由于后期日志数据是通过 filebeat 收集上来的,因此针对 filebeat 单独创建一个配置文件来进行处理

cd /home/elk/logstash-7.5.1/config
vim beat.conf
input {
  # 接收filebeat读取的数据
  beats {
    port => 7110
    codec => "json"
  }
}

output {
  # 输出到es
  elasticsearch {
    hosts => ["172.16.240.19:7008"]
    index => "cloud"
    document_type => "log"
    manage_template => false
  }
}

测试配置文件语法是否正确

cd /home/elk/applications/logstash-7.5.1/bin/
./logstash -f /home/elk/applications/logstash-7.5.1/config/beat.conf -t
Thread.exclusive is deprecated, use Thread::Mutex
Sending Logstash logs to /home/elk/applications/logstash-7.5.1/logs which is now configured via log4j2.properties
[2020-01-02T16:12:12,309][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/home/elk/applications/logstash-7.5.1/data/queue"}
[2020-01-02T16:12:12,461][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.dead_letter_queue", :path=>"/home/elk/applications/logstash-7.5.1/data/dead_letter_queue"}
[2020-01-02T16:12:12,890][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2020-01-02T16:12:14,200][INFO ][org.reflections.Reflections] Reflections took 41 ms to scan 1 urls, producing 20 keys and 40 values 
[2020-01-02T16:12:14,673][WARN ][logstash.outputs.elasticsearch] You are using a deprecated config setting "document_type" set in elasticsearch. Deprecated settings will continue to work, but are scheduled for removal from logstash in the future. Document types are being deprecated in Elasticsearch 6.0, and removed entirely in 7.0. You should avoid this feature If you have any questions about this, please visit the #logstash channel on freenode irc. {:name=>"document_type", :plugin=>"cloud", manage_template=>false, id=>"c864643340e20cc0970e7438081bbe9f8d9e69638b91d662640155c5e847f531", hosts=>[//172.16.240.19:7008], document_type=>"log", enable_metric=>true, codec=>"plain_17e73b8f-bd1b-45ff-84ab-2a41f766a1a0", enable_metric=>true, charset=>"UTF-8">, workers=>1, template_name=>"logstash", template_overwrite=>false, doc_as_upsert=>false, script_type=>"inline", script_lang=>"painless", script_var_name=>"event", scripted_upsert=>false, retry_initial_interval=>2, retry_max_interval=>64, retry_on_conflict=>1, ilm_enabled=>"auto", ilm_rollover_alias=>"logstash", ilm_pattern=>"{now/d}-000001", ilm_policy=>"logstash-policy", action=>"index", ssl_certificate_verification=>true, sniffing=>false, sniffing_delay=>5, timeout=>60, pool_max=>1000, pool_max_per_route=>100, resurrect_delay=>5, validate_after_inactivity=>10000, http_compression=>false>}
Configuration OK
[2020-01-02T16:12:14,709][INFO ][logstash.runner          ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

Configuration OK 则表示配置文件是成功的,接下来启动 logstash 并加载 beat.conf

./logstash -f /home/elk/applications/logstash-7.5.1/config/beat.conf
部署 filebeat

在需要收集日志的主机上安装 filebeat 组件

[root@iZbp14b5r2lytw5nc5z3w2Z filebeat]# pwd
/usr/share/filebeat
[root@iZbp14b5r2lytw5nc5z3w2Z filebeat]# ll -l
total 23524
-rw-r--r-- 1 root root 24086235 Jan  2 16:19 filebeat-7.5.1-x86_64.rpm
[root@iZbp14b5r2lytw5nc5z3w2Z filebeat]# sudo rpm -vi filebeat-7.5.1-x86_64.rpm 
warning: filebeat-7.5.1-x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing packages...
filebeat-7.5.1-1.x86_64

编辑配置修改 /etc/filebeat/filebeat.yml 以设置连接信息:

filebeat.inputs:

# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.

- type: log
  enabled: true
  tags: ["clo***dmin"]
  paths:
    - /logs/S*******/clou***min/**/*.log  

  # 将非时间戳开头的日志信息合并
  multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true
  multiline.match: after

    #----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["172.16.240.19:7112"]
  index: joy######loud

启动 filebeat 服务

cd /usr/share/filebeat/bin
./filebeat -e -c /etc/filebeat/filebeat.yml 

配置 kibana

ELKstack搭建微服务日志中心的教程

配置完成后查看是否有日志收集上来
ELKstack搭建微服务日志中心的教程

可以看到已经有数据上来了。然后再跟看tags值在检索条件中过滤就能过滤出不同服务输出的日志信息了。

上文描述的就是ELKstack搭建微服务日志中心的教程,具体使用情况还需要大家自己动手实验使用过才能领会。如果想了解更多相关内容,欢迎关注创新互联行业资讯频道!


当前名称:ELKstack搭建微服务日志中心的教程
文章出自:http://ybzwz.com/article/gjcsii.html