ELK日志(3)

news2024/11/20 3:29:38

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索引和数据

点击插件访问,添加插件方法在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 {}内

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/163123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高并发多级缓存架构解决方案 OpenResty、canal搭建及使用流程

高并发多级缓存架构解决方案1、缓存的常规使用方式2、请求流程拆分1、搭建tomcat集群2、搭建OpenRestyOpenResty的目录结构nginx的配置文件lua脚本的执行流程http请求反向代理到tomcat服务器3、OpenResty、Redis的单点故障问题4、防止缓存穿透java中通过redisson实现布隆过滤器…

Mac 下配置 go语言环境

Mac 下配置 go语言环境两种方法安装Go通过Homebrew安装(不太推荐)通过官网安装 (推荐)方法一安装Homebrew通过Homebrew安装Go方法二 通过官网进行安装配置go环境配置go环境国内镜像Vscode环境配置Helloworld.go两种方法安装Go 通…

LabVIEW中的VI脚本

LabVIEW中的VI脚本用户可使用VI脚本选板上的VI、函数和相关的属性、方法,通过程序创建、编辑和运行VI。通过VI脚本,可减少重复的VI编辑所需的时间,例如:创建若干类似VI对齐和分布控件显示或隐藏控件标签连接程序框图对象注: 必须先…

【13】Docker_DockerFile | 关键字

目录 1、DockerFile的定义 2、DockerFile内容基本知识 3、Docker执行DockerFile的大致流程 4、DockerFile的关键字 5、举例: 1、DockerFile的定义 Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。 2、Do…

[前端笔记——HTML介绍] 2.开始学习HTML

[前端笔记——HTML介绍] 2.开始学习HTML1什么是HTML?2剖析一个HTML元素3块级元素和内联元素4空元素5属性6为一个元素添加属性7布尔属性8省略包围属性值的引号9单引号或双引号?10剖析HTML文档11实体引用:在 HTML 中包含特殊字符1什么是HTML? …

LeetCode 17. 电话号码的字母组合

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 17. 电话号码的字母组合,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 17.…

文件操作中的IO流——字节流与字符流

一,IO流1.什么是IO流IO流是存取和读取数据的解决方案2.IO流的作用IO流用于读写数据,这些数据包括本地文件和网络上的一些数据;比如读写本地文件的时候需要用到文件读写的IO流,读写网络上的数据时需要通过Socket套接字来调用数据流…

机器学习:公式推导与代码实现-监督学习单模型

线性回归 线性回归(linear regression)是线性模型的一种典型方法。 回归分析不再局限于线性回归这一具体模型和算法,更包含了广泛的由自变量到因变量的机器学习建模思想。 原理推导 线性回归学习的关键问题在于确定参数w和b,使得拟合输出y与真实输出yi尽可能接近 为了求…

PowerDesigner16.5配置安装与使用

PowerDesigner16.5百度云下载链接 链接:https://pan.baidu.com/s/1b9XUqxVZ8gTqk_9grptcAQ?pwd3pl7 提取码:3pl7 一:软件安装 1.下载安装包(包含安装文件、汉化包、注册文件) 2.下载后文件内容如下 3.进入安装文件中…

5. 统计学基础1:平均值...四分位数、方差、标准差(均方差)、标准误(标准误差、均方根误差)、 标准分

文章目录1. 平均值、中位数、众数、极差、四分位数(即下、中、上四份位数)2. 方差(Var、D(X) 、σ^2^)、标准差【也叫均方差】(SD 、σ)3. 标准误【也叫标准误差、均方根误差】(SE)4…

高空探测数据处理--对流层顶选取

对流层的概念(维基百科) 对流层(英语:Troposphere)是地球大气层中最靠近地面的一层,也是地球大气层里密度最高的一层。它蕴含了整个大气层约75%的质量,以及几乎所有的水蒸气及气溶胶。 对流层从地球表面开始向高空伸展,直至对流层顶,即平流层的起点为止。对流层的上…

【Labview】每日一题

🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5&#xff5…

The ATIS Spoken Language Systems Pilot Corpus

摘要 语音研究有巨大的进步在过去使用以下的模式: 定义研究问题收集语料针对性的衡量进展解决这个研究问题 自然语言研究,另一方面,取得了典型的进步在没有任何数据语料的情况下,这能够测试研究的假设。 我们描述了ATISATISATIS试点语料库…

从C到C++及类与对象

目录 从C到C 嵌入式领域常用的GUI 语法的升级 引用 默认参数 函数重载 堆内存 概念和思维的升级 类和对象 类的申明 类的成员函数 常成员、常对象(C推荐const而不用#define, mutable ) 静态成员(属于类不属于对象) 友元(破坏…

Opencv实战案例——模板匹配实现银行卡号识别(附详细介绍及完整代码下载地址)

Opencv目录1.项目意义2.模板匹配3.图像二值化3.1全局阈值3.2全局阈值代码即效果展示3.3 自适应阈值3.4自适应阈值代码即效果展示4.轮廓筛选4.1轮廓检测4.2绘制轮廓4.3轮廓筛选代码及效果展示5.形态学变化5.1腐蚀5.2膨胀5.3开运算和闭运算、礼帽和黑帽6.项目实战6.1读取图片转化…

next_permutation函数讲解

目录 前言: 简要概述: 例题(1): P1088 [NOIP2004 普及组] 火星人 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码(1): 例题(2)&#xf…

如何开发 Vite 3 插件构建 Electron 开发环境?(文末附视频讲解)

开发新版本 Vue 项目推荐你使用 Vite 脚手架构建开发环境,然而 Vite 脚手架更倾向于构建纯 Web 页面,而不是桌面应用,因此开发者要做很多额外的配置和开发工作才能把 Electron 引入到 Vue 项目中,这也是很多开发者都基于开源工具来…

用户多兴趣建模MIND

1. 概述 在工业界,一个完整的推荐系统中通常包括两个阶段,分别为召回阶段和排序阶段。在召回阶段,根据用户的兴趣从海量的商品中去检索出用户(User)可能感兴趣的候选商品( Item),满…

JavaEE进阶第二课:Spring创建与使用

上一篇我们介绍了Spring的概念,知道了Spring是众多工具方法的IoC容器。 但是纸上谈兵终觉浅,这一篇文章就来介绍Spring创建与使用, 注之后我们对对象的称呼就叫Bean 1.1Spring项目的创建与配置 1.创建maven项目,语言选java&…

【1819. 序列中不同最大公约数的数目】

来源:力扣(LeetCode) 描述: 给你一个由正整数组成的数组 nums 。 数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整数。 例如,序列 [4,6,16] 的最大公约数是 2 。 数组的一个 子序列 本质是一个序…