编辑
2024-12-23
ELK
00

目录

Filebeat 上传日志到 ELK
在 Windows 上安装 Filebeat 的步骤如下:
1. 下载 Filebeat
2. 解压文件
3. 配置 Filebeat
4. 安装 Filebeat 服务
使用 PowerShell 安装 Filebeat 服务
7. 停止和卸载 Filebeat 服务
8. 其他注意事项
9. Windows Filebeat filebeat.yml 示例
1. Filebeat 输入
2. Filebeat 模块
3. Elasticsearch 模板设置
4. Kibana 设置
5. 输出设置
6. 处理器
7. Xpack 监控设置
8. 日志设置
总结
Ubuntu 使用 tar.gz 包安装 Filebeat 步骤
1. 下载并解压 Filebeat
2. 配置 Filebeat
3. 运行 Filebeat
方法 1:使用 nohup
方法 2:使用系统服务(推荐)
使用 systemctl 启动的 Filebeat 服务的日志可以通过 journalctl 命令来查看。以下是查看 Filebeat 日志的步骤:
1. 查看 Filebeat 日志
2. 查看特定时间范围的日志
3. 查看最近的日志条目
4. 过滤日志
5. 查看所有日志

Filebeat 上传日志到 ELK

安装

在 Windows 上安装 Filebeat 的步骤如下:

1. 下载 Filebeat

  1. 访问 Elastic 官网的下载页面。https://www.elastic.co/downloads/beats/filebeat
  2. 找到适用于 Windows 的 Filebeat 版本,点击下载。

2. 解压文件

  1. 下载完成后,找到压缩文件(通常是 .zip 格式)。
  2. 右键点击压缩文件,选择“解压缩到当前文件夹”或使用其他解压工具解压。
  3. 解压后,您会看到一个名为 filebeat-<version>-windows 的文件夹。

3. 配置 Filebeat

  1. 进入解压后的文件夹。
  2. 找到 filebeat.yml 配置文件。可以使用文本编辑器(如 Notepad++ 或 Visual Studio Code)打开它。
  3. 根据您的需求修改配置文件,例如添加日志输入路径、输出设置等。您可以参考文档最后的配置示例。

4. 安装 Filebeat 服务

在 Windows 上,您可以将 Filebeat 作为服务运行。请按照以下步骤进行:

使用 PowerShell 安装 Filebeat 服务

  1. 打开 PowerShell(以管理员身份运行): 在 Windows 搜索框中输入 PowerShell,右键点击 "Windows PowerShell",选择 "以管理员身份运行"。
  2. 导航到 Filebeat 的安装目录: 使用 cd 命令导航到解压后的 Filebeat 文件夹。例如:
    powershell
    cd "C:\Program Files\Filebeat\filebeat-<version>-windows"
  3. 运行 PowerShell 脚本以安装 Filebeat 服务:
    powershell
    .\install-service-filebeat.ps1
  4. 启动 Filebeat 服务:
    powershell
    Start-Service filebeat
  5. 检查 Filebeat 服务的状态:
    powershell
    Get-Service filebeat

5. 启动 Filebeat 服务

  1. 在同一命令提示符窗口中,运行以下命令以启动 Filebeat 服务:
    powershell
    Start-Service filebeat
  2. 您可以使用以下命令检查服务是否正在运行:
    powershell
    Get-Service filebeat

6. 验证 Filebeat 是否运行

  1. 您可以查看 Filebeat 的日志文件以确认其是否正常运行。日志文件通常位于 C:\Program Files\Filebeat\logs 目录下。
  2. 也可以在 Elasticsearch 中检查数据是否成功写入,使用 Kibana 或直接通过 Elasticsearch 的 API。

7. 停止和卸载 Filebeat 服务

如果需要停止 Filebeat 服务,可以运行:

powershell
Stop-Service filebeat

如果需要卸载 Filebeat 服务,可以运行:

