Linux——logstash数据采集&kibana数据可视化
logstash数据采集1. logstash简介输入过滤器输出2. logstash安装部署logstash区分文件版本logstash输入输出案例- 标准输入输出- 标准输入至文件- 标准输入到es主机- 文件内容输出到es主机- 接受远程日志- 多行合并过滤 filter 案例3. kibana数据可视化httpd 日志仪表板集群监控模式ES-head Xpack设定1. logstash简
logstash数据采集
1. logstash简介
Logstash是一个开源的服务器端数据处理管道。
Logstash管道有两个必需的元素,输入和输出,以及一个可选元素过滤器。
输入
采集各种样式、大小和来源的数据
过滤器
实时解析和转换数据
数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,
识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、
更快速地分析和实现商业价值。
输出
选择存储库,导出数据
2. logstash安装部署
logstash使用java编写,所以需要安装jdk
rpm -ivh jdk-8u171-linux-x64.rpm
rpm -ivh logstash-7.6.1.rpm
logstash区分文件版本
logstash会把进度保存到sincedb文件中,目录为/usr/share/logstash/data/plugins/inputs/file/
,清空对应的sincedb文件,logstash将从头上传文件内容
cat .sincedb_452905a167cf4509fd08acb964fdb20c
20297 0 64768 119226 1551859343.6468308
1. inode编号
2. 文件系统的主要设备号
3. 文件系统的次要设备号
4. 文件中的当前字节偏移量
5. 最后一个活动时间戳(浮点数)
6. 与此记录匹配的最后一个已知路径
logstash输入输出案例
- 标准输入输出
/usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'
将标准输入输出至标准输出
- 标准输入至文件
vim file.conf
input {
stdin {}
}
output {
file {
path => "/tmp/testfile"
codec => line { format => "custom format: %{message}"}
}
}
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/file.conf
- 标准输入到es主机
vim es.conf
#####################
input{
stdin {}
}
output {
stdout {}
elasticsearch {
hosts => ["172.25.52.3:9200"]
index => "logstash-%{+yyyy.MM.dd}"
}
}
###################
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/es.conf
在elasticsearch-head中查看刚才输入的信息
- 文件内容输出到es主机
logstash读取文件时,以logstash用户访问,因此需要具有访问文件的权限
chmod 644 /var/log/messages
vim message-es.conf
######################
input {
file {
path => "/var/log/messages"
start_position => "beginning"
}
}
output {
stdout {}
elasticsearch {
hosts => "172.25.52.3:9200"
index => "local-syslog-%{+YYYY.MM.dd}"
}
}
######################
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/message-es.conf
在elasticsearch-head中查看信息
- 接受远程日志
在远端主机配置rsyslog开放端口,指定日志服务器至logstash主机
vim /etc/rsyslog.conf
systemctl restart rsyslog
$ModLoad imudp
$UDPServerRun 514
*.* @@172.25.52.2:514
编辑 logstash 配置文件
vim remote-log.conf
###########
input {
syslog {
port => 514
}
}
output {
stdout { }
elasticsearch {
hosts => "172.25.52.3:9200"
index => "remote-syslog-%{+YYYY.MM.dd}"
}
}
#######
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/remote-es.conf
在远端主机生成日志
在es-head网页查看
- 多行合并
多行过滤可以把多行日志记录合并为一行事件
vim /etc/logstash/conf.d/multiline.conf
input {
file {
path => "/var/log/my-es.log"
start_position => "beginning"
codec => multiline {
pattern => "^\[" #将以[开头的日志记录过滤
negate => "true"
what => "previous"
}
}
}
output {
stdout {}
elasticsearch {
hosts => ["172.25.52.3:9200"]
index => "eslog-%{+yyyy.MM.dd}"
}
}
过滤 filter 案例
logstash官方提供了许多应用适配模板以供参考,存放在/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.1.2/patterns
内。
安装httpd
yum install -y httpd
修改httpd日志文件权限
chmod 755 /var/log/httpd/
编写logstash过滤文件
vim grok.conf
input {
file {
path => "/var/log/httpd/access_log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" } #httpd模板
}
}
output {
stdout {}
elasticsearch {
hosts => ["172.25.52.3:9200"]
index => "apachelog-%{+yyyy.MM.dd}"
}
}
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/grok.conf
访问httpd主页
ab -n 100 -c1 http://172.25.52.2/index.html
在logstash端查看过滤情况
3. kibana数据可视化
Kibana 开发工具为开发人员提供了多种强大方法来帮助其与Elastic Stack 进行交互。
官网 : https://elasticsearch.cn/download/
rpm -ivh kibana-7.6.1-x86_64.rpm
vim /etc/kibana/kibana.yml
server.port: 5601 #服务端口
server.host: "172.25.52.2" #服务监听地址
elasticsearch.hosts: ["http://172.25.52.3:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"
启动服务
systemctl enable --now kibana
访问kibana
httpd 日志仪表板
创建索引策略 指定目标日志,时间使用*匹配,时间筛选字段名称:@timestamp
分别新建可视化指标以及柱状图,选中设定的apachelog
指标可视化 设定时间为今天或其余有数据的时间
柱状图设定 x坐标 ,时间同样设定在有数据的范围
分别保存两个可视化项目,新建仪表板,添加两个保存好的可视化项目
即可看到httpd的有关日志指标
集群监控模式
集群模式下kibana可以通过不同的插件采集到集群内部的数据信息。
首先,在es-master节点创建证书
cd /usr/share/elasticsearch/
bin/elasticsearch-certutil ca
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
cp elastic-certificates.p12 elastic-stack-ca.p12 /etc/elasticsearch
cd /etc/elasticsearch
chown elasticsearch elastic-certificates.p12 elastic-stack-ca.p12
将证书复制至其余节点的/etc/elasticsearch
下,并同样修改所有者为elasticsearch
用户
在所有es节点开启xpack认证
vim /etc/elasticsearch/elasticsearch.yml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /etc/elasticsearch/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /etc/elasticsearch/elastic-certificates.p12
重启ES集群的所有节点上的es服务,成功后,在master节点设定用户密码
systemctl restart elasticsearch
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
在部署kibana的节点上设置用户密码
vim /etc/kibana/kibana.yml
systemctl restart kibana
elasticsearch.username: "kibana"
elasticsearch.password: "westos"
重新登陆kibana
此时可以通过内部采集模式查看ES节点工作状态
而logstash的采集也需要增加用户认证才可以继续传输数据
output {
stdout {}
elasticsearch {
hosts => ["172.25.52.3:9200"]
index => "apachelog-%{+yyyy.MM.dd}"
user => "elastic"
password => "westos"
}
}
ES-head Xpack设定
在所有节点的es配置文件中添加访问支持
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
重启es服务
systemctl restart elasticsearch
访问head服务时添加用户名密码认证,可以正常访问
http://172.25.52.4:9100/?auth_user=elastic&auth_password=westos
更多推荐
所有评论(0)