ELK日志(3)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

EFK日志收集

Elasticsearch: 数据库存储数据 java
logstash: 日志收集过滤数据 java
kibana: 分析过滤展示 java
filebeat: 收集日志传输到ES或logstash go
redis缓冲数据等待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. 修改配置文件

[root@es ~]# vim /etc/elasticsearch/elasticsearch.yml
node.name: es                        
path.data: /data/elasticsearch            
path.logs: /var/log/elasticsearch        
bootstrap.memory_lock: true                
network.host: 192.168.8.1,127.0.0.1    
http.port: 92002
  1. 创建数据目录并修改权限

[root@es ~]# mkdir -p /data/elasticsearch 
[root@es ~]# chown -R elasticsearch.elasticsearch /data/elasticsearch/
  1. 分配锁定内存:

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

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

  1. 修改锁定内存后无法重启解决方法如下

[root@es ~]# systemctl edit elasticsearch
添加
[Service]
LimitMEMLOCK=infinity
F2保存退出
[root@es ~]# systemctl daemon-reload
[root@es ~]# systemctl restart elasticsearch

kibana

  1. 安装kibana

[root@es ~]# rpm -ivh /media/elk-6.6/kibana-6.6.0-x86_64.rpm
  1. 修改配置文件

[root@es ~]# vim /etc/kibana/kibana.yml 
server.port: 5601
server.host: "192.168.8.1"
server.name: "es"     #自己所在主机的主机名
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. 修改配置文件

[root@web ~]# vim /etc/filebeat/filebeat.yml
删除所有并添加如下
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
 
output.elasticsearch:
  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索引和数据

点击插件访问添加插件方法在ELK1

  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 {}内

 log_format log_json '{ "@timestamp": "$time_local", '
'"remote_addr": "$remote_addr", '
'"referer": "$http_referer", '
'"request": "$request", '
'"status": $status, '
'"bytes": $body_bytes_sent, '
'"agent": "$http_user_agent", '
'"x_forwarded": "$http_x_forwarded_for", '
'"up_addr": "$upstream_addr",'
'"up_host": "$upstream_http_host",'
'"up_resp_time": "$upstream_response_time",'
'"request_time": "$request_time"'
' }';
    access_log  /var/log/nginx/access.log  log_json;
[root@web ~]# systemctl restart nginx

查看未修改前的格式

[root@web ~]# cat /var/log/nginx/access.log
清空日志[root@web ~]# > /var/log/nginx/access.log
es主机[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索引

[root@web ~]# vim /etc/filebeat/filebeat.yml
修改为
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
  json.keys_under_root: true
  json.overwrite_keys: true
 
output.elasticsearch:
  hosts: ["192.168.8.1:9200"]
  index: "nginx-%{[beat.version]}-%{+yyyy.MM}"
setup.template.name: "nginx"
setup.template.patten: "nginx-*"
setup.template.enabled: false
setup.template.overwrite: true
[root@web ~]# systemctl restart filebeat

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

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

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

[root@web ~]# vim /etc/filebeat/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"]
 
output.elasticsearch:
  hosts: ["192.168.8.1:9200"]
  indices:
    - index: "nginx-access-%{+yyyy.MM}"
      when.contains:
        tags: "access"
    - index: "nginx-error-%{+yyyy.MM}"
      when.contains:
        tags: "error"
 
setup.template.name: "nginx"
setup.template.patten: "nginx-*"
setup.template.enabled: false
setup.template.overwrite: true
[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→启用监控。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: elk

“ELK日志(3)” 的相关文章