极速赛车平台出租与ELK日志分析平台

什么是ELK呢?极速赛车平台出租 Q2152876294 论坛:diguaym.com

ELK是三个组件的缩写, 分别是elasticsearch, logstash, kibana. ELK平台可以用于实现日志收集、日志搜索和日志分析
1.elasticsearch(es): 它是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
2.logstash: 简单说是一个日志收集工具, 可以定义从哪里获取数据, 并且可以简单处理数据, 最后可以定义将数据输出到哪里, 一般输出到es.
3.kibana: 其实就是一个数据展示界面, 并且可以分析数据, 例如从es中读取数据进行展示分析. es自己也带有简单的展示dashboard:, 当然 前提是你安装了head插件

如何搭建一个ELK日志分析平台呢?

一.单机安装elasticsearch
1.利用安装elasticsearch的rpm包安装

yum install elasticsearch-2.3.3.rpm
1
2.配置elasticsearch的配置文件

cd /etc/elasticsearch/
vim elasticsearch.yml # 主配置文件
17 cluster.name: my-es # 集群的名称my-es
23 node.name: server1 # 当前节点的主机名
33 path.data: /var/lib/elasticsearch/ # 数据目录
37 path.logs: /var/log/elasticsearch/ # 日志目录
54 network.host: 172.25.1.1 # 当前主机的IP
58 http.port: 9200 # 对外端口号
1
2
3
4
5
6
7
8
这里写图片描述
这里写图片描述
这里写图片描述
3.安装java环境(因为Elasticsearch是用Java开发的)

rpm -ivh jdk-8u121-linux-x64.rpm
1
4.启动elasticsearch服务

/etc/init.d/elasticsearch start
1
这里写图片描述
打开服务后可以在浏览器中输入当前主机的IP和端口号查看(只有简单的数据,没有图形界面也没有分析等,所以我们选择安装相应图形界面的插件,方便分析处理数据)
这里写图片描述
5.安装插件:

cd /usr/share/elasticsearch/
cd /bin
./plugin list # 查看已经安装的插件
/usr/share/elasticsearch/bin/plugin install file:/root/elk/elasticsearch-head-master.zip
1
2
3
4
这里写图片描述
6.安装插件以后,我们在浏览器中查看,得到的就是比较便于观察和分析的web界面
这里写图片描述
7.在该web界面下建立索引尝试查询
这里写图片描述

二 . 集群Elasticsearch的安装和配置
Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群。
1
2
3
1.在server2和server3上安装elasticsearch-2.3.3.rpm和jdk-8u121-linux-x64.rpm

rpm -ivh jdk-8u121-linux-x64.rpm
yum install elasticsearch-2.3.3.rpm
1
2
2.编辑sevre1上的配置文件elasticsearch.yml

72行 discovery.zen.ping.unicast.hosts: ["server1", "server2","server3"]

表示该集群由三台主机构成,主机名分别是server1,server2和server3

1
2
将修改好的配置文件发送给server2和server3上,在server2上和server3上修改配置文件中的sevrername和ip
3.启动server2和sevrer3上的服务
/etc/init.d/elasticsearch start
4.为了将集群中三台主机所负责的功能模块分开,我们在配置文件中设定:
server1:

#server1是主节点,同时承担http查询任务
vim elasticsearch.yml
23 node.name: server1
24 node.master: true
25 node.data: false
26 http.enabled: true
1
2
3
4
5
6
这里写图片描述
server2:

server2负责存储数据和http查询任务

vim elasticsearch.yml
23 node.name: server2
25 node.master: false
26 node.data: true
27 http.enabled: true
1
2
3
4
5
6
server3:

server3和server2相同

vim elasticsearch.yml
23 node.name: server2
25 node.master: false
26 node.data: true
27 http.enabled: true
1
2
3
4
5
6
这里写图片描述
5.重启所有节点上的服务,在浏览器中查看web界面
这里写图片描述
6.查询集群的状态

curl -XGET
这里写图片描述
数据查询(三个节点上的node.data均为true)

curl 172.25.1.1:9200/_nodes/_local
1
这里写图片描述
删除demo索引

