您的位置:首页 > 运维架构 > Docker

ELK+docker+nginx日志分析系统

2017-04-14 17:24 666 查看
一、简介

1、核心组成

ELK由Elasticsearch、Logstash和Kibana三部分组件组成;

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用

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

2、四大组件

Logstash:
logstash server端用来搜集日志;

Elasticsearch:
存储各类日志;

Kibana:
web化接口用作查寻和可视化日志;

Logstash Forwarder:
logstash client端用来通过lumberjack 网络协议发送日志到logstash server;

3、ELK工作流程

在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。





4、ELK的帮助手册

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

ELK官网文档:https://www.elastic.co/guide/index.html

ELK中文手册:http://kibana.logstash.es/content/elasticsearch/monitor/logging.html

注释

ELK有两种安装方式

(1)集成环境:Logstash有一个集成包,里面包括了其全套的三个组件;也就是安装一个集成包。

(2)独立环境:三个组件分别单独安装、运行、各司其职。(比较常用)

本实验也以第二种方式独立环境来进行演示;单机版主机地址为:192.168.1.104

二、Logstash

1、安装jdk

2、安装logstash

3、logstash常用参数

4、启动logstash

4.1 通过-e参数指定logstash的配置信息,用于快速测试,直接输出到屏幕。

一、简介

1、核心组成

ELK由Elasticsearch、Logstash和Kibana三部分组件组成;

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用

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

2、四大组件

Logstash:
logstash server端用来搜集日志;

Elasticsearch:
存储各类日志;

Kibana:
web化接口用作查寻和可视化日志;

Logstash Forwarder:
logstash client端用来通过lumberjack 网络协议发送日志到logstash server;

3、ELK工作流程

在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。





4、ELK的帮助手册

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

ELK官网文档:https://www.elastic.co/guide/index.html

ELK中文手册:http://kibana.logstash.es/content/elasticsearch/monitor/logging.html

注释

ELK有两种安装方式

(1)集成环境:Logstash有一个集成包,里面包括了其全套的三个组件;也就是安装一个集成包。

(2)独立环境:三个组件分别单独安装、运行、各司其职。(比较常用)

本实验也以第二种方式独立环境来进行演示;单机版主机地址为:192.168.1.104

二、Logstash

1、安装jdk

2、安装logstash

3、logstash常用参数

4、启动logstash

4.1 通过-e参数指定logstash的配置信息,用于快速测试,直接输出到屏幕。
[root@localhost ~]# logstash -e "input {stdin{}} output {stdout{}}"

Logstash startup completed

my name is zhanghao

2017-04-14T08:17:54.183Z localhost.localdomain my name is zhanghao

4.2 通过-e参数指定logstash的配置信息,用于快速测试,以json格式输出到屏幕。

5、logstash以配置文件方式启动

5.1 输出信息到屏幕

"@timestamp" => "2017-04-14T08:24:27.312Z",

"host" => "localhost.localdomain"

5.2 logstash输出信息存储到redis数据库中

刚才我们是将信息直接显示在屏幕上了,现在我们将logstash的输出信息保存到redis数据库中,如下

6、 查看logstash的监听端口号

三、Redis

1、安装Redis

2、查看redis的监控端口

3、测试redis是否正常工作

4、redis服务启动命令

5、redis的动态监控

6、logstash结合redis工作

6.1 首先确认redis服务是启动的

6.2 启动redis动态监控

6.3 基于入口redis启动logstash

6.4 查看redis的监控接口上的输出

四、Elasticsearch

1、安装Elasticsearch

2、修改elasticsearch配置文件elasticsearch.yml并且做以下修改.

3、启动elasticsearch服务

4、查看elasticsearch的监听端口

5、elasticsearch和logstash结合

6、基于配置文件启动logstash

7、curl命令发送请求来查看elasticsearch是否接收到了数据

8、安装elasticsearch插件

9、浏览器访问kopf页面访问elasticsearch保存的数据

10、从redis数据库中读取然后输出到elasticsearch中

五、Kinaba

1、安装Kinaba

2、修改kinaba配置文件kinaba.yml

3、启动kinaba

4、浏览器访问kinaba

4.1 使用默认的logstash-*的索引名称,并且是基于时间的,点击“Create”即可。

4.2 看到如下界面说明索引创建完成。

4.3 点击“Discover”,可以搜索和浏览Elasticsearch中的数据。

上面完成基本环境的搭建,手动输入的信息,接下来进行自动获取docker容器内nginx服务的日志,然后展示在Kibana上面。

首先需要运行docker,并且里面成功的运行起来nginx服务,具体的命令就不详述了。

yum install docker -y

systemctl start docker

docker pull myzero1/centos6-lnmp-php56

