前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >搭建ELK日志分析平台并收集Nginx日志

搭建ELK日志分析平台并收集Nginx日志

作者头像
子润先生
修改于 2021-07-08 06:23:43
修改于 2021-07-08 06:23:43
96100
代码可运行
举报
运行总次数:0
代码可运行

ELK介绍

需求背景

业务发展越来越庞大,服务器越来越多

各种访问日志、应用日志、错误日志量越来越多,导致运维人员无法很好的去管理日志

开发人员排查问题,需要到服务器上查日志,不方便

运营人员需要一些数据,需要我们运维到服务器上分析日志

为什么要用到ELK?

一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大也就是日志量多而复杂的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。

大型系统通常都是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

一个完整的集中式日志系统,需要包含以下几个主要特点:

1)收集-能够采集多种来源的日志数据

2)传输-能够稳定的把日志数据传输到中央系统

3)存储-如何存储日志数据

4)分析-可以支持 UI 分析

5)警告-能够提供错误报告,监控机制

而ELK则提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。是目前主流的一种日志系统。

ELK简介

ELK是三个开源软件的缩写,分别为:Elasticsearch 、 Logstash以及Kibana , 它们都是开源软件。不过现在还新增了一个Beats,它是一个轻量级的日志收集处理工具(Agent),Beats占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具,目前由于原本的ELK Stack成员中加入了 Beats 工具所以已改名为Elastic Stack。

Elastic Stack包含:

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

详细可参考Elasticsearch权威指南

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Beats在这里是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比 Logstash,Beats所占系统的CPU和内存几乎可以忽略不计

ELK Stack (5.0版本之后)--> Elastic Stack == (ELK Stack + Beats)。目前Beats包含六种工具:

Packetbeat: 网络数据(收集网络流量数据)

Metricbeat: 指标 (收集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)

Filebeat: 日志文件(收集文件数据)

Winlogbeat: windows事件日志(收集 Windows 事件日志数据)

Auditbeat:审计数据 (收集审计日志)

Heartbeat:运行时间监控 (收集系统运行时的数据)

ELK官网:https://www.elastic.co/cn/

中文指南:https://www.gitbook.com/book/chenryn/elk-stack-guide-cn/details

ELK架构图:

环境准备

操作系统:CentOS Linux release 7.4.1708 (Core)

服务器IP:192.168.0.97

软件版本

elasticsearch:elasticsearch-6.2.2.tar.gz

kibana:kibana-6.2.2-linux-x86_64.tar.gz

logstash:logstash-6.2.2.tar.gz

JDK:JDK-1.8.0_181

一、基础环境配置及软件包下载

1、关闭防火墙和selinux

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# systemctl disable firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

2、内核优化

[root@localhost ~]# vim /etc/security/limits.conf

#在文件最后添加以下内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* soft nofile 65537* hard nofile 65537* soft nproc 65537* hard nproc 65537

[root@localhost ~]# egrep -v "^$|#" /etc/security/limits.conf

[root@localhost ~]# vim /etc/security/limits.d/20-nproc.conf

#修改以下内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* soft nproc 4096

[root@localhost ~]# vim /etc/sysctl.conf

#添加以下内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vm.max_map_count = 262144net.core.somaxconn=65535net.ipv4.ip_forward = 1

#执行sysctl -p使其生效

[root@localhost ~]# sysctl -p

3、安装JDK环境

[root@localhost ~]# wget https://mirrors.yangxingzhen.com/jdk/jdk-8u181-linux-x64.tar.gz

[root@localhost ~]# tar zxf jdk-8u181-linux-x64.tar.gz -C /usr/local

#配置/etc/profile,添加以下内容

[root@localhost ~]# vim /etc/profile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export JAVA_HOME=/usr/local/jdk1.8.0_181export JRE_HOME=/usr/local/jdk1.8.0_181/jreexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$PATH

[root@localhost ~]# source /etc/profile

#看到如下信息,java环境配置成功

[root@localhost ~]# java -version

java version "1.8.0_181"

Java(TM) SE Runtime Environment (build 1.8.0_181-b13)

Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

二、安装Elasticsearch

1、创建持久化目录及logs目录

[root@localhost ~]# mkdir -p /data/elasticsearch/{data,logs}

2、下载elasticsearch软件包

