1. ELK日志分析

ELK日志分析

  • 一、ELK作用、组件
    • 1、作用
    • 2、核心组件
      • 2.1 beat软件
      • 2.1 Logstash
      • 2.2 Elasticsearch
      • 2.3 Kibana
  • 二、ELK部署、测试
    • 1、环境规划
    • 2、确保SELinux关闭、时间同步
    • 3、所有主机添加主机名解析
    • 4、三台ES主机安装jdk 1.15
    • 5、调整系统资源限制
    • 6、部署es集群
      • 6.1 创建普通用户elk、安装es软件
      • 6.2 编辑es的配置文件
      • 6.3 启动es集群
      • 6.4 查看es集群状态
    • 7、配置logstash
      • 7.1 安装logstash
      • 7.2 编辑logstash配置
      • 7.3 启动logstash
    • 8、安装kibana可视化工具
    • 9、在业务服务器上部署filebeat
      • 9.1 测试访问web,形成日志
      • 9.2 安装filebeat
      • 9.3 编辑filebeat配置
      • 9.4 启动filebeat
  • 三、测试ELK可正常搜集日志
    • 1、在kibana webUI根据索引查看日志
    • 2、创建图表,分析网站访问量

一、ELK作用、组件

1、作用

统一日志搜集、分析

2、核心组件

在这里插入图片描述

2.1 beat软件

部署在业务服务器的客户端agent, 用于让ELK联系beat采用日志
典型beat软件:
1、topbeat, 适用于搜集系统日志
2、filebeat, 适用于搜集应用级别日志
3、winbeat, 适用于windows日志
4、packetbeat, 适用于网络设备的日志

2.1 Logstash

日志过滤器,做日志过滤功能

2.2 Elasticsearch

简称es, 分布式搜索引擎,负责日志数据的存储、搜索功能

2.3 Kibana

提供webUI,可视化功能

二、ELK部署、测试

1、环境规划

192.168.140.10 es-master.linux.com jdk/elasticsearch/kibana/logstash
192.168.140.11 es-node01.linux.com jdk/elasticsearch
192.168.140.12 es-node02.linux.com jdk/elasticsearch
192.168.140.13 web_server.linux.com httpd/filebeat

2、确保SELinux关闭、时间同步

3、所有主机添加主机名解析

[root@es-master ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.140.10	es-master.linux.com	es-master
192.168.140.11	es-node01.linux.com	es-node01
192.168.140.12	es-node02.linux.com	es-node02
192.168.140.13	web.linux.com	web

4、三台ES主机安装jdk 1.15

[root@es-master ~]# tar xf jdk-15.0.2_linux-x64_bin.tar.gz -C /usr/local/

[root@es-master ~]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk-15.0.2
export PATH=$PATH:$JAVA_HOME/bin

[root@es-master ~]# source /etc/profile

[root@es-master ~]# java -version
java version "15.0.2" 2021-01-19
Java(TM) SE Runtime Environment (build 15.0.2+7-27)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.2+7-27, mixed mode, sharing)

5、调整系统资源限制

[root@es-master ~]# vim /etc/security/limits.conf
* soft nofile 65536 
* hard nofile 65536
* soft noproc 2048
* hard noproc 4096

nofile:系统允许的最大文件描述符数量
noproc:系统允许的最大进程数
[root@es-master ~]# vim /etc/sysctl.conf 
vm.max_map_count = 262144
fs.file-max = 655360

[root@es-master ~]# sysctl -p

6、部署es集群

6.1 创建普通用户elk、安装es软件

[root@es-master ~]# useradd elk

[root@es-master ~]# mkdir -p /app/elk

[root@es-master ~]# tar xf elasticsearch-7.6.2-linux-x86_64.tar.gz -C /app/elk/
[root@es-master ~]# chown -R elk.elk /app/elk/

6.2 编辑es的配置文件

es-master:

[root@es-node01 ~]# su - elk
[elk@es-node01 ~]$ mkdir /app/elk/elasticsearch-7.6.2/data
[elk@es-master ~]$ vim /app/elk/elasticsearch-7.6.2/config/elasticsearch.yml

cluster.name: es
node.name: es-master
path.data: /app/elk/elasticsearch-7.6.2/data/
path.logs: /app/elk/elasticsearch-7.6.2/logs

network.host: 192.168.140.10
http.port: 9200
transport.tcp.port: 9300

discovery.seed_hosts: ["192.168.140.10:9300", "192.168.140.11:9300", "192.168.140.12:9300" ]
cluster.initial_master_nodes: ["192.168.140.10:9300"]

