1、shell三剑客同居、分析nginx日志:
1)在企业生产环境中,日志内容主要用来做什么? 日志内容主要用于运维人员、开发人员、DBA排错软件服务故障的,因为通过日志内容能够第一时间找到软件服务的异常或者故障原因,从而第一时间解决问题,降低企业的损失。
 
2)日志内容在企业中,除了用于排错、定位问题之外。运维u人员、开发人员还可以对日志内容进行分析、统计、过滤,评估网站访问量、PV(Page Veiw)、UV(uniq visitor)、IP(独立IP)、用于访问行为等。
 
3)基于SHELL编程三剑客awk、sed、grep来分析、统计线上nginx日志、统计nginx访问日志全天总的请求数:
wc -l access_20200228.log|cut -d" " -f1
awk '{print $0}' access_20200228.log|wc -l
awk '{print NR}' access_20200228.log|tail -1
sed = access_20200228.log|tail -2|head -1
grep -aic "" access_20200228.log

4)基于SHELL编程三剑客awk、sed、grep来分析、统计线上nginx日志,统计nginx访问日志全天(09:00-11:00)总的请求数:

grep "2020:09:00" access_20200228.log|wc -l|more
grep "2020:11:00" access_20200228.log|wc -l
sed -n '/2020:09:00/'p access_20200228.log
awk "/2020:09:00/,/2020:11:00/" access_20200228.log|wc -l
sed -n '/2020:09:00/,/2020:11:00/'p access_20200228.log|wc -l

5)基于SHELL编程三剑客awk、sed、grep来分析、统计线上nginx日志,统计nginx访问日志全天(09:00-11:00)总的请求数,将访问的用户IP打印出来, 将访问量排前20名IP打印:
将访问用户IP打印出来:

sed -n '/2020:09:00/,/2020:11:00/'p access_20200228.log|cut -d" " -f1
sed -n '/2020:09:00/,/2020:11:00/'p access_20200228.log|awk '{print $1}'
sed -n '/2020:09:00/,/2020:11:00/'p access_20200228.log|grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"

将访问量排前20名的IP打印出来:

sed -n '/2020:09:00/,/2020:11:00/'p access_20200228.log|grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -n|uniq -c
sed -n '/2020:09:00/,/2020:11:00/'p access_20200228.log|grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -n|uniq -c|sort -nr|head -20
2、ELK日志企业概念:
1)根据如上的三剑客awk、sed、grep统计、分析线上nginx日志,发现执行效率和结果很低,速度很慢,尤其是日志量非常庞大的时候,效率极低,在企业中要求实时统计、分析,awk、sed、grep显然不可取的。
2)在企业生产环境中,常见的日志种类:
 
系统日志;
 
内核日志;
 
审计日志;
 
安全日志;
 
应用日志;
3)ELK不是一款软件组成,是由三款软件组成的,分别是:ElasticSearch、Logstash、Kibana,其中ES、Logstash均是基于Java语言开发的,所以底层需要依赖JAVA JDK工具包。
 
ElasticSearch
ElasticSearch是基于JAVA语言开发的开源的、分布式、搜索存储引擎,主要是用于持久化存储日志内容(硬盘上)、同时具备实时的检索、分析、统计功能。类似百度搜索引擎的功能。
 
Logstash
Logstash是基于JAVA语言开发的开源的、免费的日志收集工具,主要是用于收集客户端的日志内容(系统、内核、安全、应用日志),同时可以过滤日志内容,最终将日志内容持久化存储到ElsticSearch服务器。 每个客户端主机均需要安装Logstash日志收集插件。
 
Kibana
Kibana是基于Nodejs语言开发的WEB程序(UI界面:web前端框架),主要是为ElasticSearch、Logstash提供WEB界面操作,方便运维人员、开发人员更加直观的对ELK平台配置、日志分析、日志统计等。
 
