Elastic Stack--介绍及架构摆设:ElasticSearch、Kibana、Filebeat的RPM包 ...

打印 上一主题 下一主题

主题 1111|帖子 1111|积分 3333

前言:本博客仅作记载学习利用,部门图片出自网络,如有陵犯您的权益,请联系删除
  学习B站博主教程条记: 
最新版适合自学的ElasticStack全套视频(Elk零基础入门到夺目教程)Linux运维必备—ElasticSearch+Logstash+Kibana精讲_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1VMW3e6Ezk/?spm_id_from=333.1007.tianma.1-1-1.click&vd_source=e539f90574cdb0bc2bc30a8b5cb3fc00


一、Elastic Stack在企业中的常见架构Elastic — The Search AI Company | Elastic

1、架构图


2、Elastic Stack分布式日志系统概述


Elastic Stack,包括(也称ELK Stack)
2.1、ElasticsearcElasticsearch、Kibana、beatsh和Logstashh

简称为ES,ES是一个开源的高扩展的分布式全文搜索引擎,是整个Elastic Stack技术栈的核心。它可以近乎及时的存储、检索数据;自己扩展性很好,可以扩展到上百台服务器,处置惩罚PB级别的数据
2.2、Kibana

是一个免费且开放的用户界面,能够让您对Elasticsearch数据进行可视化,并让您在Elastic Stack中进行导航。可以进行各种操纵,从跟踪查询负载,到明白请求如何流经整个应用,都能轻松完成
2.3、Beats

一个免费且开放的平台,集合了多种单一用途数据收罗器,他们从成百上千或成千上万台机器和系统向Logstash或Elasticsearch发送数据
2.4、Logstash

免费且开放的服务端数据处置惩罚管道,能够从多个泉源收罗数据,转换数据,然后将数据发送到我们的“存储库”中
3、Elastic Stack企业级"EFK"架构图解


   数据流走向:源数据层(nginx,tomcat) ---> 数据收罗层(filebeat) ---> 数据存储层(ElasticSearch)
  4、Elastic Stack企业级"ELK"架构图解


    数据流走向:源数据层(nginx,tomcat) ---> 数据收罗层(Logstash) ---> 数据存储层(ElasticSearch)
  5、Elastic Stack企业级"ELFK"架构图解


   数据流走向:源数据层(nginx,tomcat) ---> 数据收罗层(filebeat) ---> 转换层(Logstash) ---> 数据存储层(ElasticSearch) 
  6、Elastic Stack企业级"ELFK"+"kafka"架构图解


    数据流走向:源数据(nginx,tomcat) ---> 数据收罗(filebeat) ---> 数据缓存层(kafka) --->转换层(Logstash) ---> 数据存储层(ElasticSearch) 
  7、Elastic Stack企业级"FLFK" + "Kafka"架构演变


二、ElasticSearch和Solr的抉择

1、ElasticSearch和Lucene的关系

Lucene的优缺点 :
长处:可以被以为是迄今为止最先辈,性能最好的,功能最全的搜索引擎库(框架)
缺点:


  • 只能再java项目中利用,并且要以jar包的方式直接集成在项目中;
  • 利用很复杂,需要深入了解检索的相干知识来创建索引和搜索索引代码;
  • 不支持集群环境,索引数据不同步(不支持大型项目);
  • 扩展性差,索引库和应用所在同一个服务器,当索引数据过大时,服从逐渐降低;
值得注意的是,上述的Lucene框架中的缺点,ElasticSearch全部都能解决
Elasticsearch是一个及时的分布式搜索和分析引擎。它可以资助你用亘古未有的速度去处置惩罚大规模数据。
ES可以用于全文搜索,结构化搜索以及分析,固然你也可以将这三者进行组合
2、ElasticSearch和Solr如何选择

Solr是Apache Lucene项目的开源企业搜索平台。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本的处置惩罚
Solr是高度可扩展的,并提供了分布式搜索和索引复制。Solr是最流行的企业级搜索引擎

