目录

一、Elasticsearch

1.1、概述

1.2、特点

1.3、应用场景

二、Logstash

作用

三、Filebeat

作用

四、kibana

作用

五、 Elasticsearch安装与配置

六、 logstash安装与配置

七、 nginx、filebeat安装与配置

filebeat配置

八、 Kibana安装与配置

一、Elasticsearch

1.1、概述

es数据库的英文全称为ElsticSearch,是位于Elastic Stack核心的分布式搜索和分析引擎。是一个由Apache开源的高扩展、全文检索和分析引擎(NoSQL数据库功能)的系统,它可以准实地快速存储、搜索、分析海量的数据。

1.2、特点
  • 基于java/lucene构建,支持实时搜索

  • 分布式部署,可横向集群扩展

  • 支持百万级数据

  • 支持多条件查询,如聚合查询

  • 高可用,数据源进行切片备份

  • 支持Restful风格的api调用

1.3、应用场景
  • 监控。对日志类数据进行存储、分析、可视化。对日志数据,ES给出了ELK的解决方案。其中logstash采集日志,ES进行复杂的数据分析,转换你的日志,并将他们存储在es中,kibana进行可视化展示。

  • 线上商城系统,用户需要搜索购物系统网站上的商品信息。es可以存储所有的商品信息和一些库存信息,用户通过搜索引擎可以查询到自己需要的商品信息。

  • json文档数据库。用于存放json格式的文档。

二、Logstash

Logstash是一个开源的数据收集引擎,它具有强大的数据处理能力。主要功能是从多种数据源获取数据,对数据进行转换和过滤,然后将其输出到目标存储或分析系统。

作用

Logstash 是一个数据收集引擎,它可以从多个数据源(如文件、数据库、消息队列等)收集数据,对数据进行转换和过滤,然后将其发送到其他存储或分析工具(如 Elasticsearch)。例如,它可以从各种服务器上的日志文件中收集日志,对日志进行解析,提取出有用的信息(如时间戳、日志级别、消息内容等),还可以对数据进行清洗,去除不需要的信息或者对敏感信息进行脱敏处理。

Logstash的配置文件是基于JSON样式的配置语言编写的,主要由三个部分组成:input(输入)、filter(过滤)和output(输出)。

input部分:

定义了数据的来源。

filter部分:

用于对输入的数据进行处理。

output部分:

确定了数据的输出目标。

三、Filebeat

作用

Filebeat 是一个轻量级的数据收集器,主要用于收集和发送日志文件。它占用资源少,适合在各种服务器上部署,用于实时地将日志数据发送到 Logstash 或 Elasticsearch。与 Logstash 相比,它更专注于日志文件的收集,并且在性能上更适合大量日志的收集场景。例如,在一个拥有大量服务器的企业环境中,Filebeat 可以安装在每台服务器上,负责收集服务器上的各种日志(如系统日志、应用程序日志等),并将其发送到中央的 Logstash 或 Elasticsearch 进行进一步处理。

四、kibana

作用

Kibana 是一个用于数据可视化和探索的工具,它与 Elasticsearch 紧密配合。用户可以通过 Kibana 创建各种可视化图表(如柱状图、折线图、饼图等)和仪表盘,用于直观地展示存储在 Elasticsearch 中的数据。例如,在日志分析场景中,用户可以通过 Kibana 查看日志的分布情况、错误率的变化趋势等;在业务数据分析场景中,可以展示销售数据的增长趋势、用户行为的统计等。

五、 Elasticsearch安装与配置

安装JAVA8

[root@proxy1 ~]# yun install -y java

将elasticsearch软件包拷贝至elk主机执行安装

[root@proxy1 ~]# ls
anaconda-ks.cfg  elasticsearch-7.17.3-x86_64.rpm  kibana-7.17.3-x86_64.rpm
[root@proxy1 ~]# rpm -ivh elasticsearch-7.17.3-x86_64.rpm 

配置elasticsearch

[root@proxy1 ~]# cd /etc/elasticsearch/
[root@proxy1 elasticsearch]# ls
elasticsearch.keystore             elasticsearch.yml  jvm.options.d      role_mapping.yml  users
elasticsearch-plugins.example.yml  jvm.options        log4j2.properties  roles.yml         users_roles
[root@proxy1 elasticsearch]# vim elasticsearch.yml 