4)ELK分布式日志平台工作原理:
客户端安装Logstash日志收集工具,通过Logstash收集客户端应用程序的日志内容,将所有的日志过滤出来,并且存入ElasticSearch搜索引擎里,然后通过Kibana UI在WEB前端展示给用户,用户需要可以进行查询指定的ES引擎中日志内容。

3、ELasticsearch配置实战(5.3版本):
部署配置ES,需要配置JDK 环境,JDK(Java Development Kit)是Java 语言的软件开发工具包(SDK):
分别下载ELK软件包:

wget   https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.tar.gz
wget   https://artifacts.elastic.co/downloads/logstash/logstash-5.3.0.tar.gz
wget   https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-linux-x86_64.tar.gz

1)ELK安装环境信息:(其中Elasticcsearch与Kibana可以安装在一台机器上 )

192.168.1.11  Elasticsearch
192.168.1.13  Kibana
192.168.1.14  Logstash

2)192.168.1.12 安装ES(虚拟机最好给2G):
安装JDK:

mkdir -p /usr/java
tar xf jdk1.8.0_131.tar.gz -C /usr/java
配置环境变量:vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_131
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
使环境变量立刻生效,同时查看JAVA版本,显示版本信息,则证明安装成功:
source /etc/prefile
java -version
下载ES并配置:
tar xf elasticsearch-5.3.0.tar.gz
mv elasticsearch-5.3.0 /usr/local/elasticsearch

修改 /usr/local/elasticsearch/config/jvm.options文件
-xms最小使用内存,-xmx最大使用内存: 两个需要设置为一样,或者启动报错

-xms最小使用内存,-xmx最大使用内存: 两个需要设置为一样,或者启动报错
-xms 1g
-xmx 1g
修改 /usr/local/elasticsearch/config/elasticsearch.yml文件:
设置监听地址为network.host:0.0.0.0全网地址:

创建elk普通用户,用来启动ES 服务: ES服务为了安全默认不允许root启动ES:

useradd elk
chmod -R elk. /usr/local/elasticsearch/
su - elk
启动ES服务
/usr/local/elasticserch/bin/elasticsearch -d

4、ELasticsearch配置故障演练:
查看日志:

tailf /usr/local/elasticsearch/logs/elasticsearch.log
启动后可能会报错,需要修改如下内核参数设置:
1)SecComp功能不支持: 以下为报错信息
ERROR: bootstrap checks failed
system call filters failed to install; check the logs and fix your
configuration or disable system call filters at your own risk;

因为Centos6不支持SecComp,而ES5.3.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
Seccpmp(全称securecomputing mode)是Linux Kernel从2.6.23版本开始所支持的一种安全机制。
在Linux系统里,大量的系统调用(systemcall)直接暴露给勇敢态程序。但是并不是所有的系统调用都被需要,而且不安全的代码滥用系统调用会对系统造成安全威胁。通过Seccomp,我们限制程序使用某些系统调用,这样可以减少系统的暴露免,同时使程序进入一种“安全”的状态。

解决方法:

在elasticsearch.yml文件中配置bootstrap.system_call_filter为false,注意要在Memory下面
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

2)内核参数设置问题:
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

解决方法: /etc/security/limits.conf文件中最后添加:
* soft nofile 65536
* hard nofile 65536

max mumder of threads [1024] for user [hadoop] is too low,increase to at least [2048]

解决方法: /etc/security/limits.d/20-nproc.conf
soft  nproc  2048
max virtual memory areas vm.max_map_count[65530]is too low, increase to at least [262144]
解决方法: /etc/sysctl.conf 修改完 sysctl -p生效
vm.max_map_count=262144

initial heap size [536870912] not equal to maximum heap size [1073741824];this can canuse resize pauses and prev ts mlockall from locking the entire heap

解决方法: /usr/local/elasticsearch/config/jvm.options
-xms 1g
-xmx 1g
Max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。再进程的生命周期中,没当程序尝试再内存中映射文件,链接到共享内存端,或者分配堆空间的时候,这些区域将被创建。
调优这个值将限制进程可拥有VMA的数量。限制一个进程拥有VMA的总数可能导致应用程序出错,因为当进程达到VMA上线但又只能释放少量的内存给其它的内核进程使用时,操作系统会抛出内存不足的错误。
如果你的操作系统再NORMAL区域仅占用少量的内存,那么调低这个值可以帮助释放内存给内核用。
sysctl -p 或者退出终端:

