指定ES的分片和副本数量
ES索引名称的创建规范
1 2 3 4 5 1.名称最好见名知意,最好和你实际写入的业务有关; 2.名称不要以"." 开头,以"." 开头多索引我们称之为"隐藏索引" ; 3.一般隐藏索引都是组件去创建,建议不要人为创建,默认kibana就隐藏了以"." 开头的索引 4.字符支持小写字母,数字及连字符(-),和内置一些变量比如"%{...}" ; 5.不要出现特殊字符;
1.通过ES的API操作副本和分片
1 2 3 4 5 6 7 8 9 10 curl -X PUT 'http://10.0.0.211:9200/school' \ -H 'Content-Type: application/json' \ -d '{ "settings": { "number_of_shards": 5, "number_of_replicas": 0 } }'
2.通过索引模板操作副本和分片
索引模板:创建索引时,会自动匹配是否有对应的索引模板,若匹配则根据索引模板创建。
2.1创建索引模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 curl -X PUT 'http://10.0.0.211:9200/_index_template/linux-school' \ -H 'Content-Type: application/json' \ -d '{ "template": { "settings": { "number_of_replicas": 0, "number_of_shards": 5 } }, "index_patterns": [ "linux-school*" ] }'
验证模板
1 2 3 4 [root@elk01:2 ~]# curl -X PUT 'http://10.0.0.211:9200/linux-school-01' {"acknowledged" :true ,"shards_acknowledged" :true ,"index" :"linux-school-01" }
2.2图形化创建索引模板
1 2 3 4 5 验证索引模板: [root@elk01:2 ~]# curl -X PUT 'http://10.0.0.211:9200/student01' {"acknowledged" :true ,"shards_acknowledged" :true ,"index" :"student01" } 索引管理里查看新创建的student-01索引是否是 3分片,0副本 自然是OK的
3.通过filebeat组件操作副本和分片
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 [root@elk01:2 ~]# cat /etc/filebeat/06-nginx-es.yaml filebeat.inputs: - type : log json: keys_under_root: true add_error_key: true overwirte_keys: true paths: - /var/log/nginx/access.log* output.elasticsearch: hosts: ["http://10.0.0.211:9200" ,"http://10.0.0.212:9200" ,"http://10.0.0.213:9200" ] index: "test-filebeat-%{+yyyy.MM.dd}" setup.ilm.enabled: false setup.template.name: "test-filebeat" setup.template.pattern: "test-filebeat*" setup.template.overwrite: false setup.template.settings: index.number_of_shards: 5 index.number_of_replicas: 0
提示:基于filebeat配置的ES集群的索引及分片,副本信息,本质上创建时会自动转换为ES的http请求进行创建索引。
多个intput写到不同索引
需求:多个inputs写入到ES集群里的不同索引里
1.编写配置文件
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 38 39 40 41 42 43 44 45 [root@elk01:1 ~]# cat /etc/filebeat/07-nginx-es.yaml filebeat.inputs: - type : log tags: "file" paths: - /tmp/test.log - type : tcp tags: "tcp" host: "0.0.0.0:9000" - type : log tags: "nginx" json: keys_under_root: true add_error_key: true overwirte_keys: true paths: - /var/log/nginx/access.log* output.elasticsearch: hosts: ["http://10.0.0.211:9200" ,"http://10.0.0.212:9200" ,"http://10.0.0.213:9200" ] indices: - index: "study-file-%{+yyyy.MM.dd}" when.contains: tags: "file" - index: "study-tcp-%{+yyyy.MM.dd}" when.contains: tags: "tcp" - index: "study-nginx-%{+yyyy.MM.dd}" when.contains: tags: "nginx" setup.ilm.enabled: false setup.template.name: "study" setup.template.pattern: "study*" setup.template.overwrite: false setup.template.settings: index.number_of_shards: 8 index.number_of_replicas: 0
2.启动filebeat实例
1 [root@elk01:0 ~]# filebeat -e -c /etc/filebeat/07-nginx-es.yaml
3.测试tcp数据
1 2 3 [root@elk01:0 ~]# echo "999" | nc 10.0.0.211 9000 [root@elk01:0 ~]# echo "666" | nc 10.0.0.211 9000 [root@elk01:0 ~]# echo "000" | nc 10.0.0.211 9000
4.测试nginx
1 [root@elk01:0 ~]# while true ; do curl 10.0.0.211;sleep 0.5;done
5.测试本地文件
1 [root@elk01:0 ~]# echo ‘hello world' >/tmp/test.log
6.kibana基于Discover分析数据
6.1查看索引是否都创建完成
6.2创建索引模式为 study*
6.3 进入Discover,选择相应字段,查看分析数据
使用enabled,控制inputs多个源是否启用,true / false
1 2 3 4 5 6 7 8 9 10 11 filebeat.inputs: - type : log enabled: false tags: "nginx" json: keys_under_root: true add_error_key: true overwirte_keys: true paths: - /var/log/nginx/access.log*
filebeat 多实例
1.启动第一个实例
1 2 3 4 5 6 7 8 9 [root@elk01:0 ~]# cat /etc/filebeat/02-tcp-console.yaml filebeat.inputs: - type : tcp host: "0.0.0.0:9000" output.console: pretty: true [root@elk01:1 ~]# filebeat -e -c /etc/filebeat/02-tcp-console.yaml
2.启动第二个实例
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 [root@elk01:2 ~]# cat /etc/filebeat/04-nginx-console.yaml filebeat.inputs: - type : log json: keys_under_root: true add_error_key: true overwirte_keys: true paths: - /var/log/nginx/access.log* output.console: pretty: true [root@elk01:1 ~]# filebeat -e -c /etc/filebeat/04-nginx-console.yaml 2024-10-03T12:15:44.735+0800 INFO instance/beat.go:698 Home path: [/usr/share/filebeat] Config path: [/etc/filebeat] Data path: [/var/lib/filebeat] Logs path: [/var/log/filebeat] Hostfs Path: [/] 2024-10-03T12:15:44.737+0800 ERROR instance/beat.go:1027 Exiting: 'data path already locked by another beat' . Please make sure that multiple beats are not sharing the same data path (path.data). Exiting: data path already locked by another beat. Please make sure that multiple beats are not sharing the same data path (path.data). [root@elk01:1 ~]# ll /var/lib/filebeat/ -rw------- 1 root root 0 Oct 3 12:15 filebeat.lock [root@elk01:2 ~]# filebeat -e -c /etc/filebeat/04-nginx-console.yaml --path.data /tmp/nginx-filebeat
总结
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 总结: - 1.同一个节点可以启动多个filebeat实例,但需要指定不同的数据目录; - 2.如果filebeat采集多个数据源有两种常见的解决方案,要么配置多个input,要么使用多实例; 如果所有配置都放在同一个filebeat优缺点: 优点: 部署方便,启动一个实例即可。 缺点: -1.当多个input中有任意一个需要修改时,在重启期间,其他的input都会受到影响。 -2.当配置多事,多个input配置比较繁琐; 如果所有配置都使用不同filebeat,多实例优缺点: 优点: - 1.实现了配置文件和程序的解耦,说白了,就是一个实例挂掉,不会影响到其他实例; - 2.配置简单 缺点: - 1.部署不方便,要同时部署多个filebeat,且数据目录需要单独指定维护;