node.master: true         // 主节点
node.data: true
node.ingest: false
node.ml: false
cluster.remote.connect: false

http.cors.enabled: true
http.cors.allow-origin: true

节点类型说明:

Master node
负责集群自身的管理操作;例如创建索引、添加节点、删除节点
node.master: true

Data node
负责数据读写
建议实际部署时,使用高内存、高硬盘的服务器
node.data: true

Ingest node
预处理节点
负责数据预处理(解密、压缩、格式转换)

Client node
负责路由用户的操作请求
node.master: false
node.data: false

es-node01:

cluster.name: es
node.name: es-node02
path.data: /app/elk/elasticsearch-7.6.2/data
path.logs: /app/elk/elasticsearch-7.6.2/logs
network.host: 192.168.140.11
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.140.10:9300", "192.168.140.11:9300", "192.168.140.12:9300"]
cluster.initial_master_nodes: ["192.168.140.10:9300"]

node.master: false
node.data: true             // 数据节点
node.ingest: false
node.ml: false
cluster.remote.connect: false

http.cors.enabled: true
http.cors.allow-origin: "*"

es-node02:

cluster.name: es
node.name: es-node01
path.data: /app/elk/elasticsearch-7.6.2/data
path.logs: /app/elk/elasticsearch-7.6.2/logs
network.host: 192.168.140.12
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.140.10:9300", "192.168.140.11:9300", "192.168.140.12:9300"]
cluster.initial_master_nodes: ["192.168.140.10:9300"]

node.master: false
node.data: true              // 数据节点
node.ingest: false
node.ml: false
cluster.remote.connect: false

http.cors.enabled: true
http.cors.allow-origin: "*"

6.3 启动es集群

[elk@es-node01 ~]$ /app/elk/elasticsearch-7.6.2/bin/elasticsearch -d
[elk@es-node01 ~]$ 
[elk@es-node01 ~]$ 
[elk@es-node01 ~]$ netstat -tunlp | grep java 
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6       0      0 192.168.140.11:9200     :::*                    LISTEN      18675/java          
tcp6       0      0 192.168.140.11:9300     :::*                    LISTEN      18675/java          

6.4 查看es集群状态


C:\Users\admin>curl -X GET "http://192.168.140.11:9200/_cluster/health?pretty"
{
  "cluster_name" : "es",        // 集群名称
  "status" : "green",          // 状态,green代表主从均正常、yellow代表主正常、从故障、red代表所有节点均故障
  "timed_out" : false,
  "number_of_nodes" : 3,       // 节点数量
  "number_of_data_nodes" : 3,  // 数据节点数量
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

7、配置logstash

7.1 安装logstash

[root@es-master ~]# tar xf logstash-7.6.2.tar.gz -C /app/elk/

[root@es-master ~]# cd /app/elk/logstash-7.6.2/config/
[root@es-master config]# cp logstash-sample.conf logstash.conf

7.2 编辑logstash配置

[root@es-master config]# pwd
/app/elk/logstash-7.6.2/config

[root@es-master config]# cat logstash.conf 
input {
  beats {
    port => 5044
  }
}

filter {
   grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
   }
}

