ELK日志收集平台部署

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云原生内存数据库 Tair,内存型 2GB
简介:

需求背景

       一位朋友的公司研发最近有一些苦恼。由于他们公司的后台服务有三台,每当后台服务运行异常,需要看日志排查错误的时候,都必须开启3个ssh窗口进行查看,研发们觉得很不方便,于是便有了统一日志收集与查看的需求。 

       这里,我用ELK集群,通过收集三台后台服务的日志,再统一进行日志展示,实现了这一需求。

       当然,当前只是进行了简单的日志采集,如果后期相对某些日志字段进行分析,则可以通过logstash以及Kibana来实现。


部署环境

 系统:CentOS 7

 软件:

           elasticsearch-6.1.1

           logstash-6.1.1

           kibana-6.1.1

下载地址:https://www.elastic.co/cn/products



搭建步骤

一:elasticsearch:

elasticsearch是用于存储日志的数据库。

下载elasticsearch软件,解压:

1
2
# tar -zxvf elasticsearch-6.1.1.tar.gz 
# mv elasticsearch-6.1.1 /opt/apps/elasticsearch

由于elasticsearch建议使用非root用户启动,使用root启动会报错,故需创建一个普通用户,并进行一些简单配置:

1
2
3
4
5
6
# useradd elk
# vi /opt/apps/elasticsearch/config/elasticsearch.yml
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled:  true
http.cors.allow-origin:  "*"

启动,并验证:

1
2
3
4
5
6
7
# su - elk
nohup  /opt/apps/elasticsearch/bin/elasticsearch  &
# netstat -ntpl | grep 9200
tcp        0      0 0.0.0.0:9200            0.0.0.0:*               LISTEN      6637 /java    
#curl 'localhost:9200/_cat/health?v'
epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1514858033 09:53:53  elasticsearch yellow          1         1    241 241    0    0      241             0                  -                 50.0%



二:logstash

logstash用于收集各服务器上的日志,然后把收集到的日志,存储进elasticsearch。收集日志的方式有很多种,例如结合redis或者filebeat,这里我们使用redis收集的方式。

安装logstash:

1
2
3
在所有服务器上:
# tar -zxvf logstash-6.1.1.tar.gz
# mv logstash-6.1.1 /opt/apps/logstash/

配置后台服务器,收集相关的日志:

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
30
31
32
33
34
35
36
37
38
39
40
在三台后台服务器上新建logstash文件,配置日志收集:
# vi /opt/conf/logstash/logstash.conf    
input {
         file  {
                         #指定type
                 type  =>  "web_stderr"       
                 #匹配多行的日志        
                 codec => multiline {
                         pattern =>  "^[^0-9]"
                         what =>  "previous"
                 }
                 #指定本地的日志路径
                 path => [  "/opt/logs/web-stderr.log" ]
                 sincedb_path =>  "/opt/logs/logstash/sincedb-access"
         }
         file  {
                 type  =>  "web_stdout"
                 codec => multiline {
                         pattern =>  "^[^0-9]"
                         what =>  "previous"
                 }
                 path => [  "/opt/logs/web-stdout.log" ]
                 sincedb_path =>  "/opt/logs/logstash/sincedb-access"
         }
         #收集nginx日志
         file  {
                 type  =>  "nginx"
                 path => [  "/opt/logs/nginx/*.log" ]
                 sincedb_path =>  "/opt/logs/logstash/sincedb-access"
         }
}
output {
     #指定输出的目标redis
   redis {
     host =>  "xx.xx.xx.xx"
     port =>  "6379"
     data_type =>  "list"
     key =>  "logstash"
   }
}

配置elk日志服务器上的logstash,从redis队列中读取日志,并存储到elasticsearch中:

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
# vi /opt/conf/logstash/logstash-server.conf
#配置从redis队列中读取收集的日志
input {
   redis {
     host =>  "xx.xx.xx.xx"
     port =>  "6379"
     type  =>  "redis-input"
     data_type =>  "list"
     key =>  "logstash"
     threads => 10
   }
}
#把日志输出到elasticsearch中
output {
         elasticsearch {
                         hosts =>  "localhost:9200"
                         index =>  "logstash-%{type}.%{+YYYY.MM.dd}"
         }
         
         #这里把日志收集到本地文件
         file  {
                 path =>  "/opt/logs/logstash/%{type}.%{+yyyy-MM-dd}"
                 codec => line {  format  =>  "%{message}" }
         }
}

