开源软件选型:为什么需要日志收集(一)(图)

优采云 发布时间: 2021-06-05 18:03

  

开源软件选型:为什么需要日志收集(一)(图)

  

  1.为什么需要采集日志

  当我们网站的规模很大到一定程度时,我们的服务就分散在不同的主机上。当网站异常时,我们通常会使用这些服务的日志来排查系统故障。因为很多主机的日志分散在不同的主机上,使得我们的日志分析效率太低。日志采集系统可以将所有不同主机的日志聚合到一个系统中,方便我们查看和分析。

  2.开源软件精选

  市场上有各种日志采集系统。日志采集和分析通过多个Karry软件集成完成,包括si部分:

  采集 -> 分析 -> 存储 -> 背景

  集合包括 Apache 的 Flume、Facebook 的 Scribe、Elasic 的 Filebeat、Logstash

  Logstash 是用来做分析的,但是我还没研究过,所以暂时不需要

  Elasticsearch、Hdfs(Hadoop、Storm)等用于存储。

  Kibana 和 grafana 是后端

  hdfs 主要用于日志的大数据分析。它更重,不适合我们。 Eliastic 有完整的日志解决方案。

  Elk(Elasticsearch + Logstash + kibana)通常被称为。 Logstash 比较大。一般用于日志分析和格式化(二次处理)。日志采集使用Firebeat和Flume也不错,但是需要java环境。 Friebeat是用go编写的,可以直接运行在环境的每一个依赖上,而且非常轻量级,3M左右,非常有利于部署和实现。

  Eliasticsearch搜索的效率不用多说,它经常用于存储时间序列数据,这个本身我也有一定的了解

  Kibana 用于日志查看和分析。它可以与 Elasticsearch 结合使用。可以通过es、Dashboard数据监控面板中搜索到的数据直观展示

  所以最后选择通过Filebeat + Elasitcsearch + Kibana(Logstash可选)来实现我们的日志采集系统

  目前 Kibana 的稳定版本是4.4,但它依赖于 Elasticsearch 2 或更高版本,

  之前用过Elasticsearch 1.7,所以选择了Elasticsearch 1.7 + Kibana 4.1

  3.安装部署

  在centos 6.x 环境中

  3.1 在日志所在的服务器上安装Filebeat

  sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

  添加以下内容

  [beats]

name=Elastic Beats Repository

baseurl=https://packages.elastic.co/beats/yum/el/$basearch

enabled=1

gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch

gpgcheck=1

  另存为 /etc/yum.repos.d/beat.repo 文件

  开始安装

  yum -y install filebeat

chkconfig --add filebeat

  启动命令

  /etc/init.d/filebeat start

  3.2 在日志服务器上安装 Elasticsearch

  mkdir -p ~/download && cd ~/download

wget -c https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.2.zip

unzip elasticsearch-1.7.2.zip 

mv elasticsearch-1.7.2 /usr/local/elasticsearch

  启动命令

  cd /usr/local/elasticsearch/bin

./elasticsearch -d

  3.3 在日志服务器上安装 Kibana

  rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

cat > /etc/yum.repos.d/kibana.repo  

[kibana-4.1]

name=Kibana repository for 4.1.x packages

baseurl=http://packages.elastic.co/kibana/4.1/centos

gpgcheck=1

gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch

enabled=1

yum install kibana

chkconfig --add kibana

  启动命令

  /etc/init.d/kibana start

  4.如何使用

  如果我们有一台运行nginx+php-fpm的web服务器,我们需要采集php-fpm的错误日志和慢日志

  4.1配置文件节拍

  filebeat:

  prospectors:

    -

      document_type: "php-fpm"

      paths:

        - /var/log/php/php-fpm.log

    -

      document_type: "php-fpm.slow"

      paths:

        - /var/log/php/slow.log

      multiline:

          pattern: '^[[:space:]]'

          negate: true

          match: after

output:

  elasticsearch:

    hosts: ["192.168.1.88:9200"]

shipper:

  tags: ["web"]

  以上配置的意思是从两个位置采集日志:/var/log/server/php/php-fpm.log,/var/log/server/php/cloud.slow.log,

  由于slow log中有多行作为一条记录,filebeat使用三种配置将多行转为一行,pattern、negate、match。上面配置的意思是,如果一行不以空格开头,就会拼接到上一行的后面,

  pattern 遵循 golang 的正则语法

  输出命令指定将日志输出到elasticsearch,并添加服务的ip和端口,可以添加多个单元,也可以支持负余额

  可以在shipper中指定一些tag,方便后面kibana过滤数据

  好的,重启filebeat,/etc/init.d/filebeat restart

  4.2 配置 Elasticsearch

  确保 Elasticsearch 已启动

  4.3 配置kibana

  安装filebeat等示例仪表板

  mkdir -p ~/download && cd ~/download

curl -L -O http://download.elastic.co/beats/dashboards/beats-dashboards-1.3.1.zip

unzip beats-dashboards-1.3.1.zip

cd beats-dashboards-1.3.1/

./load.sh

  默认情况下,脚本假设 Elasticsearch 在 127.0.0.1:9200 上运行。使用 -url 选项指定另一个位置。例如:./load.sh -url :9200。

  Kibana 需要配置elasticsearch的地址和端口。现在这两个服务都在同一台机器上。默认配置为localhost:9200,无需更改

  4.4 打开kibana

  kibana 启动后,默认端口为 5601,从浏览器打开:5601

  kibana 会加载一个 5m 的 js,请耐心等待

  打开后的界面是这样的

  

  改为filebeat-*

  

  点击创建,然后点击发现。如果进入后日志中有数据,我们应该可以看到类似下图的界面

  

  区域说明

  

  点击type查看我们在filebeat中指定的日志名称

  

  还有更*敏*感*词*自己去发现。

  4.5 参考资料

  https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-getting-started.html

https://www.elastic.co/guide/en/kibana/current/getting-started.html

https://www.elastic.co/guide/en/elasticsearch/guide/current/getting-started.html

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线