ElasticSearch与Solr的比较:


  • Solr利用zookeeper进行分布式管理,而ES自身带有分布式协调管理功能;
  • Solr支持更多格式(JSON、XML、CSV)的数据,而ES仅支持JSON文件格式;
  • Solr官方提供的功能更多,而ES自己更注意于核心功能,高级功能多有第三方插件提供;
  • Solr在"传统搜索”(已有数据)中表现好于ES,但在处置惩罚“及时搜索"(及时创建索引)应用时服从明显低于ES
  • Solr是传统搜索应用的有力解决方案,但Elasticsearch更实用于新兴的及时搜索应用。
三、集群基础环境初始化

1、准备虚拟机

IP所在主机名CPU配置内存配置磁盘配置脚色阐明10.0.0.2Master2core4G20+ES node10.0.0.3Node12core4G20+ES node10.0.0.4Node22core4G20+ES node
  1.  cat >> /etc/hosts << 'EOF'
  2.  192.168.1.10 master
  3.  192.168.1.11 node1
  4.  192.168.1.12 node2
  5.  EOF
复制代码
2、修改软件源

  1.  wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
复制代码
3、修改sshd服务优化

  1.  sed -ri 's@^#UseDNS yes@UseDNS no@g' /etc/ssh/sshd_config
  2.  sed -ri 's#^GSSAPIAuthentication yes#GSSAPIAuthentication no#g' /etc/ssh/sshd_config
  3.  grep ^UseDNS /etc/ssh/sshd_config
  4.  grep ^GSSAPIAuthentication /etc/ssh/sshd_config
复制代码
4、关闭防火墙

  1.  systemctl disable --now firewalld && systemctl is-enabled firewalld
  2.  systemctl status firewalld
复制代码
5、禁用selinux

  1.  sed -ri 's#(SELINUX=)enforcing#\1disabled#' /etc/selinux/config
  2.  grep ^SELINUX= /etc/selinux/config
  3.  setenforce 0
  4.  getenforce
复制代码
6、配置集群免密登录及同步脚本

  1.  # (1)修改主机列表 cat >> /etc/hosts << 'EOF'
  2.  192.168.1.10 master
  3.  192.168.1.11 node1
  4.  192.168.1.12 node2
  5.  EOF ​ # (2)master节点上生成密钥对 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -q ​ # (3)master配置所有集群节点的免密登录 ssh-copy-id master ssh-copy-id node1 ssh-copy-id node2 ​ # (4)链接测试 ssh 'master' ssh 'node1' ssh 'node2' ​ # (5)为所有节点安装rsync数据同步工具 yum -y install rsync ​ # (6)编写同步脚本 cat > /usr/local/sbin/data_rsync.sh << 'EOF' #!/bin/bash ​ if [ $# -ne 1 ];then     echo "Usage: $0 /path/to/file(绝对路径)"     exit fi ​ # 判断文件是否存在 if [ ! -e $1 ];then     echo "[ $1 ] dir or file not find!"     exit fi ​ # 获取父路径 fullpath=`dirname $1` ​ # 获取子路径 basename=`basename $1` ​ # 进入到父路径 cd $fullpath ​ rsync -az $basename `whoami`@master:$fullpath rsync -az $basename `whoami`@node1:$fullpath rsync -az $basename `whoami`@node2:$fullpath EOF ​ chmod +x /usr/local/sbin/data_rsync.sh
复制代码
7、集群时间同步

  1.  systemctl start chronyd
  2.  systemctl enable chronyd
复制代码
四、ElasticSearch单点摆设

以下在master节点上进行单点摆设操纵:
1、下载指定的ES版本

  1.  官网:https://www.elastic.co/cn/
  2.  下载:https://www.elastic.co/cn/downloads/elasticsearch
  3.  文档:https://www.elastic.co/guide/index.html
  4.  图形化界面地址:https://github.com/mobz/elasticsearch-head
复制代码
  1.  wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.3-x86_64.rpm