curl -XDELETE
1
这里写图片描述
这里写图片描述

三.logstash的安装与配置
Logstash是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您喜欢的“存储库”中。(我们的存储当然是Elasticsearch。)

1.安装logstash工具

rpm -ivh logstash-2.3.3-1.noarch.rpm
1
添加不同的模块:

1.标准终端输入stdin和输出stdout模块

/opt/logstash/bin/logstash -e ‘input { stdin { } } output { stdout { } }‘

input输入是从终端标准输出

Settings: Default pipeline workers: 1
Pipeline main started
hello # 标准输入hello
2018-08-25T02:36:54.035Z server1 hello # 标准输出hello
world
2018-08-25T02:36:57.372Z server1 world
^CSIGINT received. Shutting down the agent. {:level=>:warn} # ctrl+c中断
stopping pipeline {:id=>"main"}

Pipeline main has been shutdown
1
2
3
4
5
6
7
8
9
10
11
12
这里写图片描述
2.在标准终端输出的时候选择输出数据格式codec => rubydebug

/opt/logstash/bin/logstash -e ‘input { stdin { } } output { stdout { codec => rubydebug } }‘
Settings: Default pipeline workers: 1
Pipeline main started
hello # 标准输入
{
"message" => "hello", # 输出
"@version" => "1",
"@timestamp" => "2018-08-25T02:38:09.060Z",
"host" => "server1"
}
world
{
"message" => "world",
"@version" => "1",
"@timestamp" => "2018-08-25T02:38:12.447Z",
"host" => "server1"
}
^CSIGINT received. Shutting down the agent. {:level=>:warn}
stopping pipeline {:id=>"main"}

Pipeline main has been shutdown
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
这里写图片描述
3.标准终端输出,输出到提供elasticsearch的主机(server1)中

/opt/logstash/bin/logstash -e ‘input { stdin { } } output { elasticsearch { hosts => ["172.25.1.1"] index => "logstash-%{+YYYY.MM.dd}" } }‘
Settings: Default pipeline workers: 1
Pipeline main started
hello
hello world
hello jay # 无终端输出,是因为将数据输出到了elasticsearch中
^CSIGINT received. Shutting down the agent. {:level=>:warn}
stopping pipeline {:id=>"main"}

Pipeline main has been shutdown
1
2
3
4
5
6
7
8
9
10
11
在浏览器中查看:
这里写图片描述

4.上边几种情况的集合,标准终端输入,输出分为两部分,一部分输出到elasticsearch ,另一种是输出到终端…

