CentOS7.8-Elasticsearch+LogStash+Kibana

目录

一、为什么使用ELK

二、Elk介绍

三、Elasticsearch

四、Linux环境的部署与搭建

4.1 确保系统满足Elasticsearch的最小要求:

4.2 安装Java,Elasticsearch 8.x 需要Java 11或更高版本。可以使用yum安装OpenJDK:

五、安装Elasticsearch

5.1 下载elasticsearch安装包并解压到对应目录

5.2 配置elasticsearch编辑elasticsearch.yml文件

5.3 切换到elasticsearch用户并启动Elasticsearch:

5.4 配置elasticsearch账号密码

5.5 如果遇到问题:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]:

六、安装Logstash

6.1 下载Logstash安装包并解压到对应目录

6.2 修改logstash-sample.conf配置文件如下所示

6.3 运行logstash并指定配置

七、安装Filebeat

7.1 下载Filebeat安装包并解压到对应目录

7.2 修改配置文件

7.4 启动Filebeat

八、安装Kibana

8.1 安装Kibana

8.2 编辑配置文件

8.3 因kibana安全规定不能使用root用户运行,所以必须先创建一个用户

8.4 启动Kibana


一、为什么使用ELK

一般我们需要进行日志分析场景:通常是在Linux服务器上找到日志文件目录,在进行tail等grep操作来筛选查看,操作非常麻烦,尤其是集群环境中,通常需要找到更多文件来分析,效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。此时Elk就是这样的一款日志系统。

二、Elk介绍

ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求 ELK 是 Elasticsearch、Logstash、Kibana的缩写,这三个工具组合在一起,用于数据收集、存储、 搜索和可视化分析,称为“Elastic Stack”(以前称为“ELK stack”)。

它们的角色如下:

  • Elasticsearch:核心搜索和分析引擎,负责存储数据并提供快速的全文搜索和分析功能

  • Logstash:数据收集和处理管道,能够从各种来源(如日志文件、数据库)收集数据,并进行过滤和转换,然后将其发送到Elasticsearch

  • Kibana:数据可视化工具,提供图形界面来展示和分析存储在Elasticsearch中的数据,支持创建各种图表和仪表板

因本次是直接收集log日志文件,并对高并发日志数据进行流量削峰和缓冲,所以额外采用了Filebeat和Kafka两款开源软件 完整架构如下图所示

三、Elasticsearch

Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

有关概念:

  • cluster:代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

  • shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

  • replicas:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

  • recovery:代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

  • river:代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。

  • gateway:代表es索引快照的存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据。es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。

  • discovery.zen:代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。

  • Transport:代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。

四、Linux环境的部署与搭建

4.1 确保系统满足Elasticsearch的最小要求:

  • 至少2G的内存

  • 足够的磁盘空间

  • 支持Java 11或更高版本

4.2 安装Java,Elasticsearch 8.x 需要Java 11或更高版本。可以使用yum安装OpenJDK:

[root@localhost ~]# yum install java-11-openjdk
#配置环境变量
[root@localhost ~]# vim /etc/profile
[root@localhost ~]# export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.24.8-1.oe2403.x86_64
[root@localhost ~]# export PATH=$PATH:$JAVA_HOME/bin
[root@localhost ~]# source /etc/profile
#查看java版本:java -version:
[root@localhost ~]# java -version
openjdk version "11.0.23" 2024-04-16 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.23.0.9-2.el7_9) (build 11.0.23+9-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.23.0.9-2.el7_9) (build 11.0.23+9-LTS, mixed mode, sharing)

五、安装Elasticsearch

5.1 下载elasticsearch安装包并解压到对应目录

