热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

elk分析nginx访问日志

看日志是很麻烦的事情,作为一个运维工程师,就要是把繁琐的事情简单化,标准化,慢慢的取代繁琐的命定操作,连系统都不用登录了。这个elk日志服务器主要是为了更好的分析日志。而实施的手段和

   看日志是很麻烦的事情,作为一个运维工程师,就要是把繁琐的事情简单化,标准化,慢慢的取代繁琐的命定操作,连系统都不用登录了。这个elk日志服务器主要是为了更好的分析日志。而实施的手段和原理请看图

 wKioL1XNWHGwPB_ZAAErAE7qZjQ757.jpg

   它的原理主要是用logstash软件在shipper上收集input函数里的日志并发送给indexer,但是我们用broker来充当缓存区(用redis实现),然后用elasticsearch来提供搜索,而kibana是把内容用web形式显示。

   为了公司信息的保密,我就用个其他的ip来代替外网ip:

shipper:1.1.1.1(nginx服务器ip)

内网网关:2.2.2.2(做DNAT用于内网收集服务器ip)

broker:192.168.1.2(用redis做缓存)

indexer:192.168.1.2(从Broker中提取数据,可以执行相关的分析和处理(Filter))

search&storage:192.168.1.2(用elasticsearch来存储最终日志和提供搜索功能)

web interface:192.168.1.2 (logstash自带的kibana提供web页面)


shiper上操作:

安装java,logstash

由于我们外网nginx服务器是debian系统(不熟),于是我用tar包来安装

oracle官网上下载jdk,我的系统是64位,所以下载jdk-7u79-linux-x64.gz

一.jdk安装


  1. 安装

mkdir /usr/java

jdk-7u79-linux-x64.gz移动到 /usr/java

 mv  jdk-7u79-linux-x64.gz /usr/java

 解压:

  tar xvf jdk-7u79-linux-x64.gz

 

  2. 配置环境变量

    tomcat 运行的时候需要通过java环境变量找到java程序

编辑/etc/profile,在文件末尾添加如下内容:

export JAVA_HOME=/usr/java/jdk1.7.0_79

   exportJRE_HOME=/usr/java/jdk1.7.0_79/jre

   exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

   exportPATH=$PATH:$JAVA_HOME/bin

3.让配置生效:

source /etc/profile  

验证:

[root@mailjava]# java -version

java version"1.7.0_79"

Java(TM) SERuntime Environment (build 1.7.0_79-b15)

Java HotSpot(TM)64-Bit Server VM (build 24.79-b02, mixed mode)

nice jdk安装完成

二.logstash安装

1.wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz

tar xzvf logstash-1.4.2.tar.gz -C /app/ && mv /app/logstash-1.4.2 /app/logstash

mkdir  -p /app/logstash/conf

2.

root@:/app/logstash/conf# pwd

/app/logstash/conf

root@:/app/logstash/conf# vi nginx_access.conf 