dokcer run -d -p 1001:80 -v /var/log/docker-nginx/:/var/log/nginx myzerol/centos6-lnmp-php56(确定一下容器内部的nginx日志路径)

访问 http://192.168.2.65:1001
接下来就是收集nginx的日志放到redis中

vi logstash-nginx.conf
input {

file {

path => ["/var/log/docker-nginx/access.log"]

type => "nginx_log"

start_position => "beginning"

}

}

output {

redis {

host => "192.168.2.65"

key => 'logstash-redis'

data_type => 'list'

}

}

把redis里面的日志传到elasticsearch里面

vi logstash-elasticsearch.conf

input {

redis {

host => '192.168.2.65'

data_type => 'list'

port => "6379"

key => 'logstash-redis'

type => 'redis-input'

}

}

output {

elasticsearch {

host => "192.168.2.65"

codec => "json"

protocol => "http" #版本1.0+ 必须指定协议http

index => "logstash-%{+YYY.MM.dd}"

}

}

#output {

# elasticsearch {

# embedded => true

# }

# }

~

接下来分别启动

/usr/local/logstash-1.5.4/bin/logstash agent -f logstash-nginx.conf

/usr/local/logstash-1.5.4/bin/logstash -f ./logstash-elasticsearch.conf

返回到Kibana的页面就会发现nginx的日志已经被传到页面上了

>>>结束<<<

最后 看一下整体的运行情况
[root@localhost ~]# ps -ef|grep java

root 3010 1 0 4月13 ? 00:07:52 /bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC
-Dfile.encoding=UTF-8 -Delasticsearch -Des.path.home=/usr/local/elasticsearch-1.7.2 -cp :/usr/local/elasticsearch-1.7.2/lib/elasticsearch-1.7.2.jar:/usr/local/elasticsearch-1.7.2/lib/*:/usr/local/elasticsearch-1.7.2/lib/sigar/* org.elasticsearch.bootstrap.Elasticsearch

root 16566 8149 0 15:38 pts/1 00:00:22 /usr/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Xmx500m -Xss2048k -Djffi.boot.library.path=/usr/local/logstash-1.5.4/vendor/jruby/lib/jni
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Xbootclasspath/a:/usr/local/logstash-1.5.4/vendor/jruby/lib/jruby.jar -classpath : -Djruby.home=/usr/local/logstash-1.5.4/vendor/jruby
-Djruby.lib=/usr/local/logstash-1.5.4/vendor/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main --1.9 /usr/local/logstash-1.5.4/lib/bootstrap/environment.rb logstash/runner.rb agent -f logstash-nginx.conf

root 16611 10081 0 15:38 pts/8 00:00:27 /usr/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Xmx500m -Xss2048k -Djffi.boot.library.path=/usr/local/logstash-1.5.4/vendor/jruby/lib/jni
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Xbootclasspath/a:/usr/local/logstash-1.5.4/vendor/jruby/lib/jruby.jar -classpath : -Djruby.home=/usr/local/logstash-1.5.4/vendor/jruby
-Djruby.lib=/usr/local/logstash-1.5.4/vendor/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main --1.9 /usr/local/logstash-1.5.4/lib/bootstrap/environment.rb logstash/runner.rb agent -f ./logstash-elasticsearch.conf

root 22382 10935 0 17:14 pts/9 00:00:00 grep --color=auto java

[root@localhost ~]# netstat -ntlp|grep java

tcp6 0 0 192.168.2.65:9200 :::* LISTEN 3010/java

tcp6 0 0 192.168.2.65:9300 :::* LISTEN 3010/java

[root@localhost ~]# ps -ef|grep kibana

root 11926 8373 0 14:51 pts/6 00:00:01 ./../node/bin/node ./../src/bin/kibana.js

root 19965 19936 0 4月12 ? 00:00:00 kibana-4.0.3-linux-x64/bin/../node/bin/node kibana-4.0.3-linux-x64/bin/../src/bin/kibana.js

root 22452 10935 0 17:16 pts/9 00:00:00 grep --color=auto kibana

[root@localhost ~]# ps -ef|grep redis

root 348 1 0 4月13 ? 00:01:21 /usr/local/bin/redis-server *:6379

root 19963 19936 0 4月12 ? 00:02:48 redis-3.0.2/src/redis-server *:6379

root 22472 10935 0 17:17 pts/9 00:00:00 grep --color=auto redis

[root@localhost ~]# netstat -ntlp|grep redis

tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 348/redis-server *:

tcp6 0 0 :::6379 :::* LISTEN 348/redis-server *

[root@localhost ~]# netstat -ntlp|grep 5601

tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 11926/./../node/bin

软件包以打包上传:http://pan.baidu.com/s/1hqfeFvY

本文出自 “郑彦生” 博客,请务必保留此出处http://467754239.blog.51cto.com/4878013/1700828
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  elk nginx docker 开源 redis