Elasticsearch+Logstash+Kibana可视化集群部署

文章目录

1.组件介绍简述

  • Elasticsearch:开源实时分布式搜索和分析引擎,支持大规模数据存储和高吞吐量,提供丰富的搜索功能和可扩展性。

  • Logstash:开源数据收集引擎,用于实时收集、转换和传输数据,支持多种数据来源和实时数据处理。

  • Kibana:开源数据可视化工具,用于分析和可视化 Elasticsearch 中的数据,提供直观的界面和工具,支持数据可视化、查询构建和用户权限管理。

2.集群规划

java环境提前安装好

主机名 IP地址 处理器(s) 内存(GB) 组件 版本
test-server02 192.168.40.181 2 4 Elasticsearch、cerebro 7.17.18、0.94
test-server03 192.168.40.182 4 4 Logstash 7.17.18
test-server04 192.168.40.183 2 2 Kibana 7.17.18

3.Es组件部署

Elasticsearch单节点部署

Elasticsearch下载地址

  1. 下载Elasticsearch


  1. 安装Elasticsearch
c 复制代码
#上传部署包
[root@test-server02 opt]# ll /opt/elasticsearch-7.17.18-linux-x86_64.tar.gz
-rw-r--r-- 1 root root 327087494 Feb  8 14:23 /opt/elasticsearch-7.17.18-linux-x86_64.tar.gz

#解压部署包
[root@test-server02 opt]# tar -xf elasticsearch-7.17.18-linux-x86_64.tar.gz

#创建软连接
[root@test-server02 opt]# ln -s /opt/elasticsearch-7.17.18 elasticsearch
  1. 配置Elasticsearch
c 复制代码
[root@test-server02 opt]# cd elasticsearch/config/
[root@test-server02 config]# cat elasticsearch.yml | grep -v '^\s*#' | grep -v '^\s*$'
cluster.name: es-test-cluster
node.name: test-server02
path.data: /opt/elasticsearch/data
path.logs: /opt/elasticsearch/logs
network.host: 192.168.40.181
http.port: 9200
discovery.seed_hosts: ["192.168.40.181"]
cluster.initial_master_nodes: ["test-server02"]
#下面两行新增
node.master: true
node.data: true

#配置介绍
1. cluster.name:集群名称,所有节点必须使用相同的集群名称以便彼此识别和连接。
2. node.name:节点名称,用于标识集群中的每个节点。
3. path.data:数据存储路径,指定Elasticsearch用于存储数据的目录路径。
4. path.logs:日志存储路径,指定Elasticsearch用于存储日志的目录路径。
5. network.host:节点绑定的网络地址,指定Elasticsearch监听的网络地址。
6. http.port:HTTP端口,用于与Elasticsearch进行RESTful API通信的端口号。
7. discovery.seed_hosts:发现种子节点,用于节点发现和集群组建。
8. cluster.initial_master_nodes:初始主节点列表,指定集群中第一批主节点的名称。
9. node.master:指定节点是否可以成为主节点,即负责集群级别操作的节点。
10. node.data:指定节点是否可以存储数据,即节点是否可以作为数据节点存储索引数据。
  1. 创建数据目录和普通用户
c 复制代码
#创建数据目录
[root@test-server02 opt]# mkdir /opt/elasticsearch/data

#新增普通用户
[root@test-server02 opt]# useradd elastic

#修改普通用户密码
[root@test-server02 opt]# passwd elastic
elastic/elastic

#授予普通用户权限
[root@test-server02 opt]# chown -R elastic:elastic elasticsearch*
  1. 修改系统配置
c 复制代码
[root@test-server02 ~]# vim /etc/sysctl.conf
#最下面新增此参数
vm.max_map_count=262144

不修改此参数启动会报错:bootstrap check failure [1] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

意思是:

最大虚拟内存区域 vm.max_map_count [65530] 太低,请至少增加到 [262144]
这个 vm.max_map_count 在没有配置的情况下,默认是 65530,因为默认的比较少,不足以支撑es启动,所以我们需要去配置一下这个参数

  1. 启动Elasticsearch
c 复制代码
[root@test-server02 ~]# su - elastic -c "/opt/elasticsearch/bin/elasticsearch --daemonize --silent"
  1. 安装Cerebro

Elasticsearch的管理工具Cerebro部署

c 复制代码
1.下载部署包

https://github.com/lmenezes/cerebro/releases/download/v0.9.4/cerebro-0.9.4.tgz
#可以通过github下载通过github下载