启动logstash进程:

1
2
3
4
后台服务器:
# nohup /opt/apps/logstash/bin/logstash -f /opt/conf/logstash/logstash.conf --path.data=/opt/data/logstash/logstash &
elk日志服务器:
# nohup /opt/apps/logstash/bin/logstash -f /opt/conf/logstash/logstash-server.conf --path.data=/opt/data/logstash/logstash-server &



三:kibana

kibana用于日志的前端展示。

安装、配置kibana:

1
2
3
4
5
6
7
8
# tar -zxvf kibana-6.1.1-linux-x86_64.tar.gz
# mv kibana-6.1.1-linux-x86_64 /opt/apps/kibana
配置elasticsearch链接:
# vi /opt/apps/kibana/config/kibana.yml
server.port: 5601
server.host:  "0.0.0.0"
#配置elasticsearch链接:
elasticsearch.url:  "http://localhost:9200"

启动kibana:

1
nohup  /opt/apps/kibana/bin/kibana  &

访问kibana:

http://localhost:5601

捕获.PNG

可以根据我们在logstash中配置的type,创建索引:

2.PNG

可以根据我们创建的索引,进行查看(这里查看nginx日志):

3.PNG



后记:

    当然了,结合logstash和kibana不单单仅能实现收集日志的功能,通过对字段的匹配、筛选以及结合kibana的图标功能,能对我们想要的字段进行分析,实现相应的数据报表等。

    ELK的功能十分强大,以后有机会,继续和大家探讨!!   










本文转自 icenycmh 51CTO博客,原文链接:http://blog.51cto.com/icenycmh/2056540,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
10天前
|
Kubernetes 关系型数据库 流计算
实时计算 Flink版产品使用问题之如何解决Flink集群在nativeKubernetes部署方式下日志无法映射到宿主机并容易丢失的问题
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1月前
|
存储 监控 安全
《SelectDB 新一代日志存储分析平台解决方案》白皮书重磅发布|立即下载
作为基于 Apache Doris 打造的现代化数据仓库,SelectDB 不拘泥于传统数仓的限制,针对日志数据的特点引入了多项创新性技术,使用户可基于 SelectDB 构建开放、高性能、低成本、统一的日志存储分析平台, 截至目前已在近百家行业内知名企业中落地。
《SelectDB 新一代日志存储分析平台解决方案》白皮书重磅发布|立即下载
|
1月前
|
机器学习/深度学习 人工智能 DataWorks
人工智能平台PAI产品使用合集之在使用行调用时遇到一直卡在ps job的问题,并且无法在DataWorks上查看到相关日志,是什么导致的
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
24天前
|
存储 消息中间件 监控
日志收集分析器(ELK)
日志收集分析器(ELK)
|
24天前
|
消息中间件 NoSQL Kafka
日志收集平台项目nginx、kafka、zookeeper、filebeat搭建的基本配置(2)
日志收集平台项目nginx、kafka、zookeeper、filebeat搭建的基本配置(2)
|
24天前
|
消息中间件 应用服务中间件 Kafka
日志收集平台项目nginx、kafka、zookeeper、filebeat搭建的基本配置(1)
日志收集平台项目nginx、kafka、zookeeper、filebeat搭建的基本配置(1)
|
1月前
|
消息中间件 数据采集 关系型数据库
离线数仓(三)【业务日志采集平台搭建】(2)
离线数仓(三)【业务日志采集平台搭建】
|
1月前
|
存储 消息中间件 Kafka
离线数仓(三)【业务日志采集平台搭建】(1)
离线数仓(三)【业务日志采集平台搭建】
|
1月前
|
存储 关系型数据库 MySQL
|
15天前
|
监控
查看服务器/IIS日志、log、访问信息基本方法
除了手动查看,你也可以使用日志分析工具,如Log Parser、AWStats等,这些工具可以帮助你更方便地分析日志数据。
8 1