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
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
创建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
至此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
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