Ubuntu系统设置Filebeat定时任务的常用方法
Cron是Ubuntu系统自带的定时任务管理工具,适合需要定期运行Filebeat采集任务的场景(如每分钟、每小时采集一次日志)。
crontab -e(若需要root权限,用sudo crontab -e),进入编辑模式。/var/log/*.log文件并发送到Elasticsearch):0 1 * * * /usr/share/filebeat/filebeat -e -c /etc/filebeat/filebeat.yml* * * * * /usr/share/filebeat/filebeat -e -c /etc/filebeat/filebeat.yml注:
/usr/share/filebeat/filebeat是Filebeat的可执行文件路径(可通过which filebeat命令确认);-e参数将错误日志输出到stderr;-c指定配置文件路径。
Ctrl+X→Y→Enter),通过crontab -l(当前用户)或sudo crontab -l(root用户)查看已添加的任务。Systemd定时器是Ubuntu 16.04及以上版本推荐的方式,支持秒级精度和依赖管理,适合需要与系统服务深度集成的场景。
/etc/systemd/system/filebeat.service,内容如下:[Unit]
Description=Filebeat Log Shipper
After=network.target
[Service]
Type=simple
User=filebeat
Group=filebeat
ExecStart=/usr/share/filebeat/filebeat -e -c /etc/filebeat/filebeat.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
注:
User和Group设置为filebeat(默认用户),避免权限问题;Restart=on-failure确保服务异常时自动重启。
/etc/systemd/system/filebeat.timer,内容如下(以“每天凌晨1点执行”为例):[Unit]
Description=Run Filebeat daily at 1:00 AM
[Timer]
OnCalendar=*-*-* 01:00:00
Persistent=true
[Install]
WantedBy=timers.target
注:
OnCalendar支持多种时间格式(如*-*-* 01:00:00表示每天凌晨1点,*/5 * * * *表示每5分钟);Persistent=true表示若系统关机错过执行时间,会在下次启动后补执行。
sudo systemctl daemon-reload # 重新加载Systemd配置
sudo systemctl enable --now filebeat.timer # 启用并立即启动定时器
systemctl list-timers | grep filebeat # 查看filebeat.timer的状态
journalctl -u filebeat -f # 查看filebeat服务的日志
若需调整Filebeat采集日志的频率(而非执行任务的频率),可直接修改filebeat.yml配置文件:
sudo nano /etc/filebeat/filebeat.yml。filebeat.inputs部分添加scan_frequency参数(单位:秒),例如每30秒扫描一次日志文件:filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
scan_frequency: 30s # 调整采集间隔
sudo systemctl restart filebeat。filebeat用户),避免因权限不足导致任务失败。which filebeat确认Filebeat可执行文件路径,避免命令找不到的错误。journalctl -u filebeat -f实时查看Filebeat日志,排查定时任务执行中的问题。