复制代码
2、单点摆设elasticsearch

  1.  # (1)安装服务
  2.  yum -y localinstall elasticsearch-7.17.3-x86_64.rpm
  3.  ​
  4.  # (2)启动服务
  5.  systemctl start  elasticsearch.service
  6.  ​
  7.  # (3)查看服务端口;9200为集群外部提供的端口,提供httpd协议;9300为集群内部通信
  8.  [root@master ~]# ss -ntl
  9.  ...
  10.  LISTEN   0      128       [::ffff:127.0.0.1]:9200              [::]:*  
  11.  LISTEN   0      128                    [::1]:9200              [::]:*  
  12.  LISTEN   0      128       [::ffff:127.0.0.1]:9300              [::]:*  
  13.  LISTEN   0      128                    [::1]:9300              [::]:*
  14.  ...
  15.  # (4)修改配置文件,将node1与node2集群加入
  16.  vim /etc/elasticsearch/elasticsearch.yml
  17.  ...
  18.  cluster.name: master-elk   
  19.  node.name: master
  20.  path.data: /var/lib/elasticsearch
  21.  path.logs: /var/log/elasticsearch
  22.  network.host: 0.0.0.0
  23.  discovery.seed_hosts: ["master"]
  24.  ​
  25.  相关参数说明:
  26.      cluster.name:集群名称,若不指定,则默认是"elasticsearch",日志文件的前缀也是集群名称
  27.      node.name:指定节点的名称,可以自定义,推荐使用当前的主机名,要求集群唯一
  28.      path.data:数据路径
  29.      path.logs:日志路径
  30.      network.host:ES服务监听的IP地址
  31.      discovery.seed_hosts:服务发现的主机列表,对于单点部署而言,主机列表和"network.host"字段配置相同即可
  32.     
  33.  # (5)重启服务
  34.  systemctl restart elasticsearch
  35.  ​
  36.  # 查看日志文件:记录了请求过程等
  37.  tail -100f /var/log/elasticsearch/master-elk.log
复制代码
五、ElasticSearch分布式集群摆设

起首在剩下两个节点中同样安装好elasticsearch:
  1.  scp elasticsearch-7.17.3-x86_64.rpm node1:~
  2.  scp elasticsearch-7.17.3-x86_64.rpm node2:~
复制代码
1、master修改配置文件

  1.  vim /etc/elasticsearch/elasticsearch.yml
  2.  ...
  3.  cluster.name: <集群名称>   
  4.  node.name: <节点名称>
  5.  path.data: /var/lib/elasticsearch
  6.  path.logs: /var/log/elasticsearch
  7.  network.host: 0.0.0.0
  8.  discovery.seed_hosts: ["192.168.1.10","192.168.1.11","192.168.1.12"]
  9.  cluster.initial_master_nodes: ["192.168.1.10","192.168.1.11","192.168.1.12"]
复制代码
2、同步配置文件到集群的其他节点

  1.  #(1)运行同步脚本,将配置文件同步到node1与node2节点
  2.  data_rsync.sh /etc/elasticsearch/elasticsearch.yml
  3.  ​
  4.  #(2)同样的在node1与node2修改此配置文件,只需将node.name节点名称修改即可,例如:
  5.  node1中:
  6.  ..
  7.  node.name: node1
  8.  ​
  9.  node中:
  10.  node.name: node2
  11.  ​
  12.  # (3)检查配置文件是否正确:
  13.  egrep -v "^#|^$" /etc/elasticsearch/elasticsearch.yml
