从零学习ELK

本文介绍了ELK(Elasticsearch、Logstash、Kibana)分布式搜索引擎。阐述了各组件功能,如Elasticsearch存储数据、Kibana可视化数据、Logstash处理数据。还说明了各组件安装过程、集群配置、可视化操作等,展示了它们协同工作提供分布式搜索和数据可视化的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 ElK是Elasticsearch、Logstash、 Kibana的缩写,了解这个分布式搜索引擎就要从这三个组件学起。来看看官网的介绍:

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

 

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

 

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

 

一、Elasticsearch、Kibana、Beats的安装过程参照官网:https://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-elastic-stack.html

 

二、Elasticsearch 集群

    1、集群配置

# ---------------------------------- Cluster -----------------------------------
# 集群名称
cluster.name: elasticsearch-cluster
# 节点名称
node.name: node-
# ip配置
network.host: 0.0.0.0
# 端口配置
http.port: 9200
# 服务发现:es 服务器ip集合
discovery.seed_hosts: ["192.168.1.106","192.168.1.107","192.168.1.108"]
# 初始化主节点名称
cluster.initial_master_nodes: ["node-106"]

    2、Elasticsearch-Head查看集群状态

 3、Elasticsearch 根据集群名称,通过服务发现获取所有的Elasticsearch服务器节点,并将其加入集群,当主节点宕机,会重新选举新的master节点。(注意遇到节点无法加入集群是注意以下两个问题:1、不要复制节点文件目录到其他集群,复制的节点目录无法加入主节点 2、删除一下data 重新启动就可以了 3、es5之后的都不能使用添加启动参数或者修改配置文件等方法启动了,必须要创建用户,创建elasticsearch文件夹)

 

二、Kibana可视化图形界面,通过elasticsearch的Api,把数据展示在前端界面上。

    1、下载安装kibana

# 下载
curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-7.9.3-darwin-x86_64.tar.gz
# 解压
tar xzvf kibana-7.9.3-darwin-x86_64.tar.gz
cd kibana-7.9.3-darwin-x86_64/
#修改配置文件conf/kibana.yml中的elasticsearch 的ip地址
# The URLs of the Elasticsearch instances to use for all your queries.
elasticsearch.hosts: ["http://192.168.106.116:9200","http://192.168.106.116:9201"]
# 启动
./bin/kibana

    2、访问查看:http://192.168.106.116:5601/

 

三、Beats 是轻量级的数据收集器,数据进过处理后直接输送到elasticsearch或者Logstash,beats种类很多,可以通过官网查看

  1、Metricbeat、Filebeat,这两个数据收集器前者是收集系统磁盘、内存、CPU等参数,后者是收集服务器日志(Apache、Nginx、mysql等),看下安装过程

# 1、Metricbeat安装过程
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.9.3-linux-x86_64.tar.gz
tar xzvf metricbeat-7.9.3-linux-x86_64.tar.gz

#将module添加到system
./metricbeat modules enable system

#Set up the initial environment
./metricbeat setup -e

#修改metricbeat.yml文件
host: "192.168.106.116:5601"
output.elasticsearch:
  hosts: ["192.168.106.116:9200","192.168.106.116:9201"]

#Start Metricbeat
./metricbeat -e

# 2、Filebeat安装过程
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.9.3-linux-x86_64.tar.gz
tar xzvf filebeat-7.9.3-linux-x86_64.tar.gz

#确定需要启用的模块
./filebeat modules list

# 修改filebeat.yml文件中elasticsearch和kibana的服务器地址
host: "192.168.106.116:5601"
output.elasticsearch:
  hosts: ["192.168.106.116:9200","192.168.106.116:9201"]
  
# 修改modules.d/apache.yml
- module: apache
  # Access logs
  access:
    enabled: true
    var.paths: ["/zyspace/java-project/phoenix-archive/debug/debug-*.log","/zyspace/java-project/phoenix-archive/debug/info-*.log"]

  # Error logs
  error:
    enabled: true
    var.paths: ["/zyspace/java-project/phoenix-archive/error/error-*.log"]


#添加相关模块
./filebeat modules enable apache

#Set up assets
./filebeat setup -e

# 启动
sudo chown root filebeat.yml 
sudo chown root modules.d/system.yml sudo 
./filebeat -e

    2、访问查看效果:http://192.168.106.116:5601/app/observability,可以很清楚看到相关日志以及服务器的相关信息,我不需要在到服务器上查看相关的log日志了。

四、Logstast是一个接收,处理,转发日志的工具

 

1、部署一个java web 应用,然后通过Nginx转发获得网站流量日志。Nginx配置如下

     location /phoenix-archive/ {
         proxy_pass http://192.168.106.116:9909/phoenix-archive/;
     }

 2、filebeat 收集日志发送到logstash,logstash配置如下:

#配置filebeat.yml文件
filebeat.inputs:
  paths:
    - /var/log/*.log
    - /usr/local/nginx/logs/access.log
    
output.logstash:
  hosts: ["192.168.106.116:5044"]
  
  
#启动filebeat
nohup ./filebeat -e &

  3、logstash配置。主要是输入和输出,输入input有file,stdin,http,beats等等,可以同时使用多个,我们使用beat和file;output是输出地址,主要是输出到elasticsearch。

#配置logstash.yml中elasticsearch的服务地址
xpack.monitoring.elasticsearch.hosts: ["http://192.168.106.116:9200"]
xpack.management.elasticsearch.hosts: ["http://192.168.106.116:9200"]

#修改logstash-sample.yml
input {
  beats {
    port => 5044
  }
  file {
     path => "/usr/local/nginx/logs/access.log"
   }
}

output {
  stdout {
        codec => rubydebug
  }
  elasticsearch {
    hosts => ["http://192.168.106.116:9200", "http://192.168.106.116:9201"]
    index => "logstash-nginx-log-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}
#启动logstash
nohup  ./bin/logstash -f config/logstash-sample.conf &

  4、kibana中可视化

        4.1 在Management=>Stack Monitoring可以查看logstash的日志监控信息

 

      在点击pipelines可以看到beats和file

 

        4.2 在ManageMent=>Stack ManageMent中查看索引信息

 

        4.3 日志信息收集完了,就需要穿件索引策略,用于后面穿件可视化组件,在Stack ManagerMent=》

 index pattern中穿件索引策略。

 

    4.4 在kibana=>discovery中查看日志信息,可以看到日志已经很清楚的汇聚成了柱状图

 

    4.5 在kibana=》visualize中穿件可视化组件,方便以后查看

 

    4.6 在kibana=》DashBoard中把刚才穿件的视图添加到Dashboard中。

 

    至此也算简单的学习了ELK中的重要组件,他们之间相互协同工作,为我们提供分布式的搜索引擎,数据可视化,里面还有很多东西值得去深究,比如logstash对日志的加强处理(Filter plugins各种插件)。

 

文章详情点击:http://www.xiaoyuge.com.cn/#/article/detail?articleId=74

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值