output {
  elasticsearch {
    hosts => ["http://192.168.140.10:9200"]
    index => "web-access-log-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

查看logstash自带的过滤日志的方法
[root@es-master patterns]# pwd
/app/elk/logstash-7.6.2/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.1.2/patterns
[root@es-master patterns]#

7.3 启动logstash

[root@es-master ~]# vim /app/elk/logstash-7.6.2/config/jvm.options 

// 禁用GC垃圾回收机制

#-XX:+UseConcMarkSweepGC
#-XX:CMSInitiatingOccupancyFraction=75
#-XX:+UseCMSInitiatingOccupancyOnly
[root@es-master ~]# nohup /app/elk/logstash-7.6.2/bin/logstash -f /app/elk/logstash-7.6.2/config/logstash.conf & 
[1] 19110
[root@es-master ~]# netstat -tunlp | grep 5044
tcp6       0      0 :::5044                 :::*                    LISTEN      19110/java          
[root@es-master ~]# netstat -tunlp | grep 5044
tcp6       0      0 :::5044                 :::*                    LISTEN      19110/java   

8、安装kibana可视化工具

[root@es-master ~]# tar xf kibana-7.6.2-linux-x86_64.tar.gz -C /app/elk/

[elk@es-master ~]$ vim /app/elk/kibana-7.6.2-linux-x86_64/config/kibana.yml
server.port: 5601
server.host: "192.168.140.10"
elasticsearch.hosts: ["http://192.168.140.10:9200"]

[elk@es-master ~]$ ps -elf | grep kibana
0 R elk       40227  39800 99  80   0 - 293743 -     14:47 pts/0    00:00:57 /app/elk/kibana-7.6.2-linux-x86_64/bin/../node/bin/node /app/elk/kibana-7.6.2-linux-x86_64/bin/../src/cli

[elk@es-master ~]$ netstat -antp | grep 5601
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 192.168.140.10:5601     0.0.0.0:*               LISTEN      40436/node       

在这里插入图片描述

9、在业务服务器上部署filebeat

9.1 测试访问web,形成日志

[root@web ~]# wc -l /var/log/httpd/access_log 
4243 /var/log/httpd/access_log

9.2 安装filebeat

[root@web_server ~]# tar xf filebeat-7.6.2-linux-x86_64.tar.gz -C /usr/local/

9.3 编辑filebeat配置

[root@web_server ~]# vim /usr/local/filebeat-7.6.2-linux-x86_64/filebeat.yml

#=========================== Filebeat inputs =============================

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/httpd/access_log

#============================== Dashboards =====================================
setup.dashboards.enabled: false

#============================== Kibana =====================================
setup.kibana:
  host: "192.168.140.10:5601"

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["192.168.140.10:5044"]

9.4 启动filebeat

[root@web filebeat-7.6.2-linux-x86_64]# pwd
/usr/local/filebeat-7.6.2-linux-x86_64

[root@web filebeat-7.6.2-linux-x86_64]# nohup ./filebeat -c filebeat.yml & 

[root@web filebeat-7.6.2-linux-x86_64]# ps -elf | grep file
4 S dbus        693      1  0  80   0 - 14555 ep_pol 11:37 ?        00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
0 S root       1844   1288 13  80   0 - 154003 futex_ 16:23 pts/0   00:00:00 ./filebeat -c filebeat.yml

三、测试ELK可正常搜集日志

1、在kibana webUI根据索引查看日志

在这里插入图片描述在这里插入图片描述在这里插入图片描述

2、创建图表,分析网站访问量

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI口语练习APP的技术难点

AI口语练习APP旨在帮助用户练习口语,因此其核心功能是语音识别和语音评测。以下是一些AI口语练习APP的主要技术难点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 语音识别 语音识别是将语音信号转换为文本的过程。…

C++ —— unordered_set、unordered_map的介绍及使用

目录 unordered系列关联式容器 unordered_set的介绍 unordered_set的使用 unordered_set的定义方式 unordered_set接口的使用 unordered_multiset unordered_map的介绍 unordered_map的使用 unordered_map的定义方式 unordered_map接口的使用 unordered_multimap …

机器学习周记(第四十三周:MCformer)2024.6.10~2024.6.16

目录 摘要ABSTRACT1 论文信息1.1 论文标题1.2 论文摘要1.3 论文引言1.4 论文贡献 2 论文模型2.1 问题定义2.2 可逆实例归一化(Reversible Instance Normalization)2.3 混合通道块 (Mixed-Channels Block)2.4 编码器(De…

安全可靠跨国传输的前提下,如何兼顾数据跨国快速传输?

在全球化的商业环境中,跨国公司在与国际客户、合作伙伴或海外分支机构进行数据跨国快速传输时,不可避免会遇到一系列挑战。比如网络延迟、数据包丢失、带宽限制以及数据安全和合规性问题,一定程度上都会影响数据传输的效率,业务的…

项目的打包

一:打包到微信小程序 1)vscode打包 2)在微信小程序开发工具中打开路径,上传. 疑问:为什么pnpm bulid:mp-weixin用于打包,pnpm dev:mp-weixin也可生成对应路径下的文件?? 打包的是没有热重载,且打包体积更小. 二:条件编译 vscode可以打包成能在不同平台上运行的代码.但是有…

大数据关联规则算法

关联性(Association) 定义:指一个变量能够提供有关另一个变量的信息。特点:关联性是一个广泛的概念,它可以包括直接的、间接的、强的或弱的联系。 相关性(Correlation) 定义:指两个…

新手搭建Magic-API

项目场景: 我本是一个前端和GIS开发工程师,但新单位并没有配置完整的开发团队,确切说目前只有我一个人做开发,那么肯定避免不了要研究下后端。最近有一个小程序要开发,管理平台我直接用的fastAdminthinkphp写完了页面…

IAM风险CTF挑战赛

wiz启动了一个名为“The Big IAM Challenge”云安全CTF挑战赛。旨在让白帽子识别和利用 IAM错误配置,并从现实场景中学习,从而更好的认识和了解IAM相关的风险。比赛包括6个场景,每个场景都专注于各种AWS服务中常见的IAM配置错误。 Challenge…

企业工程图纸很多,应该如何进行图纸管理?

企业工程图纸很多,应该如何进行图纸管理? 设计制造企业在实际设计和生产过程中会产生大量的工程图纸,图纸一多管理起来就会十分麻烦,管理不当则是会影响整体的工作效率。对于大量工程图纸的管理,有多种方式方法来进行…

数据结构-算法和算法分析

目录 前言一、算法1.1 算法与程序1.2 算法描述方法1.3 算法特性1.4 算法设计的要求 二、算法分析2.1 算法时间效率的度量2.1.1 事前分析方法算法的渐进时间复杂度算法时间复杂度分析例子算法最坏时间复杂度时间复杂度的计算规则 2.2 算法空间效率的度量 总结 前言 程序 数据结…

深度优先遍历解决迷宫问题(顺序栈的应用)

学习贺利坚老师课程 数据结构例程——迷宫问题(用栈结构)_数据结构迷宫问题-CSDN博客文章浏览阅读3.1w次,点赞25次,收藏118次。本文针对数据结构基础系列网络课程(3):栈和队列中第6课时栈的应用2-迷宫问题。例&#x…

品牌为什么要做电商控价

消费者购买产品的途径愈发多样,抖音、快手等直播电商的兴起进一步拓宽了品牌的销售渠道。市场形态越是丰富,品牌所要应对的问题自然也就越多。主流电商平台如淘宝、拼多多,依然是消费者主要的选购之处,即便不购物,电商…

使用nvm管理nodejs版本,设置淘宝NPM镜像源

nvm-windows https://github.com/coreybutler/nvm-windows nvm配置文件的路径 C:\Users\用户名\AppData\Roaming\nvm 修改 settings.txt 文件,添加淘宝镜像源地址 node_mirror: https://npmmirror.com/mirrors/node/ npm_mirror: https://npmmirror.com/mirrors…

tauri嵌入外部二进制文件,以及sidecar是什么意思?

sidecar是什么意思 有时,为了使应用程序正常运行或防止用户安装额外的依赖项(例如Node.js或Python或者ffmpeg等),你可能需要嵌入依赖的二进制文件,我们将这种二进制文件称为"sidecar",中文意思就…

Navicat 重装 查找 保存的查询sql文件

背景:Navicat 一个收费的软件,存在的最大缺点就是收费,所以我们为了优化它会遇到卸载重装这些复杂的过程,但是我们保存的查询sql会跟随卸载Navicat而删除,为了节省时间省去不必要的麻烦,我们可以查到我们保…

基于STM32和人工智能的智能楼宇安防系统

目录 引言环境准备智能楼宇安防系统基础代码实现:实现智能楼宇安防系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景:智能楼宇安防管理与优化问题解决方案与优化收尾与总结 1. 引言 随着物联网和人工智能技术的…

后端数据null前端统一显示成空

handleNullValues方法在封装请求接口返回数据时统一处理 // null 转 function handleNullValues(data) {// 使用递归处理多层嵌套的对象或数组function processItem(item) {if (Array.isArray(item)) {return item.map(processItem);} else if (typeof item object &&…

开源的语音合成项目-EdgeTTS,无需部署无需Key

前几天和大家分享了:全网爆火的AI语音合成工具-ChatTTS。 有很多小伙伴反应模型下载还有点麻烦~ 今天再给大家带来一款开源的语音合成 TTS 项目-EdgeTTS,相比ChatTTS,操作起来对小白更友好。 因为其底层是使用微软 Edge 的在线语音合成服务…

Java数据结构与算法——稀疏数组和队列

一、稀疏数组sparsearray数组 该二维数组的很多值是默认值0,因此记录了很多没有意义的数据,可以采用稀疏数组进行压缩 1.基本介绍: 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法…

c++文件io,字符串io简单介绍

目录 c文件io 介绍 采用文件流对象操作文件的一般步骤 示例 注意点 利用字节流特性 字符串io 介绍 istringstream ostringstream 示例 c文件io 介绍 c根据文件内容的数据格式分为二进制文件和文本文件 基本上和c一样 c 标准库中有许多不同的标志 用于指定流对象的…