官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch
文件名:elasticsearch-8.17.2-linux-x86_64.tar.gz
[root@localhost ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.2-linux-x86_64.tar.gz
[root@localhost ~]# tar -zxvf elasticsearch-8.17.2-linux-x86_64.tar.gz -C /data
#因elasticsearch安全规定不能使用root用户运行,所以必须先创建一个用户
[root@localhost ~]# groupadd elasticsearch
[root@localhost ~]# useradd -g elasticsearch elasticsearch
[root@localhost ~]# passwd elasticsearch
[root@localhost ~]# chown -R elasticsearch elasticsearch-8.17.2

5.2 配置elasticsearch编辑elasticsearch.yml文件

[root@localhost data]# vim elasticsearch-8.17.2/config/elasticsearch.yml
#修改以下配置:**

cluster.name: my-application   #集群名称,多节点名称一致
node.name: node-1    #节点名称
network.host:0.0.0.0   #监听所有网络接口
http.port: 9200   #端口,代表开启http
discovery.seed_hosts: ["192.168.200.101"] #所有节点ip,多个逗号分割
xpack.security.http.ssl:
  enabled: false  #关闭ssl验证,如果是http环境下需要关闭
cluster.initial_master_nodes: ["192.168.200.101"] #参与master选举,多个逗号分割

#设置Elasticsearch使用的内存大小,编辑/etc/security/limits.conf,添加如下:
[root@localhost data]# vim /etc/security/limits.conf
elasticsearch soft nofile 65536
elasticsearch hard nofile 65536
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

#设置Elasticsearch使用的内存大小,视情况而定:
[root@localhost data]# vim elasticsearch-8.17.2/config/jvm.options
-Xms1g
-Xmx1g

5.3 切换到elasticsearch用户并启动Elasticsearch:

[root@localhost elasticsearch]# su elasticsearch
[root@localhost elasticsearch]# ./bin/elasticsearch
[root@localhost elasticsearch]# nohup ./bin/elasticsearch &

5.4 配置elasticsearch账号密码

#Elasticsearch会内置一些用户(elastic, kibana, logstash_system等)运行命令生成这些密码:
[root@localhost elasticsearch]# ./bin/elasticsearch-setup-passwords interactive
[root@localhost elasticsearch]# ./bin/elasticsearch-setup-passwords auto
#假如忘记密码,还可以使用以下命令重置密码:
[root@localhost elasticsearch]# ./bin/elasticsearch-reset-password -u <username>

5.5 如果遇到问题:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]:

#是因为es最大虚拟内存太低导致,切换到root用户修改配置文件sysctl.conf
[root@localhost elasticsearch]# vim /etc/sysctl.conf
# 添加下面配置:
vm.max_map_count=655360
#保存退出,并执行命令:sysctl -p、切换到elasticsearch继续运行一下

六、安装Logstash

Logstash是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中(如Elasticsearch)。

输入:采集各种样式、大小和来源的数据:

数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。

过滤器:实时解析和转换数据: 数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。

Logstash 能够动态地转换和解析数据,不受格式或复杂度的影响:

  • 利用 Grok 从非结构化数据中派生出结构

  • 从 IP 地址破译出地理坐标

  • 将 PII 数据匿名化,完全排除敏感字段

  • 整体处理不受数据源、格式或架构的影响

输出:选择你的存储,导出你的数据:

尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。

6.1 下载Logstash安装包并解压到对应目录

官网下载:https://www.elastic.co/cn/downloads/logstash
logstash-8.17.2-linux-x86_64.tar.gz
[root@localhost ~]# wget https://artifacts.elastic.co/downloads/logstash/logstash-8.17.2-linux-x86_64.tar.gz
[root@localhost ~]# tar -zxvf logstash-8.17.2-linux-x86_64.tar.gz -C /data

6.2 修改logstash-sample.conf配置文件如下所示

[root@localhost ~]# vim /data/logstash-8.17.2/config/logstash-sample.conf

input {
  kafka {
    bootstrap_servers => "192.168.200.101:9092"  # Kafka地址,多个地址用逗号分隔
    topics => ["kafkatopicname"]  # Kafka主题
    group_id => "logstash_group"  # Kafka消费组ID
    consumer_threads => 3  # 线程数
    codec => json # 使用JSON编解码器
  }
}
filter {
  # 在这里可以添加更多的过滤器规则
}
output {
  elasticsearch {
    hosts => ["http://192.168.200.101:9200"]  # Elasticsearch地址
    index => "kafka_index"  # 索引名
    user => "elastic"  # Elasticsearch账号
    password => "kL-hAbsvyXm_Dw5hp=Yu"  # Elasticsearch密码
  }
  stdout { codec => rubydebug }  # 将数据打印到控制台,便于调试
}

#设置logstash使用的内存大小,视情况而定:
[root@localhost ~]# vim /data/logstash-8.17.2/config/jvm.options
-Xms1g
-Xmx1g

6.3 运行logstash并指定配置

[root@localhost ~]# ./bin/logstash -f config/logstash-sample.conf
[root@localhost ~]# nohup ./bin/logstash -f config/logstash-sample.conf &

七、安装Filebeat