至此ES配置完毕,如果像配置ES集群模式,同样也非常简单,只需要拷贝ES副本即可,然后修改相对应的参数。

4、Kibana WEB安装配置:
部署安装Kibana 不需要安装JAVA JDK环境,直接下载源码,解压即可:

tar xzf kibana-5.3.0-linux-x86_64.tar.gz
mv kibana-5.3.0-linux-x86_64 /usr/local/kibana/
修改Kibana配置文件信息,设置ES地址:
vim /usr/local/kibana/config/kibana.yml

启动Kibana服务:

后台启动:
cd /usr/local/kibana/bin/
nohup ./kibana &
查看监听:
netstat -nutlp|grep -E "5601"

web浏览访问kibanaIP地址:5601端口:

5、Logstash客户端配置实战:

由于Logstash基于JAVA语言开发,Agent部署需要安装JDK运行环境库:
mkdir -p /usr/java/
tar xf jdk-1.8.0_131 -C /usr/java/
vim /etc/profile添加如下代码:
export JAVA_HOME=/usr/java/jdk1.8.0_131
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
解压Logstash软件:
tar xf logstash-5.3.0.tar.gz
mv logstash-5.3.0 /usr/local/logstash
6、ELK收集系统标准日志:
#创建收集日志配置目录:
mkdir -p /usr/local/logstash/config/etc 
cd /usr/local/logstash/config/etc

创建ELK整合配置文件: vim elk.conf内容如下:

input {
 stdin { }
}
output {
 stdout {
 codec => rubydebug {}
}
 elasticsearch {
 hosts => "192.168.1.11:9200" }
}

启动logstash服务:

/usr/local/logstash/bin/logstash  -f  elk.conf
后台启动:
nohup /usr/local/logstash/bin/logstash -f elk.conf &
ps -ef|grep java

7、ELK-WEB日志数据图表:
Logstah启动窗口中输入任意信息,会自动输出相应格式日志信息:
浏览器输入:http://KibanaIP地址:5601/
为了使用Kibana 你必须配置至少一个索引模式,索引模式是用于确认Elasticsearch index,用来运行搜索和分析,也可以用于配置字段。
index contains time-based events 索引基于时间的事件;
Use event times to create index names [DEPRECATED] 使用事件时间来创建索引名称【过时】
index name or pattern 索引名字或者模式;
模式允许你定义动态的索引名字 使用*作为通配符,例如默认:
logstash-*
选择:
 
Time field name;

 
单击Discover,可以搜索和浏览 Elasticsearch 中的数据,默认搜索的是最近15分钟的数据。 可以自定义选择时间。
 
 

 