复制代码
3、所有节点删除之前的暂时数据

  1.  rm -rf /var/{lib,log}/elasticsearch/* /tmp/*
  2.  ll /var/{lib,log}/elasticsearch/ /tmp/
复制代码
4、所有节点启动服务

  1.  #(1)所有节点启动服务
  2.  systemctl start elasticsearch
  3.  ​
  4.  #(2)启动过程中建议查看日志
  5.  tail -100f /var/log/elasticsearch/master-elk.log
复制代码
5、验证集群是否正常

  1.  [root@master ~]# curl 192.168.1.10:9200/_cat/nodes
  2.  192.168.1.12 34 95 61 2.15 0.61 0.34 cdfhilmrstw - node2
  3.  192.168.1.11 10 94 29 0.92 0.32 0.15 cdfhilmrstw * node1
  4.  192.168.1.10 15 96 37 1.00 0.30 0.14 cdfhilmrstw - master
复制代码
六、摆设Kibana服务

1、本地安装Kibana

  1.  # 再次给出链接搜索下载地址:
  2.  https://www.elastic.co/cn/downloads/past-releases#kibana
复制代码
  1.  # 在任意一节点安装即可,本例在node2节点安装
  2.  wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.3-x86_64.rpm
  3.  yum -y localinstall kibana-7.17.3-x86_64.rpm
复制代码
2、修改kibana的配置文件

  1.  vim /etc/kibana/kibana.yml
  2.  ...
  3.  server.host: 0.0.0.0
  4.  server.name: "elk-server"
  5.  elasticsearch.hosts: ["http://192.168.1.10:9200","http://192.168.1.11:9200","http://192.168.1.12:9200"]
  6.  i18n.locale: "zh-CN"
复制代码
3、启动kibana服务

  1.  systemctl enable --now kibana
  2.  systemctl status kibana
复制代码
4、欣赏器访问:



示例:菜单 ---> 堆栈监测

七、filebeat环境摆设及基础利用

1、摆设filebeat环境

  1.  # 本例部署在node1节点中
  2.  wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.3-x86_64.rpm
  3.  yum -y localinstall filebeat-7.17.3-x86_64.rpm
复制代码
2、修改filebeat的配置文件

监控屏幕标准输入:
  1.  (1)编写测试的配置文件
  2.  mkdir /etc/filebeat/config
  3.  cat > /etc/filebeat/config/01-stdin-to-console.yml << 'EOF'
  4.  filebeat.inputs:    # 指定输入的类型
  5.  - type: stdin       # 指定输入的类型为"stdin",表示标准输入
  6.  output.console:     # 指定输出的类型
  7.    pretty: true      # 打印漂亮的格式
  8.  EOF
  9.  ​
  10.  (2)运行filebeat实例
  11.  filebeat -e -c /etc/filebeat/config/01-stdin-to-console.yml
  12.  ​
  13.  (3)测试
  14.  111                 # 在屏幕上的标准输入
  15.  {
  16.  ...                 # 可以看到收集了相关信息,并且每三十秒检查一次
  17.    "message": "111",
  18.    "input": {
  19.      "type": "stdin"
  20.    },
  21.    "host": {
  22.      "name": "node1"
  23.    }
  24.  }
复制代码
3、Input的log类型

filebeat默认按行收集,只有当文件中输入一行且换行后,才会收集到
监控指定日志文件:
  1.  # (1)编写配置文件
  2.  cat > /etc/filebeat/config/02-log-to-console.yml << 'EOF'
  3.  filebeat.inputs:
  4.  - type: log
  5.    paths:
  6.      - /tmp/test.log
  7.  ​
  8.  output.console:
  9.    pretty: true
  10.  EOF
  11.  ​
  12.  # (2)运行filebeat实例
  13.  filebeat -e -c /etc/filebeat/config/02-log-to-console.yml
  14.  ​
  15.  # (3)测试1
  16.  [root@node1 ~]# echo 111 >> /tmp/test.log
  17.  # 另一个终端查看:
  18.  {
  19.    ...
  20.    "message": "111",     # 收集到了我们/tmp/test.log中的日志
  21.    "input": {
  22.      "type": "log"
  23.    },
  24.    ...
  25.  }
  26.  # 测试2:
  27.  [root@node1 ~]# echo -n 222 >> /tmp/test.log    # 不带换行符追加
  28.  [root@node1 ~]# echo -n 3333 >> /tmp/test.log
  29.  # 另一个终端发现没有收集到
  30.  [root@node1 ~]# echo  >> /tmp/test.log
  31.  # 将换行符追加到日志文件后,再次查看:(收集到日志了)
  32.    },
  33.    "log": {
  34.      "offset": 4,    # 记录文件偏移量,通过此可实现,中断续读
  35.      "file": {
  36.        "path": "/tmp/test.log"
  37.      }
  38.    },
  39.    "message": "2223333"
  40.  }
复制代码
文件记载文件:通过修改文件中的offset偏移量即可规复从offset处重新读取
  1.  [root@node1 ~]# cat /var/lib/filebeat/registry/filebeat/log.json
复制代码
4、Input的通配符案例

配置多个log输入:
  1.  cat > 03-logs-to-console.yml << 'EOF'
  2.  filebeat.inputs:
  3.  - type: log
  4.    paths:
  5.      - /tmp/test.log
  6.      - /tmp/*.txt
  7.  ​
  8.  filebeat.inputs:
  9.  - type: log
  10.    paths:
  11.      - /tmp/test/*/*.log         # 通配符的使用
  12.      
  13.  output.console:
  14.    pretty: true
  15.  EOF