cluster.name: es-cluster
node.name: node-1
network.host: 192.168.150.43
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
http.cors.enabled: true
http.cors.allow-origin: "*"

启动elasticsearch服务

[root@proxy1 elasticsearch]# systemctl start elasticsearch.service 

六、 logstash安装与配置

将logstash软件包拷贝至elk主机执行安装

[root@proxy2 ~]# ls
anaconda-ks.cfg  logstash-7.17.3-x86_64.rpm
[root@proxy2 ~]# rpm -ivh logstash-7.17.3-x86_64.rpm 

优化logstash命令

[root@proxy2 ~]# ln -s /usr/share/logstash/bin/logstash /usr/bin/

配置logstash

[root@proxy2 logstash]# vim logstash.yml 
api.http.host: 192.168.150.40
api.http.port: 9600-9700

测试logstash服务的数据传输

##标准输入与输出

[root@proxy2 ~]# logstash  'input{ stdin{} }output { stdout{} }'

[INFO ] 2025-11-05 15:54:00.919 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600, :ssl_enabled=>false}

1
{
      "@version" => "1",
          "host" => "proxy2",
       "message" => "1",
    "@timestamp" => 2025-11-05T07:54:22.058Z
}

##使用rubydebug解码

[root@proxy2 ~]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug }}'

[INFO ] 2025-11-05 15:57:16.574 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600, :ssl_enabled=>false}

##输出到elasticsearch

[root@proxy2 ~]# logstash -e 'input { stdin{} } output { elasticsearch{ hosts=>["192.168.150.43:9200"]} }'

[INFO ] 2025-11-05 15:58:46.401 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600, :ssl_enabled=>false}

查看所有索引

http://192.168.150.43:9200/_cat/indices?v

创建配置文件

   使用tags标签

[root@proxy2 conf.d]# vim webs.conf 
input {
  beats {
    port => 5044
  }
}
output {
  if "web1-access" in [tags] {
          elasticsearch {
                 hosts => ["192.168.150.43:9200"]
                 index => "web1-access-%{+YYYY.MM.dd}"
        }
  }
  if "web1-error" in [tags] {
          elasticsearch {
                 hosts => ["192.168.150.43:9200"]
                 index => "web1-error-%{+YYYY.MM.dd}"
        }
  }
  if "web2-access" in [tags] {
          elasticsearch {
                 hosts => ["192.168.150.43:9200"]
                 index => "web2-access-%{+YYYY.MM.dd}"
        }
  }
  if "web2-error" in [tags] {
          elasticsearch {
                 hosts => ["192.168.150.43:9200"]
                 index => "web2-error-%{+YYYY.MM.dd}"
        }
  }
  stdout {
                codec => rubydebug
  }
}

启动logstash服务

[root@proxy2 conf.d]# logstash -f ./webs.conf
[INFO ] 2025-11-05 18:43:31.162 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600, :ssl_enabled=>false}
[INFO ] 2025-11-05 18:43:36.309 [[main]<beats] Server - Starting server on port: 5044

七、 nginx、filebeat安装与配置

[root@web1 ~]# yum install -y install nginx

[root@web1 ~]# ls
anaconda-ks.cfg  filebeat-7.17.3-x86_64.rpm

[root@web1 ~]# rpm -ivh filebeat-7.17.3-x86_64.rpm 

filebeat配置

filebeat.inputs:
- type: filestream
 enabled: true
paths:
    - /var/log/nginx/access.log
targs: "web1-access"
- type: filestream
  enabled: true
  paths:
    - /var/log/nginx/error.log
  targs: "web1-error"


output.logstash:
hosts: ["192.168.150.40:5044"]

##测试配置文件

[root@web1 filebeat]# filebeat test config
Config OK

启动filebeat

[root@web1 filebeat]# systemctl start filebeat.service 

八、 Kibana安装与配置

将logstash软件包拷贝至elk主机执行安装

[root@proxy1 ~]# rpm -ivh kibana-7.17.3-x86_64.rpm 

配置kibana

server.port: 5601
server.host: "192.168.150.43"
server.name: "proxy1"
elasticsearch.hosts: ["http://192.168.150.43:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"

访问kibana

http://192.168.150.43:5601

创建索引

可视化

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