ELK日志企业案例:(5.3版本)的更多相关文章

  1. ELK+Kafka 企业日志收集平台(一)

    背景: 最近线上上了ELK,但是只用了一台Redis在中间作为消息队列,以减轻前端es集群的压力,Redis的集群解决方案暂时没有接触过,并且Redis作为消息队列并不是它的强项:所以最近将Redis ...

  2. ELK Stack企业日志平台文档

                                          ELK Stack企业日志平台文档           实验环境 主机名 IP地址 配置 系统版本 用途 controlno ...

  3. Asp-Net-Core-搭建ELK日志平台-Docker-Compose版本

    title: Asp.Net Core 搭建ELK日志平台(Docker-Compose版本) date: 2022-09-27 15:16:59 tags: - .NET 由于暂时用不上Logsta ...

  4. ES系列十七、logback+ELK日志搭建

    一.ELK应用场景 在复杂的企业应用服务群中,记录日志方式多种多样,并且不易归档以及提供日志监控的机制.无论是开发人员还是运维人员都无法准确的定位服务.服务器上面出现的种种问题,也没有高效搜索日志内容 ...

  5. ELK 日志分析系统概述及部署

    ELK 日志分析系统概述及部署 1.ELK概述: ELK简介 : ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch.Logstash 和 Kiabana 三个开源工具配合使用 ...

  6. ELK 日志分析系统的部署

    一.ELK简介 ElasticSearch介绍Elasticsearch是一个基于Lucene的搜索服务器. 它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口. Elasti ...

  7. ELK 日志分析体系

    ELK   日志分析体系 ELK 是指 Elasticsearch.Logstash.Kibana三个开源软件的组合. logstash                       负责日志的收集,处 ...

  8. ELK日志分析系统的应用

    收集和分析日志是应用开发中至关重要的一环,互联网大规模.分布式的特性决定了日志的源头越来越分散, 产生的速度越来越快,传统的手段和工具显得日益力不从心.在规模化场景下,grep.awk 无法快速发挥作 ...

  9. ELK日志框架(2):log4net.ElasticSearch+ Kibana实现日志记录和显示

    环境说明 1. windows server 2012 R2 64位 2. log4net.ElasticSearch 3. kibana-5.5.0-windows-x86.zip 架构说明 数据采 ...

  10. 小白都会超详细--ELK日志管理平台搭建教程

    目录 一.介绍 二.安装JDK 三.安装Elasticsearch 四.安装Logstash 五.安装Kibana 六.Kibana简单使用 系统环境:CentOS Linux release 7.4 ...

随机推荐

  1. 国标GB28181协议客户端开发(四)实时视频数据传输

    国标GB28181协议客户端开发(四)实时视频数据传输 本文是<国标GB28181协议设备端开发>系列的第四篇,介绍了实时视频数据传输的过程.通过解读INVITE报文中的SDP信息,读取和 ...

  2. 【SpringCloud】 Eureka

    Eureka 父工程 核心依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=& ...

  3. 大语言模型中一个调皮的EOS token

    背景 最近需要做一个微调的培训,所以不可避免地需要上手一下相关的微调,而受限于机器资源,暂时没法做全参数微调,所以就尝试了目前比较火的两种高效微调方式,分别是PTuning和LoRA.模型选择得自然是 ...

  4. influxdb 保留策略

    转载请注明出处: InfluxDB 中的保留策略用于定义时间序列数据在数据库中的保留期限.保留策略决定了数据在 InfluxDB 中的存储持续时间和精度.以下是 InfluxDB 的保留策略类型以及如 ...

  5. 2023-7-27WPF的ContextMenu的传参绑定方式

    WPF的ContextMenu的绑定方式 [作者]长生 ContextMenu为何不能正常绑定 在wpf中ContextMenu和ToolTip一样都是弹出层,与VisualTree已经分离了,只不过 ...

  6. 【go语言】2.4.1 如何导入和使用包

    在 Go 语言中,包(package)是代码的组织方式.每个 Go 程序都由包构成,程序从 main 包开始运行. 导入包 使用 import 关键字可以导入包.导入的包可以是 Go 标准库中的包,也 ...

  7. python:map函数

    参考示例 def test(x): return x * 2 mylist = [1, 2, 3, 4, 5] result = list(map(test, mylist)) print(resul ...

  8. Go命令

    build: 编译包和依赖 clean: 移除对象文件 doc: 显示包或者符号的文档 env: 打印go的环境信息 bug: 启动错误报告 fix: 运行go tool fix fmt: 运行gof ...

  9. Nginx反向代理服务流式输出设置

    Nginx反向代理服务流式输出设置 1.问题场景 提问:为什么我部署的服务没有流式响应 最近在重构原有的GPT项目时,遇到gpt回答速度很慢的现象.在使用流式输出的接口时,接口响应速度居然还是达到了3 ...

  10. 【opencv】传统目标检测:Haar检测器实现人脸检测

    传统目标分类器主要包括Viola Jones Detector.HOG Detector.DPM Detector,本文主要介绍VJ检测器,在VJ检测器基础上发展出了Haar检测器,Haar检测器也是 ...