安装Filebeat
去官网下载。有多种安装方式,如图:
因为要配置自动启动等服务,所以选择yum
安装方式比较方便些。点击按照提示一步步来:
sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
vim /etc/yum.repos.d/elastic.repo
编辑内容如下:
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
安装并设置开机启动:
sudo yum install filebeat
sudo systemctl enable filebeat
注意,yum
安装目录会在/usr/share/filebeat
,配置文件在/etc/filebeat
。编辑查看下配置,主要的是输入输出的设置:
# 输入
paths:
- /var/log/*.log
# 增加字段
fields:
logtype: serverlog
# 不同目录还可以添加tags,可能是直接加在每个input里
# 定期关闭文件
close_timeout: 5m
# 忽略修改旧文件
ignore_older: 24h
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["localhost:9200"]
#output.logstash:
# The Logstash hosts
#hosts: ["localhost:5044"]
processors:
- drop_fields:
fields: ["beat", "input", "source", "offset"] # 删掉一些自带字段
也可以配置输出到Kafka:
#------------------------------ Kafka output --------------------------------
output.kafka:
enabled: true
hosts: ["10.1.2.181:9092", "10.1.2.182:9092", "10.1.2.183:9092"]
topic: "ctrlserver-log"
Kafka配置可参考阿里云Linux CentOS安装Kafka。
自行设置完后,就可以启动服务了:
systemctl start filebeat
官网使用./filebeat -e -c filebeat.yml
命令启动,可以自行试试。官网推荐要把ES
, Logstash
(可选), Kibana
都给装上,那就继续。
安装ES
直接下载解压安装
可以直接下载,解压安装:
cd /usr/local
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
tar -xzvf elasticsearch-7.6.2-linux-x86_64.tar.gz
cd elasticsearch-7.6.2
./bin/elasticsearch
编辑rpm源安装
如果想方便的设置service,可以采用rpm安装,参考rpm安装ES:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
vim /etc/yum.repos.d/elasticsearch.repo
编辑输入:
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
安装:
yum install --enablerepo=elasticsearch elasticsearch
直接下载rpm安装
如下:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-x86_64.rpm
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-x86_64.rpm.sha512
shasum -a 512 -c elasticsearch-7.6.2-x86_64.rpm.sha512
sudo rpm --install elasticsearch-7.6.2-x86_64.rpm
推荐这种方法,装完后三连:
systemctl enable elasticsearch
systemctl start elasticsearch
systemctl status elasticsearch
测试下:
curl localhost:9200
没问题!
安装Kibana
类似ES,也有多种方式:
下载解压
用wget也行,
cd /usr/local
curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-linux-x86_64.tar.gz
tar xzvf kibana-7.6.2-linux-x86_64.tar.gz
cd kibana-7.6.2-linux-x86_64/
./bin/kibana
rpm源安装方式
参考官网:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
vim /etc/yum.repos.d/kibana.repo
输入:
[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
然后安装
yum install kibana
直接下载rpm方式
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-x86_64.rpm
shasum -a 512 kibana-7.6.2-x86_64.rpm
rpm --install kibana-7.6.2-x86_64.rpm
安装目录在/usr/share/kibana
,配置在/etc/kibana/kibana.yml
。
配置主要是:
server.host
elasticsearch.url
elasticsearch.hosts # 新版好像是这样
elasticsearch.username
elasticsearch.password
可登陆localhost:5601
查看。
安装Logstash
安装前需要先安装Java。这个就行:
yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
参考官网,直接下载安装是:
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-7.6.2.rpm
sudo rpm -i logstash-7.6.2.rpm
不过本文推荐编辑rpm源,再下载安装,因为直接下载rpm源安装,好像没有创建系统启动脚本,原因不明。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
vim /etc/yum.repos.d/logstash.repo
编辑:
[logstash-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
然后安装:
yum install logstash
先试试临时的命令行进行测试,启动需要十几秒:
cd /usr/share/logstash/bin
./logstash -e 'input { stdin{}} output { stdout{}}'
输入什么就会输出什么,或者使用这个详细输出:
./logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug} }'
会附加一些字段,如图:
image.png
codec输出能够解码序列化数据,不过可能这两种输出方式是一样的,那就应该默认都是codec输出了。
也可以输出到ES:
./logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["192.168.1.160:9200"]} }'
这个还没测试过。
如果不想临时测试,可以直接根据配置启动,三连:
systemctl enable logstash
systemctl start logstash
systemctl status logstash
OK! 注意,如果机器配置不够,logstash启动会挤压ES的资源,导致ES失败!
接下来配置logstash
,根据安装方式不同,配置文件所在目录不同,/usr/local/logstash/config
或者/etc/logstash/conf.d
,可以复制logstash-sample.conf
文件在其基础上配置。
最好还是加个Kafka,日志量大的时候,Filebeat容易卡死,记得去查看log,导致Logstash也莫名崩溃。也可能是如下原因:
- Filebeat假死,看日志,或用kill -9杀死僵尸进程;这可能直接导致连接beat的logstash一启动就崩溃;
- Logstash崩溃后,Kafka里还有消息,可以删掉group,这会同时把这个group里的残留消息全删掉;
- (noqa)曾经把log里摘出一个content来解析,老是出错,还是从原始message一口气解析比较好吧;
- (noqa)message里带下划线的词语可以用%{USERNAME}给过滤掉,不然会造成有些解析不出来;
- 最终90%确定,是用了
if [foo] > 10
这种比较,其中foo又没有解析出来,导出报错,Logstash的报错真是不友好,一句大话谁知道哪里错了。
[ERROR][logstash.javapipeline ][main] Pipeline worker error, the pipeline will be stopped {:pipeline_id=>"main", :error=>"", :exception=>Java::JavaLang::NullPointerException, :backtrace=>["org.logstash.config.ir.compiler.EventCondition$Compiler$UnexpectedTypeException.
参考
https://www.cnblogs.com/xd502djj/p/8253139.html
http://doc.yonyoucloud.com/doc/logstash-best-practice-cn/get_start/full_config.html
https://www.cnblogs.com/unchch/p/12097313.html
https://blog.csdn.net/qq_34021712/article/details/79746413
网友评论