复制代码
5、将数据写入es

  1.  # 编写配置文件
  2.  cat > 05-log-to-es.yml << 'EOF'
  3.  filebeat.inputs:
  4.  - type: log
  5.    enabled: true
  6.    paths:
  7.      - /tmp/test.log
  8.      - /tmp/*.txt
  9.    tags: ["linux","容器运维"]
  10.    fields:
  11.      school: "xx市xx县"
  12.      class: "linux80"
  13.  ​
  14.  - type: log
  15.    enabled: true
  16.    paths:
  17.      - /tmp/test/*/*.log
  18.    tags: ["python","云原生开发"]
  19.    fields:
  20.      name: "boy"
  21.      hobby: "抖音"
  22.    fields_under_root: true
  23.  ​
  24.  output.elasticsearch:
  25.    hosts: ["http://192.168.1.10:9200","http://192.168.1.11:9200","http://192.168.1.12:9200"]
  26.  EOF
  27.  ​
  28.  # 清空之前的配置记录
  29.  rm -rf /var/lib/filebeat/*
  30.  # 运行测试
  31.  filebeat -e -c /etc/filebeat/config/05-log-to-es.yml
复制代码
此时,可以在欣赏器的kibana中看到:"菜单" ---> "Stack Management" ---> "索引管理":

创建一个索引模式:可以根据自己想要查询的收集类型、日期等创建自己的索引;

在"菜单" ---> "Discover"中即可检察到收集到的日志:

其中还可根据字段进行查询;日志以JSON格式检察等等...
固然,再次向日志文件中追加字段监控后,前端页面也会及时的进行更新:

6、自定义es索引名称

编写配置文件
  1.  # 与上一样,省略;追加以下配置
  2.  ...
  3.  ​
  4.  # 禁用索引生命周期管理
  5.  setup.ilm.enabled: false
  6.  # 设置索引模板的名称
  7.  setup.template.name: "cluster-elk"
  8.  # 设置索引模板的匹配模式
  9.  setup.template.pattern: "cluster-elk*"
复制代码
测试:
  1.  rm -rf /var/lib/filebeat/*
  2.  filebeat -e -c /etc/filebeat/config/06-log-to-es.yml
复制代码

7、多个不同的索引写入

编写配置文件:
  1.  output.elasticsearch:
  2.    hosts: ["http://192.168.1.10:9200","http://192.168.1.11:9200","http://192.168.1.12:9200"]
  3.    # index: "cluster-elk-%{+yyyy.MM.dd}"
  4.    indices:
  5.      - index: "cluster-elk-linux-%{+yyyy.MM.dd}"
  6.        # 匹配指定字段包含的内容
  7.        when.contains:
  8.          tags: "linux"
  9.      - index: "cluster-elk-python-%{[+yyyy.MM.dd]}"
  10.        when.contains:
  11.          tags: "python"
  12.  
  13.  # 禁用索引生命周期管理,自定义索引才能生效
  14.  setup.ilm.enabled: false
  15.  # 设置索引模板的名称
  16.  setup.template.name: "cluster-elk"
  17.  # 设置索引模板的匹配模式
  18.  setup.template.pattern: "cluster-elk*"
复制代码
测试:
  1.  rm -rf /var/lib/filebeat/*
  2.  filebeat -e -c /etc/filebeat/config/07-log-to-es.yml
复制代码

8、ES的分片和副本及filebeat配置

整体架构图如下

  1.  ...
  2.  # 禁用索引生命周期管理
  3.  setup.ilm.enabled: false
  4.  # 设置索引模板的名称
  5.  setup.template.name: "cluster-elk"
  6.  # 设置索引模板的匹配模式
  7.  setup.template.pattern: "cluster-elk*"
  8.  # 覆盖已有的索引模板
  9.  setup.template.overwrite: false
  10.  # 配置索引模板
  11.  setup.template.settings:
  12.    index.number_of_shards: 3         # 设置分片数量
  13.    index.number_of_replicas: 0       # 设置副本数量,要求小于集群数量
复制代码
欣赏器可视化界面测试:
  1.  rm -rf /var/lib/filebeat/*
  2.  filebeat -e -c /etc/filebeat/config/08-log-to-es.yml
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

笑看天下无敌手

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表