关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

ELK日志(3)

发布时间:2023-06-30 20:00:35

EFK日志收集

Elasticsearch: 数据库,存储数据 javalogstash: 日志收集,过滤数据 javakibana: 分析,过滤,展示 javafilebeat: 收集日志,传输到ES或logstash goredis:缓冲数据,等待logstash取数据

filebeat官方文档:

https://www.elastic.co/guide/en/beats/filebeat/current/index.html

拓扑图如下:

主机名

IP

服务

内存

es

192.168.8.1

elasticsearch

kibana

redis

logstash

4G

web

192.168.8.2

filebeat

nginx

2G

client

192.168.8.3

httpd-tools

1G

es主机

elasticsearch

  1. 安装elasticsearch

前提:jdk-1.8.0

[root@es ~]# rpm -ivh /media/elk-6.6/elasticsearch-6.6.0.rpm

   

  1. 修改配置文件
1. [root@es ~]# vim /etc/elasticsearch/elasticsearch.yml 2. node.name: es 3. path.data: /data/elasticsearch 4. path.logs: /var/log/elasticsearch 5. bootstrap.memory_lock: true 6. network.host: 192.168.8.1,127.0.0.1 7. http.port: 92002

   

  1. 创建数据目录,并修改权限
1. [root@es ~]# mkdir -p /data/elasticsearch 2. [root@es ~]# chown -R elasticsearch.elasticsearch /data/elasticsearch/

   

  1. 分配锁定内存:

实验环境中保持默认即可。

1. [root@es ~]# vim /etc/elasticsearch/jvm.options 2. -Xms1g #分配最小内存 3. -Xmx1g #分配最大内存,官方推荐为物理内存的一半,但最大为32G

   

  1. 修改锁定内存后,无法重启,解决方法如下:
1. [root@es ~]# systemctl edit elasticsearch 2. 添加: 3. [Service] 4. LimitMEMLOCK=infinity 5. F2保存退出 6. [root@es ~]# systemctl daemon-reload 7. [root@es ~]# systemctl restart elasticsearch

   

kibana

  1. 安装kibana
[root@es ~]# rpm -ivh /media/elk-6.6/kibana-6.6.0-x86_64.rpm

   

  1. 修改配置文件
1. [root@es ~]# vim /etc/kibana/kibana.yml 2. server.port: 5601 3. server.host: "192.168.8.1" 4. server.name: "es" #自己所在主机的主机名 5. elasticsearch.hosts: ["http://192.168.8.1:9200"] #es服务器的ip,便于接收日志数据

   

  1. 启动kibana
[root@es ~]# systemctl start kibana

   

web主机

filebeat

  1. 安装filebeat
[root@web ~]# rpm -ivh /media/elk-6.6/filebeat-6.6.0-x86_64.rpm

   

  1. 修改配置文件
1. [root@web ~]# vim /etc/filebeat/filebeat.yml 2. 删除所有并添加如下: 3. filebeat.inputs: 4. - type: log 5. enabled: true 6. paths: 7. - /var/log/nginx/access.log 8. 9. output.elasticsearch: 10. hosts: ["192.168.8.1:9200"]

   

  1. 启动filebeat
[root@web ~]# systemctl start filebeat

   

nginx

  1. 安装nginx
[root@web ~]# rpm -ivh /media/nginx-rpm/* --nodeps --force

   

  1. 启动nginx
[root@web ~]# systemctl start nginx

   

  1. es使用ab压力测试工具测试web网站
[root@es ~]# ab -n 100 -c 20 http://192.168.8.2/index.html

   

  1. 浏览器查看filebeat索引和数据

点击插件访问,添加插件方法在ELK(1)。

  1. 在kibana添加索引

访问http://192.168.8.1:5601

management→Index Patterns→create index pattern→复制索引名称到上方→Next step→timestamp→create。

点击discover查看。

  1. 修改nginx的日志格式为json

初始状态是使用的YML的格式,下面可以改为json的格式。

[root@web ~]# vim /etc/nginx/nginx.conf

   

