1. ELKB

摘抄 Beats 入门教程 (一)

在集中式日志记录中,数据管道包括三个主要阶段:聚合,处理和存储。 在 ELK 堆栈中,传统上,前两个阶段是堆栈工作量 Logstash 的职责。执行这些任务需要付出一定的代价。 由于与 Logstash 的设计有关的内在问题,性能问题变得经常发生,尤其是在复杂的管道需要大量处理的情况下。将 Logstash 的部分职责外包的想法也应运而生,尤其是将数据提取任务转移到其他工具上。 正如我在本文中所描述的,这个想法首先在 Lumberjack 中体现出来,然后在 Logstash 转发器中体现出来。 最终,在随后的几个开发周期中,引入了新的改进协议,该协议成为现在所谓的 “Beats” 家族的骨干。

1.1 开放5044端口

firewall-cmd --query-port=5044/tcpfirewall-cmd --zone=public --add-port=5044/tcp --permanentfirewall-cmd --reload

1.2 修改 logstash.yml

cd /usr/local/src/logstash-8.5.0/configvi logstash.ymli

133 === 修改任何主机都可以连接

api.http.host: 0.0.0.0

1.3 修改 logstash.conf

cd /usr/local/src/logstash-8.5.0/vi logstash.confi

input内容

input { beats {port => 5044 }}
Esc:wq

1.4 安装Beats,以Filebeat为例(新开一个窗口)

cd /usr/local/src/curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.5.0-linux-x86_64.tar.gztar xzvf filebeat-8.5.0-linux-x86_64.tar.gzrm -rf filebeat-8.5.0-linux-x86_64.tar.gzcd filebeat-8.5.0-linux-x86_64/filebeat test output

默认的配置文件是当前目录下的 filebeat.yml ,默认输出到Elasticsearch

1.4.1 修改 filebeat.yml
vi filebeat.yml:set nui

22 === 不修改,目前支持的类型,参考官网 input-types
25 === id也是唯一的

id: first-info

28 === 自动加载配置

enabled: true

32 === 文件位置,可以配置多个,再多粘贴几行即可

- /platform/first/first-info*.log

53 === 放开注释

54 === 放开注释,修改级别为info

level: info

55 === 添加自定义的字段到根位置,并筛选,具体缩进格式参见下面的error

fields_under_root: true

这样info配置就完成了,继续在56行后把error配置好,注意缩进格式

- type: filestreamid: first-errorenabled: truepaths:- /platform/first/first-error*.logfields: level: errorfields_under_root: true


记录 : 一开始并未发现fields的fields_under_root,但是对fields有思考,假如我的字段和elasticsearch的key重复了,他会怎么办” />
162 === 放开注释,向logstash输出

164 === 放开注释,向端口5044输出

1.4.2 再次测试
filebeat test configfilebeat test output

1.5 启动filebeat

cd /usr/local/src/chown -R esuser:esuser filebeat-8.5.0-linux-x86_64/su esusercd filebeat-8.5.0-linux-x86_64/filebeat -e -c /usr/local/src/filebeat-8.5.0-linux-x86_64/filebeat.yml

1.6 准备向first服务下的info和error中追加日志

echo "2022-10-02 00:00:00 [main] INFO AAAAA2-filebeat" >> first-info.1.logecho "2022-10-02 00:00:00 [main] INFO BBBBB2-filebeat" >> first-info.1.logecho "2022-10-02 23:59:59 [timeoutChecker_2_1] ERROR KKKKK2" >> first-error.1.logecho "2022-10-02 23:59:59 [timeoutChecker_2_1] ERROR OOOOO2" >> first-error.1.log


如果过滤level,就可以分开info和error

2. EKB

如果只是收集日志,不需要filter,Beats算是很轻量级的了

2.1 点击左侧导航栏,点击集成,可以看到elk的很多集成

2.2 搜索 logstash,可以看到推荐的集成是 Filebeat 和 Metrics