powershell
.\uninstall-service-filebeat.bat

8. 其他注意事项

  • 确保您的 Windows 防火墙或其他安全软件允许 Filebeat 访问网络,尤其是连接到 Elasticsearch 的端口(通常是 9200)。
  • 如果使用的是 Elasticsearch 的安全功能,确保在 Filebeat 的配置中正确设置了用户名和密码。

通过以上步骤,您应该能够在 Windows 上成功安装并运行 Filebeat。

9. Windows Filebeat filebeat.yml 示例

yaml
###################### Filebeat Configuration Example ######################### #=========================== Filebeat inputs ============================= filebeat.inputs: # Apache 日志输入 - type: log enabled: true paths: # 将以下路径改为对应的日志目录,可以使用 * 通配符匹配多个日志文件 - E:/RequirementsDocument/ELK-LOG/install/httpd-2.4.62-240904-win64-VS17/Apache24/logs/access*.log fields: log_type: apache # IIS 日志输入 - type: log enabled: true paths: - C:/inetpub/logs/LogFiles/W3SVC*/u_ex*.log fields: log_type: iis # Tomcat 日志输入 - type: log enabled: true paths: - D:/tomcat8.5.73/logs/catalina*.log fields: log_type: tomcat # nginx 日志输入 - type: log enabled: true paths: - E:/RequirementsDocument/ELK-LOG/logs/nginx/access*.log fields: log_type: nginx #============================= Filebeat modules =============================== filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false #==================== Elasticsearch template setting ========================== setup.template.name: "its-log" setup.template.pattern: "its-log-*" setup.template.settings: index.number_of_shards: 1 index.number_of_replicas: 0 _source.enabled: true setup.template: # Apache 模板 - name: "its-log-apache" pattern: "its-log-apache*" settings: index.number_of_shards: 1 index.number_of_replicas: 0 _source.enabled: true # IIS 模板 - name: "its-log-iis" pattern: "its-log-iis*" settings: index.number_of_shards: 1 index.number_of_replicas: 0 _source.enabled: true # Tomcat 模板 - name: "its-log-tomcat" pattern: "its-log-tomcat*" settings: index.number_of_shards: 1 index.number_of_replicas: 0 _source.enabled: true # nginx模板 - name: "its-log-nginx" pattern: "its-log-nginx*" settings: index.number_of_shards: 1 index.number_of_replicas: 0 _source.enabled: true #============================== Kibana ===================================== setup.kibana: #================================ Outputs ===================================== #-------------------------- Elasticsearch output ------------------------------ output.elasticsearch: # Array of hosts to connect to. hosts: ["10.180.27.36:9200"] index: "its-log-%{[fields.log_type]}-cd-%{+YYYY.MM.dd}" username: "xxxx" password: "xxxxxxxxx" #================================ Procesors ===================================== processors: - add_host_metadata: ~ - add_cloud_metadata: ~ #============================== Xpack Monitoring =============================== number_of_files: 3 close_removed: true clean_removed: true #============================== Logging ===================================== logging: level: info to_files: true files: path: C:\Program Files\Filebeat\logs name: filebeat keepfiles: 7 permissions: 0644

###10 Windows filebeat.yml 示例解释

以下是对 Filebeat 配置文件的逐行解释:

1. Filebeat 输入

yaml
filebeat.inputs: # Apache 日志输入 - type: log enabled: true paths: - E:/RequirementsDocument/ELK-LOG/install/httpd-2.4.62-240904-win64-VS17/Apache24/logs/access*.log fields: log_type: apache
  • filebeat.inputs:定义 Filebeat 的输入源。
  • type: log:指定输入类型为日志文件。
  • enabled: true:启用此输入。
  • paths:定义要读取的日志文件路径,支持通配符(*)。
  • fields:自定义字段,这里定义了 log_typeapache,可以用于后续的索引或处理。