/opt/logstash/bin/logstash -e ‘input { stdin { } } output { elasticsearch { hosts => ["172.25.1.1"] index => "logstash-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }‘
Settings: Default pipeline workers: 1
Pipeline main started
hello world
{
"message" => "hello world",
"@version" => "1",
"@timestamp" => "2018-08-25T02:42:38.615Z",
"host" => "server1"
}
hello linux
{
"message" => "hello linux",
"@version" => "1",
"@timestamp" => "2018-08-25T02:42:42.556Z",
"host" => "server1"
}
^CSIGINT received. Shutting down the agent. {:level=>:warn}
stopping pipeline {:id=>"main"}

Pipeline main has been shutdown
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
这里写图片描述
这里写图片描述
5.上边的各种模块都是直接在命令行选择模块,输入或者输出。我们也可以在文件中编写使用的模块,选择输入和输出,

cd /etc/logstash/conf.d/
vim es.conf # 文件名,可以随意取
input {
stdin {} # 输入是标准终端输入standard input
}

output {
elasticsearch { # 第一个输出是到elasticsearch
hosts => ["172.25.1.1"] # elasticsearch所在的主机
index => "logstash-%{+YYYY.MM.dd}"
}

    stdout {                         # 第二个输出是标准终端输出
            codec => rubydebug       # 输出的风格是rubydebug
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
在终端的运行情况:

/opt/logstash/bin/logstash -f /etc/logstash/conf.d/es.conf # 在终端利用logstash运行此文件
Settings: Default pipeline workers: 1
Pipeline main started
hello qzy # 标准终端输入
{
"message" => "hello qzy", # 输出的一部分,在终端标准输出
"@version" => "1",
"@timestamp" => "2018-08-25T02:46:38.949Z",
"host" => "server1"
}
hello jay
{
"message" => "hello jay",
"@version" => "1",
"@timestamp" => "2018-08-25T02:46:43.771Z",
"host" => "server1"
}
nice to meet you
{
"message" => "nice to meet you",
"@version" => "1",
"@timestamp" => "2018-08-25T02:46:58.730Z",
"host" => "server1"
}
^CSIGINT received. Shutting down the agent. {:level=>:warn}
stopping pipeline {:id=>"main"}

Pipeline main has been shutdown
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
这里写图片描述
在浏览器中的数据输出:
这里写图片描述

6.rsyslog模块:
将server1当作一个日志收集服务器
(1).编辑一个使用模块的文件

vim message.conf
input {
syslog {
port => 514 # 输入是server2的日志,同步日志端口为514/udp
}
}

output {

elasticsearch {

hosts => ["172.25.1.1"] # 输出到server1的elasticsearch

index => "message-%{+YYYY.MM.dd}"

}

    stdout {
            codec => rubydebug     # 输出到标准屏幕输出
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(2).在sevrer2中编辑同步日志的文件

vim /etc/rsyslog.conf
. @@172.25.1.1:514
/etc/init.d/rsyslog restart # 重新打开rsyslog服务
1
2
3
(3).查看rsyslog的端口和运行该模式的结果
在server1上netstat -antulp | grep 514
这里写图片描述
在server1以终端占用的方式执行
/opt/logstash/bin/logstash -f /etc/logstash/conf.d/message.conf
这里写图片描述
在server1上可以收集到server2上的日志信息
(4).在server上执行logger tigger,在server1上立即可以看到trigger的输出
这里写图片描述

7.利用logstash中的模块将日志记录中的多行输出变为一行:
(1).在elasticsearch的日志记录文件中

cd /var/log/elasticsearch
cat my-es.log
1
2
看到以[]为界线的日志有时候并不在一行
这里写图片描述
(2).利用filter对输入进行过滤处理再指定输出

vim /etc/logstash/conf.d/message.conf
input {
file {
path => "/var/log/elasticsearch/my-es.log" # 待处理日志所在位置
start_position => "beginning" # 从日志的开始处处理
}
}

filter {
multiline {
pattern => "^["
negate => true
what => "previous"
}
}

output {
elasticsearch {
hosts => ["172.25.1.1"]
index => "es-%{+YYYY.MM.dd}"
}

    stdout {
            codec => rubydebug
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
这里写图片描述

(3).在终端执行操作

/opt/logstash/bin/logstash -f /etc/logstash/conf.d/message.conf

因为在终端出有大量的java日志,所以就不再展示

1
2
这里有一个需要注意的点:我们在message.conf中写的是从日志文件的beginning开始,但是,此时我们接着往日志中写东西,我们发现是从上次结束的地方开始,看起来好像与我们的设置出现差异,但是不然,如果又从头开始记录,必然会造成信息的重复。
在linux中,我们有文件专门记录日志的编号:
cat /root/.sincedb_452905a167cf4509fd08acb964fdb20c
913943 0 64768 32581
ls -i /var/log/messages
913943 /var/log/messages
这里写图片描述
这两个数字是一样的,最后一个日志表示此时日志的位置为32581,当我们在日志中接着写点东西的时候,该数字会发生变化,即表示下次记录的时候从此位置开始
logger cat
cat .sincedb_452905a167cf4509fd08acb964fdb20c (该文件不发生变更,是不会重复读的)
913943 0 64768 32751
这里写图片描述

9.利用filter使httpd的日志按照规定格式输出:

1.编辑一个处理httpd日志的文件test.conf

vim test.conf
input {
stdin {} # 输入是终端标准输入
}
filter {
grok {
match => { "message" => "%IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }

利用filter对输入的数据进行过滤,转换为指定格式指定

    }

}

output {
stdout {
codec => rubydebug # 标准终端输出
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
在终端中

/opt/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf
172.25.1.2 GET /index.html 15888 0.043 # 标准输入
1
2
这里写图片描述
2.引用系统中的变量对httpd服务的输出日志进行处理,按照指定格式输出

vim message.conf
input {
file {
path => ["/var/log/httpd/access_log","/var/log/httpd/error_log"] # 日志文件所在的位置
start_position => "beginning" # 开始同步的位置=>文件开始处
}
}

filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }

引用变量COMBINEDAPACHELOG

    }

}

output {
elasticsearch {
hosts => ["172.25.1.1"]
index => "apache-%{+YYYY.MM.dd}"
}

    stdout {
            codec => rubydebug
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
3.在httpd的默认发布目录写默认发布文件,在主配置文件中可以看到默认的日志输出格式
这里写图片描述
这里写图片描述
引用变量的位置在
/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-2.0.5/patterns/
vim grok-patterns
这里写图片描述
在终端执行输出:
这里写图片描述

四.在server3上安装kibana
Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的
1.安装rpm包

rpm -ivh kibana-4.5.1-1.x86_64.rpm
1
2.编辑其主配置文件,写

cd /opt/kibana/config/
vim kibana.yml
1
2
这里写图片描述
3.打开服务并查看端倪口

/etc/init.d/kibana start
netstat -antlp
1
2
这里写图片描述

五.ELK日志分析工具之间的解耦
思路:从nginx的日志文件中得到数据放在logstash中,由logstash将数据存在redis中,再由logstash将数据从redis中拿出来交给kibana,这样下来,数据经过redis,保证了数据的安全性也使得logstash和kibana之间得数据不是直接关联,降低了耦合性。
(一).基本服务的配置
1.在server1上安装nginx

rpm -ivh nginx-1.8.0-1.el6.ngx.x86_64.rpm
1
2.在server2上安装redis

tar zxf redis-3.0.6.tar.gz
cd redis-3.0.6
make # 来一波简单的源码编译
make install
1
2
3
4
3.打开redis

cd /root/redis-3.0.6/src/utils/
./install_server.sh
查看redis的端口netstat -antlp
1
2
3
这里写图片描述
(二).nginx的安装
1.在server1上安装nginx

rpm -ivh nginx-1.8.0-1.el6.ngx.x86_64.rpm
1
2.查看nginx的日志格式,nginx的配置文件

cd /etc/nginx/
vim nginx.conf
1
2
这里写图片描述
3.引用apache的日志格式变量

cd /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-2.0.5/patterns/
vim grok-patterns
1
2
4.编辑nginx.conf来对nginx的日志做处理

vim nginx.conf
input {
file {
path => "/var/log/nginx/access.log" # nginx的日志
start_position => "beginning"
}
}

filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG} %{QS:x_forwarded_for}" } # 在apache日志的前提下再加上自己的日志输出
}
}
output {
redis {
host => ["172.25.1.2"]
port => 6379 # 输出到server2的redis端口
data_type => "list" # 在redis中以列表形式存储
key => "logstash:redis" # 定义列表形式的键值对
}
stdout {
codec => rubydebug
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
这里写图片描述
修改nginx的日志权限

chmod 644 /var/log/nginx/access.log # 保证对所有用户可写
1
5.在终端执行处理nginx日志的文件

/opt/logstash/bin/logstash -f /etc/logstash/conf.d/nginx.conf
1
6.在物理机进行压测ab -c 1 -n 10

(三).在server2上安装noarch

rpm -ivh logstash-2.3.3-1.noarch.rpm
cd /etc/logstash/conf.d/
vim es.conf
input {
redis { # 从redis中拿数据
host => "172.25.1.2"
port => 6379
data_type => "list"
key => "logstash:redis" # 格式和上边的保持一致
}
}

output {
elasticsearch { # 输出是将数据输出到elasticsearch中
hosts => ["172.25.1.1"]
index => "nginx-%{+YYYY.MM.dd}"
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
这里写图片描述
/opt/logstash/bin/logstash -f /etc/logstash/conf.d/es.conf

在网页中刷新,出现nginx
这里写图片描述

(四).在server3上配置kibana对获得的数据进行分析
选择要创建视图的项目:
这里写图片描述
创建反映信息的试图:
这里写图片描述
创建联系人或者时间(根据需要选择)
这里写图片描述
将创建的视图添加到视图框中:
这里写图片描述
这里写图片描述
根据自己的需要添加相应的模块来对数据进行分析,最终展现出来:
这里写图片描述

原文地址:http://blog.51cto.com/13943008/2165330

时间: 2024-10-27 05:56:56

极速赛车平台出租与ELK日志分析平台的相关文章

浅谈ELK日志分析平台

作者:珂珂链接:https://zhuanlan.zhihu.com/p/22104361来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 小编的话 "技术干货"系列文章意在分享技术牛人的知识干货,每期主题都不一样哟!期待各位读者在文后发表留言,来一场技术上的交流和思想上的碰撞! 2016年7月20日,本期品高云公开课由叶春草带来"可视化案发现场--浅谈ELK日志分析平台"的分享. 分享嘉宾 叶春草现就职于品高云软件技术支持工程师.就职

在Windows系统下搭建ELK日志分析平台

再记录一下elk的搭建,个人觉得挺麻烦的,建议还是在linux系统下搭建,性能会好一些,但我是在windows下搭建的,还是记录一下吧,像我这种记性差的人还是得靠烂笔头 简介: ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash是一个完全开源的工具,他可以对你的日志进行收集.过

ELK日志分析平台搭建----ELASTICSEARCH

介绍:ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成 1.Elasticsearch是一个开源分布式的搜索引擎,特点是:分布式.零配置.自动发现.索引自动分片.索引副本机制.restful风格接口,多数据源,自动搜索负载等. 2.Logstash是一个完全开源的工具,它可以对你的日志进行收集.过滤,并将其存储供以后使用(比如:搜索) 3.Kibana也是一个开源免费的工具,它可以为Logstash和ElasticSearch提供的日志分析友好的WEB界面,可

ELK日志分析平台搭建

ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自:http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误. 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样

CentOS 8 部署 ELK日志分析 平台

需求 1.开发人员不能登录线上服务器查看日志2.各个系统都有日志,日志分散难以查找3.日志数据量大,查找慢,数据不够实时 解决办法:部署ELK平台 ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件.新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash . ELK架构图 Elasticsearch简介: El

ELK日志分析平台

ELKstack是Elasticsearch.Logstash.Kibana三个开源软件的组合.目前都在Elastic.co公司名下. ELK是一套常用的开源日志监控和分析系统,包括一个分布式索引与搜索服务Elasticsearch, 一个管理日志和事件的工具logstash,和一个数据可视化服务Kibana logstash_1.5.3                 负责日志的收集,处理和储存 elasticsearch-1.7.2            负责日志检索和分析 kibana-4

搭建ELK日志分析平台

ELK即Elasticsearch+Logstash+Kibana组合,是一个开源分布式搜索平台,搭建该平台的目的就是为了方便的查询日志.Elasticsearch一个开源的搜索引擎框架,Logstash集成各种收集日志插件,还是一个比较优秀的正则切割日志工具:Kibana一个免费的web图形工具. 安装架构如图所示,安装环境为rhel6.4 一.安装redis #yum -y install gcc tcl-devel #tar xf redis-3.0.0.tar.gz -C /opt #c

ELK日志分析平台搭建全过程

一.使用背景 当生产环境有很多服务器.很多业务模块的日志需要每时每刻查看时 二.环境 系统:centos 6.5 JDK:1.8 Elasticsearch-5.0.0 Logstash-5.0.0 kibana-5.0.0 三.安装 1.安装JDK 下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 本环境下载的是64位tar.gz包,将安装包拷贝至安装服务器/usr

搭建ELK日志分析平台-分布式集群

ELK安装准备工作准备3台机器,这样才能完成分布式集群的实验,当然能有更多机器更好:配置三台机器的hosts文件内容如下:vim /etc/hosts192.168.254.133 master-node192.168.254.134 data-node1192.168.254.135 data-node2角色划分:? 3台机器全部安装jdk1.8,因为elasticsearch是java开发的? 3台全部安装elasticsearch (后续都简称为es)? 192.168.254.133 作