知识点

kibana是去es取数据 而不是es推给kibana filebeat存日志的时候会加tag标签 如果存在redis的话 可以存在一个key中 logstash去取的时候也是根据tag elk集群和业务机器区分开(例如redis不要用一个 有时候elk要重启 不要影响业务)

es的内存锁定

限制内存使用
最开始设置10g
半年后再评估 使用了多少 里面有多少是垃圾 没用的
再根据情况设置相应的内存限制

es启动的时候如果没启动成功

原因 锁定内存没成功
解决 增加如下参数 [Service]LimitMEMLOCK=infinity

索引

filebeat在修改索引后 需要有访问才会有数据 索引名称才会改变
修改后应该在kibana添加索引
如果索引格式是yyyy-mm-dd 每天会生成一个索引(日志都在这个索引里面) 应该设置成yyyy-mm(每月生成一个 现在图上有三个)
image.png
一台机器上的多个日志文件可以多个input 并且打上tag 输出(out)的时候根据tag输出 ```python [root@elk-175 filebeat]# cat filebeat.yml filebeat.inputs:

  • type: log enabled: true paths:
    • /var/log/nginx/access.log json.keys_under_root: true json.overwrite_keys: true tags: [“access”]
  • type: log enabled: true paths:
    • /var/log/nginx/error.log tags: [“error”] setup.kibana: host: “kibana的ip地址:5601”

output.elasticsearch: hosts: [“es的ip地址:9200”] indices:

  1. - index: "nginx_access-%{[beat.version]}-%{+yyyy.MM.dd}"
  2. when.contains:
  3. tags: "access"
  4. - index: "nginx_error-%{[beat.version]}-%{+yyyy.MM.dd}"
  5. when.contains:
  6. tags: "error"

setup.template.name: “nginx” setup.template.pattern: “nginx_*” setup.template.enabled: false setup.template.overwrite: true


<a name="R5q7r"></a>
## 日志格式修改成json后还是一坨
原因filebeat没有改对应的配置文件<br />需要添加两行配置文件
```python
 json.keys_under_root: true 开启json格式(这么理解 具体不清楚)
 json.overwrite_keys: true #输入转换成json后丢弃原来的(覆盖)

image.png

filebeat启动失败

一般是配置文件写错了
怎么查看哪里错了
image.png

错误案例

input只需要写一个
image.png这里的ip是es的ip
数据怎么通的
kibana里面配置了es的地址
filebeat里配置了output地址是es的

filebeat模块(nginx日志不设置也可以转换成json)

image.png