ELK部署-Beats

设为服务

设置为服务运行,使用原有主配置文件:

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

刷新索引可以看到新的已添加:

其它自带模块化的操作类似。

发表评论

error: Content is protected !!