input {

    file {

        type => "nginx_access"

        path => "/var/log/nginx/www.1.com.access.log"  

    }

output {

    stdout { codec => rubydebug }

    redis {


        host => '2.2.2.2‘

        data_type => 'list'

        key => 'logstash:redis'

    }

}

基本上上安装是成功了,等下面192.168.1.2上都搭好后,输入命定root@l:/app/logstash/conf# /app/logstash/bin/logstash agent -f /app/logstash/conf/nginx_access.conf & 就可以把数据传到2.2.2.2了


网关服务器上的操作:

   1.1.1.1上的数据到了2.2.2.2了,那么我们要把它转到192.168.1.2上去,自然使用DNAT

[root@gw ~]# iptables -t nat -A PREROUTING -p tcp --dport 6379 -d 2.2.2.2 -s 1.1.1.1 -i eth2 -j DNAT --to-destination 192.168.1.2:6379  根据上面output可知接受文件的端口是redis开启的端口6379,我相信你们服务器路由功能是开启的。


broker上的操作:

安装redis

wget http://download.redis.io/releases/redis-2.8.17.tar.gz

tar -zxvf redis-2.8.17.tar.gz

cd  /redis-2.8.17.tar.gz

先安装tcl,否则下面会报错

yum install tcl -y

make MALLOC=libc

make test

make install

 

# pwd

/soft/redis-2.8.17/utils

./install_server.sh

Welcome to the redis service installer

This script will help you easily set up a runningredis server

 

Please select the redis port for this instance: [6379]

Selecting default: 6379

Please select the redis config file name[/etc/redis/6379.conf]

Selected default - /etc/redis/6379.conf

Please select the redis log file name[/var/log/redis_6379.log]

Selected default - /var/log/redis_6379.log

Please select the data directory for this instance[/var/lib/redis/6379]

Selected default - /var/lib/redis/6379

Please select the redis executable path[/usr/local/bin/redis-server]

Selected config:

Port           :6379

Config file    :/etc/redis/6379.conf

Log file       :/var/log/redis_6379.log

Data dir       :/var/lib/redis/6379

Executable     :/usr/local/bin/redis-server

Cli Executable : /usr/local/bin/redis-cli

Is this ok? Then press ENTER to go on or Ctrl-C to abort.

Copied /tmp/6379.cOnf=> /etc/init.d/redis_6379

Installing service...

Successfully added to chkconfig!

Successfully added to runlevels 345!

Starting Redis server...

Installation successful!

 

# pwd

/soft/redis-2.8.17/src

[root@logserver src]# ./redis-cli -h 127.0.0.1 -p 6379

127.0.0.1:6379> ping

PONG

127.0.0.1:6379> set name foo

OK

127.0.0.1:6379> get name

"foo"

127.0.0.1:6379> bye

(error) ERR unknown command 'bye'

127.0.0.1:6379> quit


indexer上的操作:

和上面shipper操作差不多,只是

[root@log css]# cd /app/logstash/conf/

[root@log conf]# vi nginx_acces.conf 

input {

    redis {

        host => "192.168.1.21"


       data_type => "list"


        port => "6379"

         codec => "json"

        type => "nginx_logs"

        key => "logstash:redis"

    }

}



output {

    elasticsearch { 

host => "192.168.1.21"

    codec => "json"

}

}

等下面都部署好,输入命定root@l:/app/logstash/conf# /app/logstash/bin/logstash agent -f /app/logstash/conf/nginx_access.conf &就可以把redis上的数据交给elasticsearch来存储和搜索。


search&storage上的操作:

安装elasticsearch

#tar zxvf elasticsearch-1.5.2.tar.gz

#mv elasticsearch-1.5.2 /usr/local/

#cd /usr/local/

#ln -s elasticsearch-1.5.2 elasticsearch

在最下面文件增加如下内容(权限管理和防跨站攻击):

#vi config/elasticsearch.yml

http.cors.allow-origin: "/.*/"

http.cors.enabled: true

script.disable_dynamic: true

 

保存后,我们可以用以下命令启动

#/usr/local/elasticsearch/bin/elasticsearch -f

ctrl+c退出


以后台方式运行

#/usr/local/elasticsearch/bin/elasticsearch -d



web interface上操作:

安装httpd和kibana3

yum -y install httpd

wget

https://download.elasticsearch.org/kibana/kibana/kibana-3.1.1.tar.gz

 

tar kibana-3.1.1.tar.gz CC/var/www/html

mv /var/www/html/kibana-3.1.1  /var/www/html/kibana

修改默认面板为logstash.json

grep default_route/var/www/html/kibana/config.js

default_route     :'/dashboard/file/logstash.json',

启动httpd服务器,在web浏览器上访问

http://192.168.1.2/kibana/#/dashboard/file/default.json

wKioL1REgZGTK9eLAAIs0dPihms653.jpg

 elasticsearch还有很多插件,比如bigdesk可以2秒更新一次啊页面,便于更好的监控,大家可以去尝试。多谢以下博客的帮助:

http://xiangcun168.blog.51cto.com/4788340/1680441

http://jerrymin.blog.51cto.com/3002256/1565819

http://welcomeweb.blog.51cto.com/10487763/1684696

本文出自 “创新分享驰骋里外” 博客,请务必保留此出处http://10554846.blog.51cto.com/10544846/1687320


推荐阅读
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 本文最初发表在Thorben Janssen的Java EE博客上,每周都会分享最新的Java新闻和动态。 ... [详细]
  • 1.创建目录mkdir-phomerocketmqnamesvr1data&&mkdir-phomerocketmqnamesvr1log&&mkdir-phomerocketm ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 本文介绍了Java中的com.sun.codemodel.JBlock._continue()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • Oracle ERP系统用户指南:涵盖MRP模块详细操作说明
    《Oracle ERP系统用户指南》详细介绍了MRP模块的操作流程与功能。该手册涵盖了从基础设置到高级应用的全方位指导,旨在帮助用户高效地管理和优化物料需求计划。文档编号、受控状态及生效日期等信息均在手册中明确标注,确保内容的准确性和时效性。编制人忻滢对内容进行了全面审核与确认,以保障用户的使用体验。 ... [详细]
  • Hadoop平台警告解决:无法加载本机Hadoop库的全面应对方案
    本文探讨了在Hadoop平台上遇到“无法加载本机Hadoop库”警告的多种解决方案。首先,通过修改日志配置文件来忽略该警告,这一方法被证明是有效的。其次,尝试指定本地库的路径,但未能解决问题。接着,尝试不使用Hadoop本地库,同样没有效果。然后,通过替换现有的Hadoop本地库,成功解决了问题。最后,根据Hadoop的源代码自行编译本地库,也达到了预期的效果。以上方法适用于macOS系统。 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 本文详细介绍了在 Oracle 数据库中使用 MyBatis 实现增删改查操作的方法。针对查询操作,文章解释了如何通过创建字段映射来处理数据库字段风格与 Java 对象之间的差异,确保查询结果能够正确映射到持久层对象。此外,还探讨了插入、更新和删除操作的具体实现及其最佳实践,帮助开发者高效地管理和操作 Oracle 数据库中的数据。 ... [详细]
author-avatar
Sun
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有