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. Redis集群搭建之三大模式

    一.简介: Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存.Redis 在3.0版本前只支持单实例模式,虽然支持主从模式.哨兵模式部署来解 ...

  2. Spring相关API

    ApplicationContext的继承体系 applicationContext applicationContext:接口类型,代表应用上下文,可以通过其实例获得Spring容器中的Bean A ...

  3. Python爬虫实战之提高CSDN访问量

    python爬虫之建立代理池(一)_CodingInCV的博客-CSDN博客 python爬虫之建立代理池(二)_CodingInCV的博客-CSDN博客 前面2篇分别介绍了从2个免费代理网站爬取免费 ...

  4. 行行AI人才直播第13期:刘红林律师《AIGC创业者4大法律问题需注意》

    行行AI人才(海南行行智能科技有限公司)是博客园和顺顺智慧共同运营的AI行业人才全生命周期服务平台. AIGC爆火至今,商业落地已成为各行各业焦点的问题.它的广泛应用也带来了一系列的法律风险和挑战.一 ...

  5. 从零玩转系列之微信支付实战PC端支付微信回调接口搭建

    一.前言 halo各位大佬很久没更新了最近在搞微信支付,因商户号审核了我半个月和小程序认证也找了资料并且将商户号和小程序进行关联,至此微信支付Native支付完成.此篇文章过长我将分几个阶段的文章发布 ...

  6. Vue错误:Cannot read properties of undefined (reading '$router')

    解决方案 这是由于this的指向有问题,我们只需要重新声明一下this就可以重新调用了

  7. LangChain:打造自己的LLM应用

    1.LangChain是什么 LangChain是一个框架,用于开发由LLM驱动的应用程序.可以简单认为是LLM领域的Spring,以及开源版的ChatGPT插件系统.核心的2个功能为: 1)可以将 ...

  8. 如何将 dubbo filter 拦截器原理运用到日志拦截器中?

    业务背景 我们希望可以在使用日志拦截器时,定义属于自己的拦截器方法. 实现的方式有很多种,我们分别来看一下. 拓展阅读 java 注解结合 spring aop 实现自动输出日志 java 注解结合 ...

  9. jmeter:内存溢出解决办法

    使用jmeter执行性能测试,报错:java.lang.OutOfMemoryError: Java heap space 需要对jmeter的jvm进行调优.记录如下: 1. 问题记录及分析: 使用 ...

  10. centos7.X安装nginx – 东凭渭水流

    1.安装nginx需要使用root用户 2.配置nginx源 rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release ...