#百度网盘下载
通过网盘分享的文件:cerebro-0.9.4.tgz
链接: https://pan.baidu.com/s/1Nr81_wTVV9d3FPmfn14XyA 提取码: 1021

2.上传文件
[root@test-server02 opt]# ll cerebro-0.9.4.tgz
-rw-r--r-- 1 root root 57244792 Feb 12 13:37 cerebro-0.9.4.tgz

3.解压部署包
[root@test-server02 opt]# tar -xf cerebro-0.9.4.tgz

4.修改配置
[root@test-server02 opt]# cd cerebro-0.9.4/conf/
[root@test-server02 conf]# vim application.conf
#最下面修改成Es的IP和集群名称
  1. 启动cerebro
c 复制代码
[root@test-server02 cerebro-0.9.4]# nohup /opt/cerebro-0.9.4/bin/cerebro -Dhttp.port=1234 -Dhttp.address=192.168.40.181 &
  1. 访问cerebro页面

IP:1234
Es节点是正常状态


4.Logstash组件部署

Logstash单节点部署

Logstash下载地址

  1. 下载Logstash


  1. 安装Logstash
c 复制代码
#上传部署包
[root@test-server03 opt]# ll logstash-7.17.18-linux-x86_64.tar.gz
-rw-r--r-- 1 root root 364233835 Feb 10 09:04 logstash-7.17.18-linux-x86_64.tar.gz

#解压部署包
[root@test-server03 opt]# tar -xf logstash-7.17.18-linux-x86_64.tar.gz

#创建软连接
[root@test-server03 opt]# ln -s /opt/logstash-7.17.18 logstash
  1. 配置Logstash
c 复制代码
[root@test-server03 opt]# cd logstash/config/
[root@test-server03 config]# cat logstash.yml | grep -v '^\s*#' | grep -v '^\s*$'
node.name: test-logstash-node
path.data: /opt/logstash/data
api.http.host: 192.168.40.182
api.http.port: 9600
path.logs: /opt/logstash/logs

#配置介绍
1.node.name: test-logstash-node:Logstash 实例的节点名称。
2.path.data: /opt/logstash/data:Logstash 存储内部数据的路径。
3.api.http.host: 192.168.40.182:Logstash API 监听的主机 IP 地址。
4.api.http.port: 9600:Logstash API 监听的端口号。
5.path.logs: /opt/logstash/logs:Logstash 日志文件的存储路径。
  1. 创建日志目录和普通用户
c 复制代码
#创建日志目录
[root@test-server03 opt]# mkdir /opt/logstash/logs

#新增普通用户
[root@test-server03 opt]# useradd logstash

#修改普通用户密码
[root@test-server03 opt]# passwd logstash
logstash/logstash

#授予普通用户权限
[root@test-server03 opt]# chown -R logstash.logstash logstash*
  1. 新建Logstash文件
c 复制代码
[root@test-server03 config]# cat logstash.conf
input {
  file {
    path => "/var/log/nginx/access.log"         # Nginx access.log 路径
    start_position => "beginning"                # 从头读取日志
    sincedb_path => "/dev/null"                  # 每次重新读取日志
    codec => "plain"                             # 日志编码格式
  }
}


filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}


output {
  elasticsearch {
    hosts => ["http://192.168.40.181:9200"]      # Elasticsearch 地址
    index => "nginx-logs-%{+YYYY.MM.dd}"         # 索引名称,按日期分割
  }
  stdout { codec => rubydebug }                  # 控制台输出调试信息
}

#根据自己的需求去修改即可。或者通过ai去生成
  1. 赋予其他用户可读文件的权限
c 复制代码
[root@test-server03 opt]# chmod o+r /var/log/nginx/access.log

#由于logstash是普通用户权限,如果不给文件赋予其他用户可读权限,logstash打不开这个文件然后会导致获取数据失败
  1. 启动Logstash
c 复制代码
[root@test-server03 opt]# su logstash
[logstash@test-server03 opt]$ nohup /opt/logstash/bin/logstash -f /opt/logstash/config/logstash.conf > /dev/null 2>&1 &
  1. 测试Logstash状态