接下来的输入部分(IIS、Tomcat、nginx)与 Apache 输入类似,定义了不同类型的日志源,分别为:

  • IIS 日志:C:/inetpub/logs/LogFiles/W3SVC*/u_ex*.log
  • Tomcat 日志:D:/tomcat8.5.73/logs/catalina*.log
  • nginx 日志:E:/RequirementsDocument/ELK-LOG/logs/nginx/access*.log

2. Filebeat 模块

yaml
filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false
  • filebeat.config.modules:配置 Filebeat 模块。
  • path:指定模块文件的位置。
  • reload.enabled:是否启用模块的动态重载,这里设置为 false

3. Elasticsearch 模板设置

yaml
setup.template.name: "its-log" setup.template.pattern: "its-log-*" setup.template.settings: index.number_of_shards: 1 index.number_of_replicas: 0 _source.enabled: true
  • setup.template.name:设置索引模板的名称。
  • setup.template.pattern:指定匹配的索引模式。
  • setup.template.settings:定义索引的设置:
    • index.number_of_shards:将索引分为 1 个分片。
    • index.number_of_replicas:不创建副本(0)。
    • _source.enabled:启用源字段。

接下来的部分定义了针对不同日志类型(Apache、IIS、Tomcat、nginx)的模板设置,基本上与上述设置相同,都是为不同类型的日志指定索引模板。

4. Kibana 设置

yaml
setup.kibana:
  • setup.kibana:用于配置 Kibana 的地址和设置。虽然没有具体配置,但这表示 Filebeat 将连接到 Kibana。

5. 输出设置

yaml
output.elasticsearch: hosts: ["10.180.27.36:9200"] index: "its-log-%{[fields.log_type]}-cd-%{+YYYY.MM.dd}" username: "xxxx" password: "xxxxxxxx"
  • output.elasticsearch:配置 Filebeat 将数据发送到 Elasticsearch。
  • hosts:指定 Elasticsearch 的主机和端口。
  • index:定义索引名称的模式,使用 fields.log_type 来区分不同日志类型,并按日期格式化。
  • usernamepassword:用于连接 Elasticsearch 的凭据。

6. 处理器

yaml
processors: - add_host_metadata: ~ - add_cloud_metadata: ~
  • processors:用于在发送数据之前处理数据。
  • add_host_metadata:添加主机元数据(如主机名、IP 地址等)。
  • add_cloud_metadata:添加云元数据(如果适用)。

7. Xpack 监控设置

yaml
number_of_files: 3 close_removed: true clean_removed: true
  • 这些设置用于监控 Filebeat 的状态,number_of_files 指定最大文件数,close_removedclean_removed 控制日志文件的关闭和清理行为。

8. 日志设置

yaml
logging: level: info to_files: true files: path: C:\Program Files\Filebeat\logs name: filebeat keepfiles: 7 permissions: 0644
  • logging:配置 Filebeat 的日志设置。
  • level:设置日志级别为 info
  • to_files:将日志输出到文件。
  • files:定义日志文件的相关设置:
    • path:日志文件的存储路径。
    • name:日志文件的名称。
    • keepfiles:保留的日志文件数量。
    • permissions:设置日志文件的权限。

总结

这个配置文件定义了 Filebeat 如何收集不同类型的日志(Apache、IIS、Tomcat、nginx),如何将这些日志发送到 Elasticsearch,并配置了相关的索引模板和日志记录设置。每个部分都可以根据实际需求进行调整,以确保 Filebeat 能够高效地收集和发送日志数据。

Ubuntu 使用 tar.gz 包安装 Filebeat 步骤

1. 下载并解压 Filebeat

首先,确保您已经下载并解压了 Filebeat 的 tar.gz 包。如果还没有,可以使用以下命令下载并解压:

bash
# 下载 Filebeat tar.gz 包(请根据需要替换版本号) wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.8.23-linux-x86_64.tar.gz # 解压缩 tar xzvf filebeat-6.8.23-linux-x86_64.tar.gz # 进入解压后的目录 cd filebeat-6.8.23-linux-x86_64

