ELK日志(3)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: ELK日志(3)

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→启用监控。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
6天前
|
存储 监控 安全
|
3月前
|
消息中间件 Kafka 开发工具
rsyslog+ELK收集Cisco日志
rsyslog+ELK收集Cisco日志
|
3月前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
3月前
|
存储 数据可视化 Linux
在Linux中,如何使用ELK进行日志管理和分析?
在Linux中,如何使用ELK进行日志管理和分析?
|
3月前
|
数据可视化 Java API
如何在项目中快速引入Logback日志并搭配ELK使用
如何在项目中快速引入Logback日志并搭配ELK使用
|
3月前
|
存储 监控 Ubuntu
一键搞定:用脚本轻松部署ELK,让日志分析变得简单又高效
【8月更文挑战第13天】ELK栈由Elasticsearch、Logstash和Kibana组成,用于日志存储、解析及展示,是大数据领域广泛采用的日志解决方案。鉴于其安装配置复杂,本文提供了一个适用于Ubuntu 16.04的ELK自动安装Shell脚本示例。脚本首先确保Java环境安装,接着添加Elastic.co的APT仓库并安装ELK组件,最后启动所有服务。通过自动化流程,简化部署工作,减少人为错误,提升效率。实际应用中还需根据具体需求调整配置和服务设置。
54 0
|
2天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
66 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
29天前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
176 3
|
29天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1607 14