Centos7安装配置ELK(Elasticsearch + Logstash + Kibana)分析Nginx日志简单单点配置

简介: ELK的架构原理: logstash收集nginx日志,并对日志进行过滤拆分,并将处理后的结构化数据输出给elastcsearch,es对日志进行存储和索引构建,kibana提供图形界面及对es 查询api进行了封装,提供友好的查询和统计页面。

ELK的架构原理:

logstash收集nginx日志,并对日志进行过滤拆分,并将处理后的结构化数据输出给elastcsearch,es对日志进行存储和索引构建,kibana提供图形界面及对es 查询api进行了封装,提供友好的查询和统计页面。
在生产环境中,logstash作为agent安装部署在任何想要收集日志的主机上,为了缓解多个agent对ES的输出压力,需要定义一个broker(redis)对日志进行输入缓冲,然后定义一个logstash server对broker中的日志统一读取并输出给ES集群。broker常常使用redis,为了broker的高可用,还可以对redis做集群部署。
单点安装测试只部署一个es,一个logstash agent,一个kibana,一个nginx。

安装测试流程:

1.安装nginx-1.12.0



#安装gcc等编译工具

sudo yum groupinstall -y '开发工具'

#安装nginx需要的pcre ,zlib开发库

yum install -y pcre-devel zlib-devel  

#创建nginx的安装目录

mkdir nginx

#配置编译安装nginx
tar zxf nginx-1.12.0.tar.gz

cd nginx-1.12.0

./configure --prefix=/home/hoewon/nginx 

make 

make install

#简单配置nginx

user root

#运行
sudo nginx

2.安装logstash

#
tar zxf logstash-5.5.2.tar.gz

#对grok-pattern做连接

ln -s $LOGSTASH_HOME/ vendor/bundle/jruby/1.9/gems/logstash-patterns-core-4.1.1/patterns/grok-patterns/grok-patterns grok-patterns

#在grok-patterns追加nginx日志的模式,因为对http_x_forwarded_for 的匹配不好使,所以zhushidiaole

NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:clientip} - %{NOTSPACE:remote_user} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent}
# %{NOTSPACE:http_x_forwarded_for}
#编辑logstash启动脚本
vim simple.conf

input {
        file{
                path => ["/home/hoewon/nginx/logs/access.log"]
                type => "nginxlog"
                start_position => "beginning"
        }

}

filter{
        grok{
                match => {

                        "message" => "%{NGINXACCESS}"
                }
        }
}

output{
        stdout{
                codec => rubydebug
        }

}

#检查运行配置文件
 bin/logstash -t -f simple.conf

#运行logstash,并测试输出
 bin/logstash  -f simple.conf

输出如下

{
        "request" => "/favicon.ico",
          "agent" => "\"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.3368.400 QQBrowser/9.6.11974.400\"",
           "verb" => "GET",
        "message" => "192.168.247.1 - - [08/Sep/2017:15:25:46 +0800] \"GET /favicon.ico HTTP/1.1\" 403 571 \"-\" \"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.3368.400 QQBrowser/9.6.11974.400\"",
           "type" => "nginxlog",
    "remote_user" => "-",
           "path" => "/home/hoewon/nginx/logs/access.log",
       "referrer" => "\"-\"",
     "@timestamp" => 2017-09-08T08:04:19.534Z,
       "response" => "403",
          "bytes" => "571",
       "clientip" => "192.168.247.1",
       "@version" => "1",
           "host" => "kube01",
    "httpversion" => "1.1",
      "timestamp" => "08/Sep/2017:15:25:46 +0800"
}

测试输入输出无误的话,更改output插件为elsaticsearch

input {
        file{
                path => ["/home/hoewon/nginx/logs/access.log"]
                type => "nginxlog"
                start_position => "beginning"
        }

}

filter{
        grok{
                match => {

                        "message" => "%{NGINXACCESS}"
                }
        }
}

output{

        elasticsearch{
                hosts => ["192.168.247.142:9200"]
                index => "nginxlog"

        }
}

3.安装Elasticsearch



# 
tar zxf elasticsearch-5.5.2.tar.gz

#
sudo vim /etc/security/limits.conf

#<domain>        <type>  <item>  <value>
hoewon           soft    nofile     65536
hoewon           hard    nofile     65536
hoewon           soft    nproc      2048
hoewon           hard    nproc      2048

#modify the vm.max_map_count

sudo vim /etc/sysctl.conf

  vm.max_map_count=262144

#
sysctl -p

#vim $ES_HOME/conf/elasticsearch.conf
network.host:    192.168.247.142 (or 0.0.0.0)
http.port: port
#如果是集群修改如下配置,集群是通过cluster.name自动在9300端口上寻找节点信息的
node.name: nodename
cluster.name: clustername

#
$ES_HOME/bin/elasticsearch

4.安装kibana


#
tar zxf kibana-5.5.2-linux-x86_64.tar.gz

# 
vim $KIBANA_HOME/conf/kibana.yml

server.host: "192.168.247.142"
elasticsearch.url: "http://192.168.247.142:9200"

#
$KIBANA_HOME/bin/kibana

测试:
访问nginx所在主机80端口。logstash会自动收集日志,并输出给es,登录kibana所在主机:5601/,配置好es index的pattern,然后在discover中就可以查到文档信息。如下:
MF_QULS0RTQI8CNHHPAPHZT

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
目录
相关文章
|
7月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
550 0
|
8月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
1247 64
搭建ELK日志收集,保姆级教程
|
8月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1398 5
|
安全 BI 网络安全
EventLog Analyzer 如何满足等保合规要求?密码有效期、产品日志保留、配置备份三大核心问题全面解答
EventLog Analyzer(ELA)助力企业满足网络安全等级保护要求,支持配置自动/手动备份、日志180天留存及密码策略管理,提升合规性与安全运营效率。
252 0
|
10月前
|
JSON 安全 Go
Go语言项目工程化 —— 日志、配置、错误处理规范
本章详解Go语言项目工程化核心规范,涵盖日志、配置与错误处理三大关键领域。在日志方面,强调其在问题排查、性能优化和安全审计中的作用,推荐使用高性能结构化日志库zap,并介绍日志级别与结构化输出的最佳实践。配置管理部分讨论了配置分离的必要性,对比多种配置格式如JSON、YAML及环境变量,并提供viper库实现多环境配置的示例。错误处理部分阐述Go语言显式返回error的设计哲学,讲解标准处理方式、自定义错误类型、错误封装与堆栈追踪技巧,并提出按调用层级进行错误处理的建议。最后,总结各模块的工程化最佳实践,助力构建可维护、可观测且健壮的Go应用。
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
929 90
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
存储 监控 安全
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
消息中间件 Kafka 开发工具
rsyslog+ELK收集Cisco日志
rsyslog+ELK收集Cisco日志