Filebeat收集nginx容器日志并传到Elastic Cloud

本文介绍了如何配置Filebeat作为轻量级代理,收集nginx容器的日志并将其发送到Elastic Cloud上的Elasticsearch Service。通过设置docker标签,Filebeat自动发现并处理nginx容器的日志,同时提供了Elastic Cloud的镜像加速和配置方法。

1)Filebeat工作原理

Filebeat是一个用于转发和集中日志数据的轻量级传送程序。作为代理安装在服务器上,Filebeat监视指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或Logstash进行索引。

Filebeat的工作原理
本文摘选自本人gitbook,地址:https://maxidea.gitbook.io/k8s-testing/
转载请标注出处。

2)目标

设置filebeat容器收集nginx容器的日志,并收集到Elastic Cloud上的Elasticsearch Service

3)docker.elastic.co镜像加速

由于官方filebeat镜像存放在官方仓库docker.elastic.co,这个仓库在国内访问速度很慢,所以我们直接用已经有阿里云镜像加速的dockerhub仓库地址。(具体加速配置可以参考https://developer.aliyun.com/mirror/docker-ce
拉取dockerhub上filebeat镜像

docker pull store/elastic/filebeat:7.6.2

4)下载配置文件

下载官方的配置文件:

curl -L -O https://raw.githubusercontent.com/elastic/beats/7.6/deploy/docker/filebeat.docker.yml

filebeat.docker.yml文件内容,无需修改:

filebeat.config:
  modules:
    path: ${path.config}<
### 使用 yum 安装 Filebeat 配置其收集 Nginx 日志的具体方法 #### 配置环境 在 CentOS 或其他基于 RPM 的系统上,可以通过以下步骤完成 Filebeat 的安装与配置,用于收集 Nginx 日志。 #### 1. 下载添加 Elasticsearch 公钥 为了确保软件包的合法性,需要先导入 Elasticsearch 的 GPG 密钥。 ```bash rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch ``` 此操作确保从官方仓库下载的软件包是可信的[^1]。 #### 2. 创建或编辑 Yum 源配置文件 创建一个名为 `fb.repo` 的文件,路径为 `/etc/yum.repos.d/`,内容如下: ```ini [elastic-7.x] name=Elastic repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md ``` 上述配置定义了 Elastic 软件包的 Yum 源,确保可以正确安装 Filebeat[^1]。 #### 3. 使用 Yum 安装 Filebeat 执行以下命令以安装 Filebeat: ```bash yum install filebeat -y ``` 此命令会从之前配置的 Yum 源中下载安装 Filebeat。 #### 4. 设置 Filebeat 开机自启 为了确保系统重启后 Filebeat 自动运行,需要启用服务设置开机启动: ```bash systemctl enable filebeat systemctl start filebeat ``` #### 5. 配置 Filebeat 收集 Nginx 日志 编辑 Filebeat 的配置文件 `/etc/filebeat/filebeat.yml`,添加以下内容以指定 Nginx 日志路径配置输出目标: ```yaml filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/access.log - /var/log/nginx/error.log fields: log_type: nginx fields_under_root: true json.keys_under_root: true json.overwrite_keys: true output.elasticsearch: hosts: ["http://192.168.81.210:9200"] # 替换为实际的 Elasticsearch 地址 ``` 上述配置中,`paths` 定义了 Nginx 的访问日志和错误日志路径。`fields` 和 `fields_under_root` 用于标记日志类型,便于后续分析[^3]。 #### 6. 新建 Kafka 或 Logstash Topic(可选) 如果使用 Kafka 或 Logstash 作为中间件,需要提前创建相应的主题或管道。例如,在 Kafka 中创建名为 `nginxlog` 的主题: ```bash kafka-topics.sh --create --topic nginxlog --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1 ``` 此步骤仅适用于特定场景,可根据实际需求选择是否配置[^1]。 #### 7. 启动 Filebeat 服务 完成配置后,启动 Filebeat 服务以开始收集日志: ```bash systemctl restart filebeat ``` 确保服务已成功启动: ```bash systemctl status filebeat ``` #### 8. 测试日志收集功能 访问 Nginx 服务器以生成一些日志数据,然后检查 Elasticsearch 是否接收到这些日志。可以通过以下命令查询索引中的文档: ```bash curl -X GET "http://192.168.81.210:9200/_search?pretty" ``` 如果返回结果包含 Nginx 日志内容,则说明配置成功[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值