#注意

删除上图中红框内的文件,把下面内容复制在http {}内

1. log_format log_json '{ "@timestamp": "$time_local", ' 2. '"remote_addr": "$remote_addr", ' 3. '"referer": "$http_referer", ' 4. '"request": "$request", ' 5. '"status": $status, ' 6. '"bytes": $body_bytes_sent, ' 7. '"agent": "$http_user_agent", ' 8. '"x_forwarded": "$http_x_forwarded_for", ' 9. '"up_addr": "$upstream_addr",' 10. '"up_host": "$upstream_http_host",' 11. '"up_resp_time": "$upstream_response_time",' 12. '"request_time": "$request_time"' 13. ' }'; 14. access_log /var/log/nginx/access.log log_json; 15. [root@web ~]# systemctl restart nginx

   

查看未修改前的格式

[root@web ~]# cat /var/log/nginx/access.log

   

清空日志:[root@web ~]# > /var/log/nginx/access.loges主机:[root@es ~]# ab -n 100 -c 20 http://192.168.8.2/index.html

继续使用ab测试访问,生成json格式日志,查看格式已经修改成功。

[root@web ~]# cat /var/log/nginx/access.log

   

  1. 修改filebeat配置文件

修改配置文件添加nginx索引

1. [root@web ~]# vim /etc/filebeat/filebeat.yml 2. 修改为: 3. filebeat.inputs: 4. - type: log 5. enabled: true 6. paths: 7. - /var/log/nginx/access.log 8. json.keys_under_root: true 9. json.overwrite_keys: true 10. 11. output.elasticsearch: 12. hosts: ["192.168.8.1:9200"] 13. index: "nginx-%{[beat.version]}-%{+yyyy.MM}" 14. setup.template.name: "nginx" 15. setup.template.patten: "nginx-*" 16. setup.template.enabled: false 17. setup.template.overwrite: true 18. [root@web ~]# systemctl restart filebeat

   

先访问nginx网站后,查看elasticsearch就可以看到nginx的日志索引了。

  1. 配置access.log和error.log分开

下面配置把access和error分开,分别通过正确访问和错误访问后,就可以看到两个索引。

1. [root@web ~]# vim /etc/filebeat/filebeat.yml 2. 修改为: 3. filebeat.inputs: 4. - type: log 5. enabled: true 6. paths: 7. - /var/log/nginx/access.log 8. json.keys_under_root: true 9. json.overwrite_keys: true 10. tags: ["access"] 11. 12. - type: log 13. enabled: true 14. paths: 15. - /var/log/nginx/error.log 16. tags: ["error"] 17. 18. output.elasticsearch: 19. hosts: ["192.168.8.1:9200"] 20. indices: 21. - index: "nginx-access-%{+yyyy.MM}" 22. when.contains: 23. tags: "access" 24. - index: "nginx-error-%{+yyyy.MM}" 25. when.contains: 26. tags: "error" 27. 28. setup.template.name: "nginx" 29. setup.template.patten: "nginx-*" 30. setup.template.enabled: false 31. setup.template.overwrite: true 32. [root@web ~]# systemctl restart filebeat

   

下面访问nginx服务器,分别使用正确和错误的访问方式web网站,就可以看到elasticsearch中的两个日志索引了。

json.keys_under_root: true #将json数据拆解字段后,可以让字段解析到顶级结构下。

json.overwrite_keys: true #对于同名的 key,会覆盖原有 key 值。

==============================================================

kibana图表

注意:相同的方法添加access索引。

登录→左侧面板选择visualize→点击“+”号→选择所需的图表类型→选择access索引→Buckets→x-Axis→Aggregation(选择Terms)→Field(remote_addr.keyword:表示查看前10条地址信息)→size(5)→点击上方三角标志。

目前成功访问的记录只有本机浏览器访问过,现在用client客户端访问nginx网站后再次查看图表。

kibana监控(x-pack):

登录→左侧面板选择→Monitoring→启用监控。



/template/Home/leiyu/PC/Static