2. 配置 Filebeat

在解压后的目录中,您会找到 filebeat.yml 配置文件。您需要根据您的需求编辑此文件(filebeat.yml示例请参考上面windows版本):

bash
vim filebeat.yml

在安装 6.8.23 版本时,可能会出现权限问题,请在 filebeat.yml 文件中添加以下配置:

yaml
seccomp: default_action: allow syscalls: - action: allow names: - rseq

3. 运行 Filebeat

要在后台运行 Filebeat,您可以使用 nohup 命令或将其作为系统服务运行。以下是两种方法:

方法 1:使用 nohup

nohup 命令允许您在退出终端后继续运行程序。您可以使用以下命令在后台运行 Filebeat:

bash
nohup ./filebeat -e -c filebeat.yml > filebeat.log 2>&1 &
  • -e:表示将日志输出到标准错误。
  • -c filebeat.yml:指定配置文件。
  • > filebeat.log 2>&1:将输出和错误重定向到 filebeat.log 文件。
  • &:将命令放入后台运行。

您可以使用以下命令查看 Filebeat 的日志输出:

bash
tail -f filebeat.log

方法 2:使用系统服务(推荐)

如果您希望更好地管理 Filebeat,建议将其作为系统服务运行。您可以创建一个系统服务单元文件,使 Filebeat 在系统启动时自动运行。

  1. 创建一个服务文件:

    bash
    sudo nano /etc/systemd/system/filebeat.service
  2. 在文件中添加以下内容:

    ini
    [Unit] Description=Filebeat Documentation=https://www.elastic.co/guide/en/beats/filebeat/current/index.html After=network.target [Service] User=root Group=root ExecStart=/path/to/filebeat/filebeat -e -c /path/to/filebeat/filebeat.yml Restart=always [Install] WantedBy=multi-user.target

    请确保将 /path/to/filebeat/filebeat/path/to/filebeat/filebeat.yml 替换为您实际的 Filebeat 可执行文件和配置文件的路径。

  3. 重新加载 systemd,使其识别新的服务:

    bash
    sudo systemctl daemon-reload
  4. 启动 Filebeat 服务:

    bash
    sudo systemctl start filebeat
  5. 设置 Filebeat 服务在系统启动时自动启动:

    bash
    sudo systemctl enable filebeat
  6. 检查 Filebeat 服务状态:

    bash
    sudo systemctl status filebeat

总结

以上是在使用 tar.gz 包安装 Filebeat 后,在后台运行 Filebeat 的两种方法。使用系统服务的方式更为推荐,因为它提供了更好的管理和监控功能。

使用 systemctl 启动的 Filebeat 服务的日志可以通过 journalctl 命令来查看。以下是查看 Filebeat 日志的步骤:

1. 查看 Filebeat 日志

您可以使用以下命令查看 Filebeat 的日志:

bash
sudo journalctl -u filebeat.service -f
  • -u filebeat.service:指定要查看的服务。
  • -f:实时跟踪日志输出,类似于 tail -f

2. 查看特定时间范围的日志

如果您只想查看特定时间范围内的日志,可以使用 --since--until 选项。例如,要查看今天的日志,可以这样做:

bash
sudo journalctl -u filebeat.service --since "today"

3. 查看最近的日志条目

如果您只想查看最近的几条日志,可以使用 -n 选项,例如查看最近的 50 条日志:

bash
sudo journalctl -u filebeat.service -n 50

4. 过滤日志

您还可以根据关键字过滤日志。例如,如果您想查找包含 "error" 的日志条目,可以使用:

bash
sudo journalctl -u filebeat.service | grep "error"

5. 查看所有日志

如果您想查看所有日志而不限制于 Filebeat 服务,可以直接运行:

bash
sudo journalctl -f

这将显示所有服务的实时日志输出。

本文作者:Allen Tang

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!