2.3 点击 Filebeat 集成,可以看到 Filebeat 推荐直接输出到 elasticsearch和kibana

2.4 kill掉 logstash 和 filebeat

ps -ef | grep 'logstash'ps -ef | grep 'filebeat'

2.5 修改 filebeat.yml,输出到 elasticsearch

cd /usr/local/src/filebeat-8.5.0-linux-x86_64su esuservi filebeat.yml:set nui

124 === 放开注释 (可以不修改内容,也可以写具体IP)

125 === 添加用户名

username: "elastic"

126 === 添加密码

password: "SCWfp0xcHkV2KubsE6jt"


151 === 放开注释,输出到elasticsearch

153 === 主机也放开注释 (可以不修改内容,也可以写具体IP)

hosts: ["192.168.109.160:9200"]

154 === 添加index(后面加上的,如果不添加index,默认是filebeat-%{agent.version}) 参考

index: "platform_%{+YYYY-MM-dd}"

157 === 放开注释,用https

161 === 放开注释,用户名,同上

162 === 放开注释,密码,同上

163 == 添加权限认证,注意缩进

ssl.ca_trusted_fingerprint: "e8004705bb5ae42f107dddc201732a657be0e8c4868ff733ff961f6f58d3380d"

值可以通过该命令获取,记得把:去掉,随便写个main函数replace下

openssl x509 -fingerprint -sha256 -in /usr/local/src/elasticsearch-8.5.0/config/certs/http_ca.crt


165 === 添加模板name

setup.template.name: "filebeat-elastic"

166 === 添加模板pattern

setup.template.pattern: "filebeat_*"

169 === 注释掉,不再向logstash输出

171 === 主机也注释掉

Esc:wq

2.6 测试

filebeat test configfilebeat test output


如果 第一次启动时没有配置name和pattern 或 更换索引后只配置了新索引,没配置name和pattern 都会有此错误

Exiting: setup.template.name and setup.template.pattern have to be set if index name is modifiedError initializing beat: setup.template.name and setup.template.pattern have to be set if index name is modified

2.7 启动

filebeat -e -c /usr/local/src/filebeat-8.5.0-linux-x86_64/filebeat.yml

2.8 去kibana中创建视图查看日志




当然,也可以过滤 level 字段, 想要看info还是error

2.9 追加日志测试

echo "2022-10-03 00:00:00 [main] INFO BBBBB2-filebeat直接到elastic" >> first-info.1.logecho "2022-10-03 23:59:59 [timeoutChecker_2_1] ERROR KKKKK2-直接到elastic" >> first-error.1.log

3. 个人感想

3.1 总体下来,一开始启动elasticsearch粘贴出来的文本是很重要的,几乎后面所有的操作都需要以此支撑,官网给到的打印真是可以

3.2 中文社区给到的文档,版本有些低了,尤其是入门教程,很多涉及到认证的几乎没说,但是搭建的时候,很多配置又都需要
3.3 中文社区给到的kibana的测试数据以及配套的文章,还是不错的,尤其是做跟着教程做的一些视图,感觉上只要你有数据,kibana就可以自动的识别数据,给你推荐好匹配的视图,图表化数据很给力
3.4 在做logstash和Beats的时候,明显感受到了大数据的影子,尤其是管道的设计,从一个流到另一个流,还有过滤操作等,就想到了电商的埋点。假如用户搜索了某个商品,前端会调用日志系统,传输一条 XXX在X年X月X日 搜索了 XXX商品,价格 XXX元,一条简单的用户画像就出来了;又或者用户购买了某个商品,同样也会有一条类似于 XXX在X年X月X日 购买了 XXX商品,价格 XXX元。这样,通过一点点用户的操作,慢慢的就简单做出了用户的用户画像,推荐系统就应该根据这些去比较精准的推荐他所需要的。他买了一张床,系统是不是可以给他推荐个床垫,或者四件套等,电商把握用户需求那可真不错,后面可以用在我的app上