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. Sentieon安装时 jemalloc error 解决办法

    背景 Sentieon建议使用jemalloc来改善Sentieon应用程序中的内存管理和整体性能,尤其是Sentieon bwa-mem.有时在安装运行过程中会出现报错: ERROR: ld.so: ...

  2. Java相关小知识_6_15

    实体完整性要求每个表都有唯一标识符,每一个表中的主键字段不能为空或者重复的值. 参照完整性要求关系中不允许引用不存在的实体.设定相应的更新删除插入规则来更新参考表. Java语言使用的是Unicode ...

  3. 【转载】Linux虚拟化KVM-Qemu分析(四)之CPU虚拟化(2)

    原文信息: 作者:LoyenWang 出处:https://www.cnblogs.com/LoyenWang/ 公众号:LoyenWang 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作 ...

  4. kbuild系统中最简单的目标 -- help(三)

    当你学完help目标后你会发现它与我们的代码基本没有什么直接的关系,仅仅是用来生成kbuild的简短使用说明,但是用它来作为学习掌握kbuild编译系统的开篇,不管是从难度还是学习感受上真的是再适合不 ...

  5. vue+element 判断table表格输入不能为空

    点击确定的时候,判断表格其中某行某值不能为空 1.HTML <div class="app-container"> <el-form ref="form ...

  6. 图像阈值_有cv2.threshold,cv2.adaptiveThreshold 等。

    1.简单阈值 使用的函数:cv2.threshold (src, thresh, maxval, type) 注释: 与名字一样,这种方法非常简单.但像素值高于阈值时,我们给这个像素赋予一个新值(可能 ...

  7. jwt实现token鉴权(nodejs koa)

    为什么需要token 在后台管理系统中,我们通常使用cookie-session的方式用于鉴权,jwt实现token鉴权(nodejs koa) 但这种方式存在着以下问题 比如cookie的容量太小. ...

  8. Hi3798MV200 恩兔N2 NS-1 (四): 制作 Debian rootfs

    目录 Hi3798MV200 恩兔N2 NS-1 (一): 设备介绍和刷机说明 Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改 Hi3798MV200 恩兔N2 NS ...

  9. ArrayList底层原理、线程安全及其相关集合(面试常问)

    一.ArrayList底层原理 1.特点及其原理:ArrayList底层基于数组实现,查找快,增删慢 2.ArrayList底层原理,初始化及调用add()方法添加元素: 默认初始化容量为10 第一次 ...

  10. 4.4 C++ Boost 数据集序列化库

    Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量.可移植.高效的C应用程序.Boost库可以作为标准C库的后备,通常被称为准标准 ...