我是靠谱客的博主 内向项链,这篇文章主要介绍三阶段--elk日志分析(2)Logstash和ES和Kibana,现在分享给大家,希望可以做个参考。

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
复制代码
1
2
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/*

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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

复制代码
1
2
在这里插入代码片

geoip过滤器插件–增强数据编辑

对信息进行来源查询—地理位置来源查询

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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的输入

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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

  1. 基本介绍
    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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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是正常启动的
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
修改配置文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部