c 复制代码
[root@test-server03 opt]# curl -XGET 'http://192.168.40.182:9600/_node/pipelines?pretty'
{
  "host" : "test-server03",
  "version" : "7.17.18",
  "http_address" : "192.168.40.182:9600",
  "id" : "f6df67d3-31c3-4551-98f1-30746b4b8563",
  "name" : "test-logstash-node",
  "ephemeral_id" : "ceac450a-b68a-43df-aefe-0e9b6717ff76",
  "status" : "green",
  "snapshot" : false,
  "pipeline" : {
    "workers" : 8,
    "batch_size" : 125,
    "batch_delay" : 50
  },
  "pipelines" : {
    "main" : {
      "ephemeral_id" : "d60bbfb7-08e6-4a4e-ae42-75b181632638",
      "hash" : "f58943ecfa9938796137f154d88da0c3b41eb40533e353aa6d9d57362a13a3b6",
      "workers" : 8,
      "batch_size" : 125,
      "batch_delay" : 50,
      "config_reload_automatic" : false,
      "config_reload_interval" : 3000000000,
      "dead_letter_queue_enabled" : false
    }
  }
}
  1. 查看Es是否创建了新的索引

出现此问题的原因是:副本分片无法分配的原因是因为副本分片不能和主分片在同一个节点上。此问题可以忽略,生产环境不会出现此问题。

  1. 短暂解决目前问题


状态正常

此时nginx的日志已经进入到了Es集群


5.Kibana组件部署

Kibana下载地址

  1. 下载Kibana
  1. 安装Kibana
c 复制代码
#上传部署包
[root@test-server04 opt]# ll kibana-7.17.18-linux-x86_64.tar.gz
-rw-r--r-- 1 root root 301593515 Feb 11 13:51 kibana-7.17.18-linux-x86_64.tar.gz

#解压部署包
[root@test-server04 opt]# tar -xf kibana-7.17.18-linux-x86_64.tar.gz

#创建软连接
[root@test-server04 opt]# ln -s /opt/kibana-7.17.18-linux-x86_64 kibana
  1. 配置Kibana
c 复制代码
[root@test-server04 kibana]# cd config/
[root@test-server04 config]# cat kibana.yml | grep -v '^\s*#' | grep -v '^\s*$'
server.port: 5601
server.host: "192.168.40.183"
server.name: "test-server04"
elasticsearch.hosts: ["http://192.168.40.181:9200"]
logging.dest: /opt/kibana/logs/kibana.log
logging.verbose: true
i18n.locale: "zh-CN"

#配置介绍
1.server.port:设置 Kibana 的 Web 服务端口(默认为 5601)。
2.server.host:设置 Kibana 监听的 IP 地址,指定机器的 IP 或 localhost。
3.server.name:Kibana 实例的名称,用来标识。
4.elasticsearch.hosts:配置 Kibana 连接的 Elasticsearch 地址。
5.logging.dest:设置 Kibana 的日志文件路径。
6.logging.verbose:开启详细日志(true 为详细,false 为普通)。
7.i18n.locale:设置 Kibana 的语言,zh-CN 为简体中文。
  1. 创建日志目录和普通用户
c 复制代码
#创建日志目录
[root@test-server04 opt]# mkdir kibana/logs

#新增普通用户
[root@test-server04 opt]# useradd kibana

#修改普通用户密码
[root@test-server04 opt]# passwd kibana

#赋予普通用户权限
[root@test-server04 opt]# chown -R kibana.kibana kibana*
  1. 启动Kibana
c 复制代码
su - kibana -c "nohup /opt/kibana/bin/kibana > /dev/null 2>&1 &"

6.Kibana的基础使用

  1. 访问Kibana Web页面

IP:5601

选择Discover

创建索引模式



12号下午两点半产生了8条日志

相关推荐
jianghx10249 小时前
Docker部署ES,开启安全认证并且设置账号密码(已运行中)
安全·elasticsearch·docker·es账号密码设置
IT小哥哥呀10 小时前
电池制造行业数字化实施
大数据·制造·智能制造·数字化·mom·电池·信息化
Xi xi xi10 小时前
苏州唯理科技近期也正式发布了国内首款神经腕带产品
大数据·人工智能·经验分享·科技
yumgpkpm10 小时前
华为鲲鹏 Aarch64 环境下多 Oracle 、mysql数据库汇聚到Cloudera CDP7.3操作指南
大数据·数据库·mysql·华为·oracle·kafka·cloudera
UMI赋能企业11 小时前
制造业流程自动化提升生产力的全面分析
大数据·人工智能
TDengine (老段)12 小时前
TDengine 数学函数 FLOOR 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
派可数据BI可视化14 小时前
商业智能BI 浅谈数据孤岛和数据分析的发展
大数据·数据库·数据仓库·信息可视化·数据挖掘·数据分析
jiedaodezhuti14 小时前
Flink性能调优基石:资源配置与内存优化实践
大数据·flink
Lx35215 小时前
Flink窗口机制详解:如何处理无界数据流
大数据
Lx35216 小时前
深入理解Flink的流处理模型
大数据