开源软件选型:为什么需要日志收集(一)(图)
优采云 发布时间: 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