高清多图 利用ELK分析Nginx日志生产实战

本文以api.mingongge.com.cn域名为测试对象进行统计,日志为crm.mingongge.com.cn和risk.mingongge.com.cn请求之和(此二者域名不具生产换环境统计意义),生产环境请根据具体需要统计的域名进行统计 。
由于涉及生产线上服务器,故本文部分服务器IP做了打码处理 。
一、服务介绍
1.1、ELK
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件 。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具 。
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能 。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等 。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式 。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去 。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志 。
【高清多图 利用ELK分析Nginx日志生产实战】1.2、Nginx
Nginx("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器 。Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日 。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名 。Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行 。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用 。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、腾讯等 。
本文中前端使用了nginx的反向代理功能,并使用了nginx的HTTP功能 。
1.3、Kafka
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和JAVA编写 。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据 。这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素 。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决 。对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案 。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息 。
二、架构要求
2.1、架构描述
使用filebeat收集nginx日志,输出到kafka;logstash从kafka中消费日志,通过grok进行数据格式化,输出到elasticsearch中,kibana从elasticsearch中获取日志,进行过滤出图.

高清多图 利用ELK分析Nginx日志生产实战

文章插图
 
2.2、系统版本
centos linux release 7.2.1511 (Core)3.10.0-514.26.2.el7.x86_642.3、软件版本
jdk1.8.0_144nginx-1.12.2filebeat-6.3.2awurstmeister/kafka(Docker image)logstash-6.5.4elasticsearch-6.4.0kibana-6.4.0三、linux系统环境配置与优化
#查看服务器硬件信息dmidecode|grep "Product Name"#查看CPU型号grep name /proc/cpuinfo#查看CPU个数grep "physical id" /proc/cpuinfo#查看内存大小grep MemTotal /proc/meminfo四、系统初始化
4.1、关闭防火墙
systemctl stop filewalld4.2、关闭selinux
setenforce 0sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config4.3、添加普通账户
useradd elsearchecho "******"|passwd --stdin elsearch4.4、配置yum源
cat /etc/yum.repos.d/CentOS-Base.repo[base]name=CentOS-$releaseverenabled=1failovermethod=prioritybaseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/gpgcheck=1gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7[updates]name=CentOS-$releaseverenabled=1failovermethod=prioritybaseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/gpgcheck=1gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7[extras]name=CentOS-$releaseverenabled=1failovermethod=prioritybaseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/gpgcheck=1gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7


推荐阅读