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