设为首页 收藏本站
查看: 575|回复: 0

[经验分享] elk分析nginx访问日志

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-24 10:28:04 | 显示全部楼层 |阅读模式
看日志是很麻烦的事情,作为一个运维工程师,就要是把繁琐的事情简单化,标准化,慢慢的取代繁琐的命定操作,连系统都不用登录了。这个elk日志服务器主要是为了更好的分析日志。而实施的手段和原理请看图 QQ截图20150824102733.png
   它的原理主要是用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安装

  • 安装

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  

验证:

[iyunv@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.o ... gstash-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
[iyunv@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

[iyunv@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操作差不多,只是
[iyunv@log css]# cd /app/logstash/conf/
[iyunv@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 –C/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

QQ截图20150824102743.png

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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-103331-1-1.html 上篇帖子: nginx 设置防盗链 下篇帖子: centos下nginx启动脚本和chkconfig管
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表