怎么用filebeat收集多个域名网站日志并存储到不同es索引库

发布时间:2022-08-23 13:56:40 作者:iii
来源:亿速云 阅读:212

怎么用Filebeat收集多个域名网站日志并存储到不同ES索引库

在现代的Web应用架构中,通常会有多个域名或子域名对应不同的服务或应用。为了有效地监控和分析这些服务的运行状态,我们需要收集这些域名下的网站日志,并将它们存储到不同的Elasticsearch(ES)索引库中。Filebeat是一个轻量级的日志数据收集器,能够高效地将日志数据发送到Elasticsearch、Logstash等目标。本文将详细介绍如何使用Filebeat收集多个域名网站日志,并将这些日志存储到不同的ES索引库中。

1. 环境准备

在开始之前,确保你已经具备以下环境:

假设你已经安装并配置好了Elasticsearch和Kibana,接下来我们将重点介绍如何配置Filebeat来收集多个域名的日志。

2. Filebeat安装与配置

2.1 安装Filebeat

首先,你需要在服务器上安装Filebeat。以下是在Ubuntu系统上安装Filebeat的步骤:

# 下载并安装Filebeat
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.1-amd64.deb
sudo dpkg -i filebeat-7.10.1-amd64.deb

2.2 配置Filebeat

Filebeat的配置文件位于/etc/filebeat/filebeat.yml。我们需要编辑这个文件来配置Filebeat收集多个域名的日志。

2.2.1 配置日志输入

首先,我们需要配置Filebeat的输入部分,指定要收集的日志文件路径。假设我们有两个域名example.comapi.example.com,它们的日志文件分别位于/var/log/nginx/example.com.access.log/var/log/nginx/api.example.com.access.log

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/example.com.access.log
  fields:
    domain: example.com
  fields_under_root: true

- type: log
  enabled: true
  paths:
    - /var/log/nginx/api.example.com.access.log
  fields:
    domain: api.example.com
  fields_under_root: true

在上面的配置中,我们为每个日志文件指定了一个domain字段,这个字段将用于区分不同域名的日志。

2.2.2 配置输出到Elasticsearch

接下来,我们需要配置Filebeat将日志数据发送到Elasticsearch。假设你的Elasticsearch运行在localhost:9200

output.elasticsearch:
  hosts: ["localhost:9200"]
  indices:
    - index: "example-com-%{+yyyy.MM.dd}"
      when.equals:
        domain: "example.com"
    - index: "api-example-com-%{+yyyy.MM.dd}"
      when.equals:
        domain: "api.example.com"

在上面的配置中,我们使用了indices选项来根据domain字段的值将日志数据存储到不同的索引中。example-com-%{+yyyy.MM.dd}api-example-com-%{+yyyy.MM.dd}是索引名称的模板,%{+yyyy.MM.dd}表示按天创建索引。

2.2.3 配置Kibana(可选)

如果你使用Kibana来可视化日志数据,可以配置Filebeat将索引模式发送到Kibana。

setup.kibana:
  host: "localhost:5601"

2.3 启动Filebeat

完成配置后,启动Filebeat服务:

sudo systemctl start filebeat
sudo systemctl enable filebeat

3. 验证配置

3.1 检查Elasticsearch索引

启动Filebeat后,你可以通过Elasticsearch的API来检查是否成功创建了索引。

curl -X GET "localhost:9200/_cat/indices?v"

你应该会看到类似以下的输出:

health status index                   uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   example-com-2023.10.01  abcdef1234567890abcdef 1   1          0            0       208b           208b
green  open   api-example-com-2023.10.01 xyz1234567890abcdef 1   1          0            0       208b           208b

3.2 检查Kibana索引模式(可选)

如果你配置了Kibana,可以在Kibana的“索引模式”页面中查看是否成功创建了索引模式。

4. 高级配置

4.1 使用Logstash进行数据预处理

在某些情况下,你可能需要对日志数据进行预处理,例如解析日志格式、添加额外的字段等。你可以使用Logstash作为中间件来处理日志数据。

4.1.1 配置Logstash

首先,安装并配置Logstash。假设Logstash的配置文件位于/etc/logstash/conf.d/filebeat.conf

input {
  beats {
    port => 5044
  }
}

filter {
  if [domain] == "example.com" {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
  } else if [domain] == "api.example.com" {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "%{[domain]}-%{+yyyy.MM.dd}"
  }
}

在上面的配置中,我们使用grok插件来解析Apache格式的日志,并根据domain字段将日志数据存储到不同的索引中。

4.1.2 配置Filebeat输出到Logstash

修改Filebeat的配置文件,将输出指向Logstash。

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

4.2 使用Ingest Node进行数据预处理

Elasticsearch的Ingest Node功能允许你在数据索引之前对其进行预处理。你可以使用Ingest Node来替代Logstash进行简单的数据处理。

4.2.1 创建Ingest Pipeline

首先,创建一个Ingest Pipeline来处理日志数据。

curl -X PUT "localhost:9200/_ingest/pipeline/nginx-logs" -H 'Content-Type: application/json' -d'
{
  "description": "Pipeline for processing nginx logs",
  "processors": [
    {
      "grok": {
        "field": "message",
        "patterns": ["%{COMBINEDAPACHELOG}"]
      }
    }
  ]
}
'

4.2.2 配置Filebeat使用Ingest Pipeline

修改Filebeat的配置文件,指定使用Ingest Pipeline。

output.elasticsearch:
  hosts: ["localhost:9200"]
  indices:
    - index: "example-com-%{+yyyy.MM.dd}"
      when.equals:
        domain: "example.com"
      pipeline: "nginx-logs"
    - index: "api-example-com-%{+yyyy.MM.dd}"
      when.equals:
        domain: "api.example.com"
      pipeline: "nginx-logs"

5. 总结

通过本文的介绍,你应该已经掌握了如何使用Filebeat收集多个域名网站日志,并将这些日志存储到不同的Elasticsearch索引库中。我们还介绍了如何使用Logstash和Elasticsearch的Ingest Node功能对日志数据进行预处理。这些技术可以帮助你更好地管理和分析多个域名的日志数据,从而提高系统的可观测性和运维效率。

在实际应用中,你可能还需要根据具体的业务需求对配置进行调整和优化。希望本文能为你提供一个良好的起点,帮助你构建一个高效的日志收集和分析系统。

推荐阅读:
  1. Filebeat使用内置的mysql模块收集日志存储到ES集群并使用kibana存储
  2. filebeat日志收集

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

filebeat es

上一篇:vue怎么实现点击复制到粘贴板

下一篇:Java中深拷贝,浅拷贝与引用拷贝的区别是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》