Filebeat 是 ELK(Elasticsearch、Logstash、Kibana)堆栈中的一个组件,用于从不同的日志文件位置收集数据并将其发送到Logstash 或者 Elasticsearch进行进一步处理和分析。它的主要角色是作为一个轻量级的日志收集器,专门负责从各种来源(如日志文件、系统日志等)收集日志数据,并将其传输到其他ELK 组件进行处理。

Filebeat 的主要功能和角色包括:

  • 数据收集:Filebeat 可以监视指定的日志文件、日志目录或者其他位置,并实时地收集其中的日志数据。

  • 数据传输:收集到的日志数据被 Filebeat 发送到指定的目标,通常是 Logstash 或者直接发送到 Elasticsearch 进行索引。

  • 轻量级:Filebeat 是一个轻量级的日志收集器,具有低内存消耗和低 CPU 占用的特点,适合于在各种环境中部署和运行。

  • 模块化配置:Filebeat 提供了丰富的模块化配置选项,可以轻松地配置和管理不同类型日志数据的收集和传输。

Filebeat和Beats关系

Beats在是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。

目前Beats包含六种工具:

  • Packetbeat:网络数据(收集网络流量数据)

  • Metricbeat:指标(收集系统、进程和文件系统级别的CPU和内存使用情况等数据)

  • Filebeat:日志文件(收集文件数据)

  • Winlogbeat:windows事件日志(收集Windows事件日志数据)

  • Auditbeat:审计数据(收集审计日志)

  • Heartbeat:运行时间监控(收集系统运行时的数据)

7.1 下载Filebeat安装包并解压到对应目录

官网下载:https://www.elastic.co/cn/downloads/beats/filebeat
文件名:filebeat-8.17.2-linux-x86_64.tar.gz
[root@localhost ~]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.2-linux-x86_64.tar.gz
[root@localhost ~]# tar -zxvf filebeat-8.17.2-linux-x86_64.tar.gz -C /data/

7.2 修改配置文件

[root@localhost ~]# vim filebeat.yml

filebeat.inputs:
- type: log     #类型为日志
  id: my-filestream-id  #唯一的 ID
enabled: true  #启用
paths:
- /var/log/nginx/*.log  #日志文件目录
#-------------------------
output.kafka:
  hosts: ["192.168.200.101:9092"]  #kafka地址,多个逗号分割
  topic: "kafkatopicname"   # 主题名称
  partition.round_robin:
    reachable_only: false
  required_acks: 1
  compression: gzip
  max_message_bytes: 1000000
  preset: balanced

7.4 启动Filebeat

[root@localhost ~]# ./filebeat -e -c filebeat.yml
[root@localhost ~]# nohup ./filebeat -e -c filebeat.yml &

八、安装Kibana

Kibana 是为 Elasticsearch设计的开源分析和可视化平台。你可以使用 Kibana 来搜索,查看存储在Elasticsearch 索引中的数据并与之交互。你可以很容易实现高级的数据分析和可视化,以图表的形式展现出来。

8.1 安装Kibana

官网下载:https://www.elastic.co/cn/downloads/kibana
kibana-8.17.2-linux-x86_64.tar.gz
[root@localhost ~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-8.17.2-linux-x86_64.tar.gz
[root@localhost ~]# tar -zxvf kibana-8.17.2-linux-x86_64.tar.gz -C /data

8.2 编辑配置文件

[root@localhost kibana-8.17.2]# vim config/kibana.yml
server.port: 5601#端口
server.host: "0.0.0.0"#允许任何ip连接
elasticsearch.hosts: ["http://192.168.200.101:9200"]#es地址,多个逗号分割
elasticsearch.username: "kibana_system"#es账号
elasticsearch.password: "84DpQcS2P8ye32P1dWmC"#es密码
i18n.locale: "zh-CN"#简体中文

8.3 因kibana安全规定不能使用root用户运行,所以必须先创建一个用户

[root@localhost kibana-8.17.2]# groupadd elasticsearch #添加用户组
[root@localhost kibana-8.17.2]# useradd -g elasticsearch elasticsearch #添加用户并指定组
[root@localhost kibana-8.17.2]# passwd elasticsearch #设置密码
[root@localhost kibana-8.17.2]# chown -R elasticsearch kibana-8.17.2 #为此用户赋值文件夹权限

8.4 启动Kibana

[root@localhost ~]# su elasticsearch
#前台启动
[elasticsearch@localhost kibana-8.17.2]# ./bin/kibana
#后台启动
[elasticsearch@localhost ~]# nohup ./bin/kibana &

浏览器访问:http://192.168.200.101:5601/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值