设为服务
设置为服务运行,使用原有主配置文件:
vim /usr/lib/systemd/system/filebeat.service
# systemd service file for Elastic-Filebeat [Unit] Description=Elastic-Filebeat Community Server After=network.target After=syslog.target After=nss-lookup.target [Install] WantedBy=multi-user.target [Service] User=es Group=es WorkingDirectory=/usr/local/filebeat # Start main service ExecStart=/usr/local/filebeat/filebeat Restart=on-failure RestartPreventExitStatus=1
systemctl enable filebeat
实践-收集Nginx日志
修改主配置文件的output,其它可不作修改:
cd /usr/local/filebeat grep -Ev “^\s*#|^$” filebeat.yml cd /usr/local/filebeat grep -Ev "^\s*#|^$" filebeat.yml filebeat.inputs: - type: filestream enabled: false paths: - /var/log/*.log filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false setup.template.settings: index.number_of_shards: 1 setup.kibana: host: "192.168.220.35:5601" output.elasticsearch: hosts: ["192.168.220.32:9200"] processors: - add_host_metadata: when.not.contains.tags: forwarded - add_cloud_metadata: ~ - add_docker_metadata: ~ - add_kubernetes_metadata: ~ 启用模块里面的Nginx模块并设置: mv modules.d/nginx.yml.disabled modules.d/nginx.yml grep -Ev "^\s*#|^$" modules.d/nginx.yml - module: nginx access: enabled: true var.paths: ["/data/nginx/logs/*access.log"] error: enabled: true var.paths: ["/data/nginx/logs/*error.log"] ingress_controller: enabled: false 为了能够使Nginx模块能正确地被Kibana显示,需运行如下命令: su - es -s /bin/bash -c "./filebeat setup" 设置服务并启动filebeat: systemctl start filebeat systemctl status filebeat 启动后,即可在Kibana中查看到收集到的日志: 默认Nginx的filebeat模块即会分析默认格式的日志内容,并自动添加相应字段: 可以通过上方的查询框来过滤条件: 在Dashboard中也可以看到添加的Nginx仪表盘: |
实践-系统日志收集
通常我们可能还需要收集主机日志信息,故在上面Nginx主机上可进行操作启动收集日志信息。
启用system模块:
ls modules.d/ | grep -v disabled su - es -s /bin/bash -c "./filebeat modules enable system" ls modules.d/ | grep -v disabled
Tips: 和上面一样使用mv修改掉.disabled后缀名也一样效果。
system模块文件保持默认即可,不需要做额外配置。
修改主配置文件,根据不同类型自定义索引(默认filebeat-%{[agent.version]}-%{+yyyy.MM.dd}):
grep -Ev "^\s*#|^$" filebeat.yml
filebeat.inputs: - type: filestream enabled: false paths: - /var/log/*.log filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false setup.template.settings: index.number_of_shards: 1 setup.kibana: host: "192.168.220.35:5601" output.elasticsearch: hosts: ["192.168.220.32:9200"] indices: - index: "filebeat-%{[event.dataset]}-%{+yyyy.MM}" when.equals: event.module: "nginx" - index: "filebeat-%{[event.dataset]}-%{+yyyy}" when.equals: event.module: "system" processors: - add_host_metadata: when.not.contains.tags: forwarded - add_cloud_metadata: ~ - add_docker_metadata: ~ - add_kubernetes_metadata: ~
systemctl restart filebeat systemctl status filebeat setfacl -m u:es:r /var/log/messages setfacl -m u:es:r /var/log/secure*
上面设置按不同的事件模块名称为条件,将不同的日志传送到不同的索引下面,并按月或按年进行索引,条件语法可参考:官网说明。
由于系统日志有权限保护,注意需给运行filebeat的用户读取权限。
过一会儿,在索引管理中即可看到新的索引条目:
同时注意在Kibana的索引模式中增加nginx的模式,以便修改可视化组件:
进入新增的索引模式,添加索引字段(source.geo.location):
添加之后会自动添加日志中存在的坐标字段:
打开可视化库,修改Nginx相关的面板:
TSVB类型的,在“面板选项”中将原来的filebeat- *修改为filebeat-nginx*后保存即可:
图表等类型的面板在这里不能进行直接修改,其使用的是“索引模式”来展示;需进入管理页面,打开“已保存对象”搜索nginx相关的“search”面板并点击打开:
将索引模式修改为nginx(filebeat-nginx*)的即可:
实践-收集MySQL日志
在另一台具有MySQL的主机上进行上面的安装操作。
和上面操作类似,这里同样将MySQL和system模块启用并配置:
cd /usr/local/filebeat grep -Ev "^\s*#|^$" filebeat.yml
filebeat.inputs: - type: filestream enabled: false paths: - /var/log/*.log filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false setup.template.settings: index.number_of_shards: 1 setup.kibana: host: "192.168.220.35:5601" output.elasticsearch: hosts: ["192.168.220.33:9200"] indices: - index: "filebeat-%{[event.dataset]}-%{+yyyy.MM}" when.equals: event.module: "mysql" - index: "filebeat-%{[event.dataset]}-%{+yyyy}" when.equals: event.module: "system" processors: - add_host_metadata: when.not.contains.tags: forwarded - add_cloud_metadata: ~ - add_docker_metadata: ~ - add_kubernetes_metadata: ~
su - es -s /bin/bash -c "./filebeat modules enable system mysql" ls modules.d/ | grep -v disabled
设置MySQL日志路径:
grep -Ev "^\s*#|^$" modules.d/mysql.yml
- module: mysql error: enabled: true var.paths: ["/data/mu/mysql/logs/error.log"] slowlog: enabled: true var.paths: ["/data/mu/mysql/logs/slow.log"]
setfacl -m u:es:r /var/log/messages setfacl -m u:es:r /var/log/secure* setfacl -m u:es:r /data/mu/mysql/logs/error.log setfacl -m u:es:r /data/mu/mysql/logs/slow.log
启动filebeat:
systemctl start filebeat systemctl status filebeat
刷新索引可以看到新的已添加:
其它自带模块化的操作类似。