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"
}
}
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 {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
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
vim /etc/yum.repos.d/es.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 -y elasticsearch
vim /etc/yum.repos.d/es.repo
[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
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service
netstat -anpt
sysctl -w vm.max_map_count=262144 > /etc/sysctl.conf
sysctl -p
vim /etc/security/limits.conf
tail /etc/security/limits.conf
* 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
node.name: ela1
node.data: true
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts:
‐ ela1
‐ 192.168.122.106:9300
‐ 192.168.122.218
cluster.initial_master_nodes: ["ela1", "ela2", "ela3"]
启动: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"
elasticsearch.hosts: ["http://ela1:9200"]
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
|