[root@localhost ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.tar.gz

3、解压并重命名

[root@localhost ~]# tar zxf elasticsearch-6.2.2.tar.gz

[root@localhost ~]# mv elasticsearch-6.2.2 /usr/local/elasticsearch

4、修改elasticsearch.yml配置文件,文件内容如下

[root@localhost ~]# vim /usr/local/elasticsearch/config/elasticsearch.yml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node.name: localhostpath.data: /data/elasticsearch/datapath.logs: /data/elasticsearch/logsnetwork.host: 0.0.0.0http.port: 9200

5、创建elk用户并授权

[root@localhost ~]# useradd elk

[root@localhost ~]# chown -R elk.elk /data/elasticsearch/*

[root@localhost ~]# chown -R elk.elk /usr/local/elasticsearch

6、启动es服务(第一次先测试好在加-d后台启动)

[root@localhost ~]# su – elk

[elk@localhost ~]$ /usr/local/elasticsearch/bin/elasticsearch

7、后台启动es服务

[elk@localhost ~]$ /usr/local/elasticsearch/bin/elasticsearch -d

Elasticsearch常用命令

curl -XDELETE 'http://host.IP.address:9200/logstash-*' 删除索引(后面为索引名称)

curl -XGET 'host.IP.address:9200/_cat/health?v&pretty' 查看集群状态

curl -XGET 'host.IP.address:9200/_cat/indices?v&pretty' 查看索引

三、安装logstash

1、下载软件包

[root@localhost ~]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.2.tar.gz

2、解压并重命名

[root@localhost ~]# tar zxf logstash-6.2.2.tar.gz

[root@localhost ~]# mv logstash-6.2.2 /usr/local/logstash

3、编辑logstash.yml配置文件,添加以下内容

[root@localhost ~]# vim /usr/local/logstash/config/logstash.yml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
config.reload.automatic: trueconfig.reload.interval: 10s

4、创建Nginx配置文件

[root@localhost ~]# mkdir /usr/local/logstash/conf

[root@localhost ~]# vim /usr/local/logstash/conf/nginx.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
input {file {path => "/usr/local/nginx/logs/access.log"start_position => "beginning"}}filter {}output {#stdout { codec=> rubydebug }elasticsearch {hosts => ["192.168.0.97:9200"]index => "nginx_access-%{+YYYY.MM.dd}"}}

四、安装Kibana

1、下载Kibana软件包

[root@localhost ~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.2-linux-x86_64.tar.gz

2、解压并重命名

[root@localhost ~]# tar zxf kibana-6.2.2-linux-x86_64.tar.gz

[root@localhost ~]# mv kibana-6.2.2-linux-x86_64 /usr/local/kibana

[root@localhost ~]# chown -R elk.elk /usr/local/kibana

3、编辑kibana.yml配置文件

[root@localhost ~]# vim /usr/local/kibana/config/kibana.yml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server.port: 5601server.host: "192.168.0.97"elasticsearch.url: "http://192.168.0.97:9200"

4、启动Kibana服务(采用后台启动)

#前台启动

[elk@localhost ~]$ /usr/local/kibana/bin/kibana

#后台启动

[elk@localhost ~]$ /usr/local/kibana/bin/kibana &

温馨提示:可以先前台启动查看日志,正常之后在后台启动。

5、访问Kibana

#浏览器访问http://192.168.0.97:5601,界面如下

因为现在没有数据,我们现在配置Nginx进行Nginx的日志收集

五、安装并配置Nginx收集日志

1、下载Nginx软件包

[root@localhost ~]# wget https://mirrors.yangxingzhen.com/nginx/nginx-1.15.2.tar.gz

2、解压软件包

[root@localhost ~]# tar zxf nginx-1.15.2.tar.gz

3、预编译

[root@localhost ~]# cd nginx-1.15.2

[root@localhost nginx-1.15.2]# yum -y install pcre pcre-devel openssl openssl-devel gcc gcc-c++

[root@localhost nginx-1.15.2]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module

4、编译及安装

[root@localhost nginx-1.15.2]# make && make install

5、编辑nginx.conf配置文件,配置内容如下

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
user www www;worker_processes 1;    events {    worker_connections 1024;    }http    {    include mime.types;    log_format main '{"@timestamp":"$time_iso8601",'            '"host":"$server_addr",'            '"clientip":"$remote_addr",'            '"remote_user":"$remote_user",'            '"request":"$request",'            '"http_user_agent":"$http_user_agent",'            '"size":$body_bytes_sent,'            '"responsetime":$request_time,'            '"upstreamtime":"$upstream_response_time",'            '"upstreamhost":"$upstream_addr",'            '"http_host":"$host",'            '"requesturi":"$request_uri",'            '"url":"$uri",'            '"domain":"$host",'            '"xff":"$http_x_forwarded_for",'            '"referer":"$http_referer",'            '"status":"$status"}';    access_log logs/access.log main;    default_type application/octet-stream;    sendfile on;    keepalive_timeout 65;server {listen 80;server_name localhost;location / {root html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}

6、启动Nginx服务

[root@localhost nginx-1.15.2]# useradd www

[root@localhost nginx-1.15.2]# /usr/local/nginx/sbin/nginx

7、测试logstash配置文件是否正常

[root@localhost nginx-1.15.2]# chown -R elk.elk /usr/local/logstash

[root@localhost nginx-1.15.2]# su – elk

[elk@localhost ~]$ /usr/local/logstash/bin/logstash -f /usr/local/logstash/conf/nginx.conf -t

8、启动logstash

[elk@localhost ~]$ /usr/local/logstash/bin/logstash -f /usr/local/logstash/conf/nginx.conf

温馨提示,一定要确保logs目录elk有权限写入,建议我们在启动elk之前在执行一次chown -R elk.elk /usr/local/logstash

请确保logstash中的file文件有读取权限,否则无法在ES中创建索引!

9、Kibana配置

目前logstash已经将收集的日志存储在es里面,我们需要用kibana进行展示

点击Management

创建索引

至此,Nginx日志采集成功。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux安装ELK日志平台(7.5.1)
一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大也就是日志量多而复杂的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。
子润先生
2021/07/07
1.8K1
Centos 7.3 简便搭建EFK日志分析
EFK 不是一个软件,而是一套解决方案。EFK 是三个开源软件的缩写,Elasticsearch,FileBeat,Kibana。其中 ELasticsearch 负责日志分析和存储,FileBeat 负责日志收集,Kibana 负责界面展示。它们之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前主流的一种日志分析系统解决方案。 EFK 和 ELK 只有一个区别, 收集日志的组件由 Logstash 替换成了 FileBeat,因为 Filebeat 相对于 Logstash 来说有2个好处:
小手冰凉
2020/03/06
1.9K0
Centos 7.3 简便搭建EFK日志分析
搭建ELK日志分析系统
ELK Stack 是Elasticsearch、Logstash、Kiban三个开源软件的组合。在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故有此简称。 ELK Stack成为机器数据分析,或者说实时日志处理领域,开源界的第一选择。和传统的日志处理方案相比,ELK Stack 具有如下几个优点: • 处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用; • 配置简易上手。Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL 设计,都是目前业界最通用的配置语法设计; • 检索性能高效。虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到全天数据查询的秒级响应; • 集群线性扩展。不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的; • 前端操作炫丽。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。 官网地址:https://www.elastic.co/cn/ 官网权威指南: https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html 安装指南: https://www.elastic.co/guide/en/elasticsearch/reference/6.x/rpm.html Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。 Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。 Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。
菲宇
2019/06/11
1.3K0
搭建ELK日志分析系统
部署elk平台
说明 对于ELK部署使用而言,下面是一个再常见不过的架构了 Redis:接收用户日志的消息队列。 Logstash:做日志解析,统一成JSON输出给Elasticsearch。 Elasticsear
零月
2018/04/25
1.5K0
部署elk平台
kubernetes Filebeat+ELK日志收集监控方案
接收来自filebeat的数据,根据其中的tags进行分类,再添加index进行分类,例如nginx-access-%{+YYYY.MM.dd},在kibana中会根据这个index获取日志。
kubernetes中文社区
2019/06/24
3.2K0
kubernetes  Filebeat+ELK日志收集监控方案
ELK+FileBeat日志分析系统(正式环境nginx日志)
ElasticSearch、Logstash和Kibana 这里还用到一个插件那就是filebeat进行进行采集日志 添加filebeat插件现在已经是非常提倡的做法
全栈程序员站长
2021/06/08
5680
ELK+FileBeat日志分析系统(正式环境nginx日志)
kubernetes-平台日志收集ELK(十七)
使用ELK Stack收集Kubernetes平台中日志与可视化 K8S系统的组件日志 K8S Cluster里面部署的应用程序日志 日志系统: ELK安装 安装jdk [root@localhost
yuezhimi
2020/09/30
6060
搭建ELK日志分析系统详解
日志分析是我们运维解决系统故障、发现问题的主要手段。为了可以集中管理多台服务器的日志记录,开源实时日志分析ELK平台应用而生,ELK由Elasticsearch、Logstash和Kibana三个开源工具组成,这三个工具可以分别部署在不同的服务器上,并且相互关联,不过需要收集哪台服务器的日志,就必须在该服务器上部署Logstash。ELK的官网是:https://www.elastic.co/cn/ .
小手冰凉
2019/10/15
1.8K0
搭建ELK日志分析系统详解
日志收集-Elk6
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。
yaohong
2019/08/21
8970
10 分钟快速搭建 ELK 日志分析系统
作者:Json、 一、ELK搭建篇 官网地址: https://www.elastic.co/cn/ 官网权威指南: https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html 安装指南: https://www.elastic.co/guide/en/elasticsearch/reference/5.x/rpm.html ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全
小小科
2018/05/04
8.3K0
10 分钟快速搭建 ELK 日志分析系统
【日志审计】极易上手搭建自己日志采集服务器分析日志(winlogbeat+Elasticsearch+Kibana)
ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。
释然IT杂谈
2022/10/27
3.1K0
【日志审计】极易上手搭建自己日志采集服务器分析日志(winlogbeat+Elasticsearch+Kibana)
开源实时日志分析ELK平台部署
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。 通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。 集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们
小小科
2018/05/04
1.3K0
开源实时日志分析ELK平台部署
EFK(Elasticsearch+Filebeat+Kibana)日志收集系统
Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。
Java架构师必看
2021/06/10
19.8K2
EFK(Elasticsearch+Filebeat+Kibana)日志收集系统
ELK(ElasticSearch, Logstash, Kibana)搭建日志分析平台
作者:FenG_Vnc 来源:见文末 环境 : 一台 centos 6.7 IP地址: 192.168.88.250 软件版本 : ElasticSearch 2.1.0 Logstash 2.1.1 Kibana 4.3.1 JDK 1.8.0.77 JDK 我这里没有地址 就不连接了 下载好JDK 放在路径/usr/local/java 编辑配置文件 /etc/profile export JAVA_HOME=/usr/local/java/jdk1.8.0_77 export P
小小科
2018/06/20
7190
fliebeat+kafka的ELK日志分析平台(下)
操作服务器(elastic-server) 1.先安装jdk-1.8 yum install java-1.8.0 -y
陈不成i
2021/07/05
3830
Centos7下ELK+Redis日志分析平台的集群环境部署记录
之前的文档介绍了ELK架构的基础知识(推荐参考下http://blog.oldboyedu.com/elk/),日志集中分析系统的实施方案: - ELK+Redis - ELK+Filebeat - ELK+Filebeat+Redis - ELK+Filebeat+Kafka+ZooKeeper
洗尽了浮华
2018/08/01
1.6K0
Centos7下ELK+Redis日志分析平台的集群环境部署记录
Logback+ELK+SpringMVC搭建日志收集服务器
今天给大家带来的是logback+ELK+SpringMVC 日志收集服务器搭建。接下来我会介绍ELK是什么?logback是什么?以及搭建的流程。 1.ELK是什么? ELK是由Elasticsearch、Logstash、Kibana这3个软件的缩写。 Elasticsearch是一个分布式搜索分析引擎,稳定、可水平扩展、易于管理是它的主要设计初衷 Logstash是一个灵活的数据收集、加工和传输的管道软件 Kibana是一个数据可视化平台,可以通过将数据转化为酷炫而强大的图像而实现与数据的交互将三者的
程序猿DD
2018/03/26
2.1K0
Logback+ELK+SpringMVC搭建日志收集服务器
开源组件ELK日志系统配置与管理
开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:https://www.elastic.co/products
民工哥
2020/09/16
4050
开源组件ELK日志系统配置与管理
elk+filebeat+grafana日志收集平台学习笔记
node1:elasticsearch6.4+filebeat node2:kibana6.4+grafana+filebeat node3:logstash+nginx+filebeat+Redis 由于es很消耗内存,所以我只把es单独运行在一个主机上,并设置主分片为1,副本分片为0,每周定时删除上周的索引数据
没有故事的陈师傅
2019/07/27
3.8K0
搭建ELK日志分析平台(下)—— 搭建kibana和logstash服务器
笔记内容:搭建ELK日志分析平台——搭建kibana和logstash服务器 笔记日期:2018-03-03
端碗吹水
2020/09/23
3.5K0
搭建ELK日志分析平台(下)—— 搭建kibana和logstash服务器
推荐阅读
相关推荐
Linux安装ELK日志平台(7.5.1)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验