概述
logstash跟filebeat的作用差不多
收集处理日志,推送到相关地方
安装测试运行
下载logstash-7.13.2-linux-x86_64.tar.gz包,并解压,大小约344M
修改名字logstash-7.13.2为logstash
Logstash管道两个必需元素 input 和 output
input模块收集,选择filters(过滤),然后输出outputs(可以输出到屏幕或者elk集群存起来)
主文件:/usr/local/logstash/bin/logstash
进入logstash的安装主目录下执行
/usr/local/logstash/bin/logstash -e ' input { stdin { type => stdin } } output { stdout { codec => rubydebug } } '
速度由性能决定,性能好点的速度可能会快一点,所以耐心等待。
配置输入输出
创建一个任意文件,并写入,作为logstash的管道配置文件
vim /usr/local/logstash/config/first-pipeline.conf
input { stdin { } } output { stdout { } }
配置文件语法测试
/usr/local/logstash/bin/logstash -f config/first-pipline.conf --config.test_and_exit
出现Configuration OK字样
/usr/local/logstash/bin/logstash -f config/first-pipline.conf
运行
Grok过滤器插件
grok过滤器插件,解析web日志
将非结构化日志数据解析为结构化和可查询的内容
摘取感兴趣的片段
详细参考grok文档
- 准备一个用于测试的日志
vim /var/log/httpd.log
83.149.9.216 ‐ ‐ [04/Jan/2015:05:13:42 +0000] "GET /presentations/logstash‐monitorama‐ 2013/imageskibana‐search.png HTTP/1.1" 200 203023 "http://semicomplete.com/presentations/logstash‐monitorama‐2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
没换机器,为避免冲突,删掉/usr/local/logstash/data/*
rm -rf /usr/local/logstash/data/*
input {
file {
path => ["/var/log/httpd.log"]
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
mutate {
##重写字段,rename重命名名称,把clientip改成cip。想定义哪个字段改哪个
rename => {
"clientip" => "cip"
}
}
##删除字段remove_field,如message input_type @..等
mutate { remove_field => ["message","input_type","@version","fields"] }
}
output {
stdout { }
}
测试:
./bin/logstash -f config/first-pipeline.conf
在这里插入代码片
geoip过滤器插件–增强数据编辑
对信息进行来源查询—地理位置来源查询
input {
file {
path => ["/var/log/httpd.log"]
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
geoip {
source => "clientip"
}
}
output {
stdout { }
}
测试:
./bin/logstash -f config/first-pipeline.conf
配置接收Beats的输入
input {
# file {
# path => ["/var/log/httpd.log"]
# start_position => "beginning"
# }
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
#mutate {
# rename => {
# "clientip" => "cip"
# }
#}
#mutate { remove_field => ["message","input_type","@version","fields"] }
#geoip {
# source => "clientip"
#}
}
output {
stdout { }
}
测试
清除缓存
rm -rf /usr/local/filebeat/data/
cd /usr/local/filebeat
./filebeat
ES集群
elasticsearch
- 基本介绍
elastic search是elastic stack核心的分布式搜索和分析引擎。logstash和beats有助于收集,聚合和丰富你的数据并将其存储在elastic search中,使用kibana,可以交互探索,可视化和共享数据的见解,并管理和监视堆栈,elasticsearch是发生索引、搜索、分析数据的地方
支持的数据类型
- 结构化文本
- 非结构化文本
- 数字数据
- 地理空间数据
elasticsearch是***面向文档***的, - 文档是所有可搜索数据的最小单位:日志文件中的日志项;一部电影的具体信息,一张唱片的详细信息;MP3播放器里的一首歌,一篇PDF文档中的具体内容。
- 文档会被序列化成json格式,保存在elasticsearch中:json对象由字段组成;每个字段都有对应的字段类型(字符串,数值,布尔,日期,二进制,范围类型)
- 每个文档都有一个唯一id:可以自己指定id,或者通过elasticsearch自动生成
文档元数据
- 元数据用于标注文档的相关信息
- _index 文档所属的索引名
- _type 文档所属的类型名
- _id 唯一id
索引
增删改查
与关系型数据库的比较
ES集群部署
centos7 最少4G的内存,通常以集群出现,至少三个节点(三台服务器),更改主机名为ela1、ela2、ela3,并进行域名解析vim /etc/hosts
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch #获取key
vim /etc/yum.repos.d/es.repo #创建yum仓库
[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 -y elasticsearch #安装es
##另外两台机器:
vim /etc/yum.repos.d/es.repo #创建yum仓库
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=0
gpgkey=https://artifacts.elastic.co/GPG‐KEY‐elasticsearch
enabled=1
autorefresh=1
type=rpm‐md
##然后安装
yum install -y elasticsearch
##过程很慢。因为我网不行,所以是下载的tar包,然后上传解压的。
##安装完成后
systemctl daemon-reload #重新装载es程序
systemctl enable elasticsearch.service #开机启动
systemctl start elasticsearch.service #启动es
netstat -anpt #查看开放的端口,当出现9200和9300的时候,es是正常启动的
sysctl -w vm.max_map_count=262144 > /etc/sysctl.conf #修改内核参数,设置内存映射
sysctl -p #
vim /etc/security/limits.conf #设置文件描述符数量
tail /etc/security/limits.conf
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
二进制安装的配置文件的位置vim /usr/local/elasticsearch/config/elasticsearch.yml
rpm包安装的配置文件的位置vim /etc/elasticsearch/elasticsearch.yml
cluster.name: elk #cluster.name集群名称
node.name: ela1 #注意这里,节点名称,2、3节点的改成自己的名字,别的地方都一样
node.data: true #指定节点是否为数据节点,数据节点包含并管理索引的一部分
network.host: 0.0.0.0 #监听哪个网卡
http.port: 9200 #监听端口,对外的
discovery.seed_hosts: #官方指定写法如下,3台机器一样 指定集群成员,用于主动发现他们,要把所有的机器都写进来,包括本机
‐ ela1 #节点1主机名称
‐ 192.168.122.106:9300 #节点2的ip加端口 9300是对内的
‐ 192.168.122.218 #节点3的ip
cluster.initial_master_nodes: ["ela1", "ela2", "ela3"] #指定有资格称为master的节点,这里是所有的都由资格
启动:systemctl start elasticsearch.server
注意先启动ela1,(然后再启动ela2、3,这里先不启动)
systemctl enable elasticsearch.server
查看集群状态curl -X GET "localhost:9200/_cat/health?v"
失败了说明没起起来,重启再开一次服务,成功了再开ela2和3,然后查看集群节点都有哪些:curl -X GET "localhost:9200/_cat/nodes?v"
三台就成功了。
配置很简单,测试的适合内存不足,很难受。
ES集群测试
要确保Elasticsearch集群可用
vim /usr/local/logstash/config/first-pipeline.conf
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
remove_field => [ "message" ]
}
geoip {
source => "clientip"
}
}
output {
stdout {
code => rubydebug
}
elasticesearch {
hosts => [ "10.9.30.108:9200","10.9.30.13:9200","10.9.30.182:9200" ]
}
}
先启动logstash cd /usr/local/logstash/
./bin/logstash -f config/first-pipeline.conf --config.reload.automatic
再验证ES集群中是否创建了索引:
curl -X GET "localhost:9200/_cat/indices"
出现如下,成功(三个节点都出现。)
green open logstash-2021.07.14-000001 rf2l_VJxQJuL2o6gYEMp6Q 1 1 0 0 416b 208b
kibana
kibana7.13.2 装哪个机器上都行,不是非得安装在1上
搜索和观察日志,可视化分析,管理监控
部署
下载包kibana-7.13.2-linux-x86_64.tar.gz
解压并移动包tar xvzf kibana-7.13.2-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/
mv kibana-7.13.2-linux-x86_64/ kibana
修改配置文件
vim ./kibana/config/kibana.yml
server.port: 5601 #改
server.host: "0.0.0.0" #改
# 用于连接到 ES 集群的地址和端口
elasticsearch.hosts: ["http://ela1:9200"] #改
# 日志文件路径
# logging.dest: stdout
logging.dest: /var/log/kibana/kibana.log #改
# 设置页面的字体为中文
i18n.locale: "zh‐CN" #改
添加用户useradd ela
创建目录mkdir /run/kibana /var/log/kibana
更改目录的属主和属组chown ela.ela /run/kibana/ /var/log/kibana/ /usr/local/kibana/ -R
运行kibananohup /usr/local/kibana/bin/kibana --allow-root &
或者su ela
/usr.local/kibana/bin/kibana
浏览器访问http://本机ip:5601
创建索引模式
菜单—Management—Srack Management----kibana—索引模式----创建索引模式
索引模式名称:写上然后下一步
查看数据
菜单—Analytics—Discover
最后
以上就是内向项链为你收集整理的三阶段--elk日志分析(2)Logstash和ES和Kibana的全部内容,希望文章能够帮你解决三阶段--elk日志分析(2)Logstash和ES和Kibana所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复