目录
logstash是负责采集数据的,是入口,流向为logstash-> ES->kibana,但是它的资源消耗很大,有时候没那么多内存给他占用,同时有些定制的采集指标logstash无法满足。所以有时也使用轻量级的metricbeat来实现采集,流向为metricbeat-> ES->kibana,可以获取系统级的 CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据,还可针对系统上的每个进程获得与 top 命令类似的统计数据。同时Metricbeat 提供多种内部模块,用于从服务中收集指标,例如 Apache、NGINX、MongoDB、MySQL、PostgreSQL、Prometheus、Redis 等等。
官网:https://www.elastic.co/guide/en/beats/metricbeat/7.6/metricbeat-installation.html
- ##进入kibana
- 点击集群 -> 使用metricbeat
- 输入监测集群URL http://192.168.19.71:9200
-
- ##在线安装
- curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.6.2-linux-x86_64.tar.gz
- tar xzvf metricbeat-7.6.2-linux-x86_64.tar.gz
-
- ##也可以采用docker直接运行
- docker pull docker.elastic.co/beats/metricbeat:7.6.2
- docker run \
- docker.elastic.co/beats/metricbeat:7.6.2 \
- setup -E setup.kibana.host=kibana:5601 \
- -E output.elasticsearch.hosts=["elasticsearch:9200"]
- ##配置进入/etc/metricbeat/modules.d,查看所有模块
- --disabled表示未激活,elasticsearch-xpack已被激活
-
- ##vim elasticsearch-xpack.yml
- ---------------------------------------------
- - module: elasticsearch
- metricsets:
- - ccr
- - cluster_stats
- - enrich
- - index
- - index_recovery
- - index_summary
- - ml_job
- - node_stats
- - shard
- period: 10s
- hosts: ["http://localhost:9200"]
- username: "elastic"
- password: "123"
- xpack.enabled: true
- ---------------------------------------------
-
- ##返回上一层,配置metricbeat
- vim metricbeat.yml
- ---------------------------------------------
- output.elasticsearch:
- hosts: ["192.168.19.71:9200"]
- username: "elastic"
- password: "123"
- ---------------------------------------------
-
- ##重启elasticsearch服务,查看端口
- systemctl restart elasticsearch.service
-
- ##同样对server2\3进行处理,然后禁用内部采集即可
filebeat可以对日志信息进行检测,官网介绍:https://www.elastic.co/guide/en/beats/filebeat/7.6/filebeat-installation.html
点击logs可以查看到有很多日志信息,但此时hostname检索到es各个主机的日志信息(未安装filebeat),集群的日志都在:/var/log/elasticsearch
filebeat的数据流向为filebeat->logstash-> ES->kibana,组合使用。假如流量很大,为了确保数据不丢失,可以加入中间件kafaka或者redis,实现消息队列,即filebeat->logstash->kafaka-> ES->kibana;
server1安装filebeat,激活es模块
- ##安装:
- curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.2-x86_64.rpm
- sudo rpm -vi filebeat-7.6.2-x86_64.rpm
-
- ##配置es
- var.paths:
- - var/log/elasticsearch/*.log
- - var/log/elasticsearch/*_server.json
-
- gc:
- enabled: true
- var.paths:
- - var/log/elasticsearch/gc.log.[0-9]*
- - var/log/elasticsearch/gc.log
-
- audit:
- enabled: true
- var.paths:
- - var/log/elasticsearch/*_access.log
- - var/log/elasticsearch/*_audit.json
- slowlog:
- enabled: true
- var.paths:
- - var/log/elasticsearch/*_index_search_slowlog.json
- - var/log/elasticsearch/*_index_search_slowlog.log
- - var/log/elasticsearch/*_index_indexing_slowlog.json
- - var/log/elasticsearch/*_index_indexing_slowlog.log
-
- deprecation:
- enables: true
- var.paths:
- - var/log/elasticsearch/*_deprecatin.json
- - var/log/elasticsearch/*_deprecatin.log
-
- ##配置filebeat全局文件
- vim filebeat.yml
- -----------------------------------------------------------
- hosts: ["192.168.19.71:9200"]
- username: "elastic"
- password: "123"
- -----------------------------------------------------------
-
- ##启动服务
- systemctl enable --now filenbeat.service
-
- ##在web端点击logs,通过hostname可以进行查询
上述配置中:
1、服务器日志文件集设置:
var.paths 一组基于全局的路径,指定在何处查找日志文件。Go Glob支持的所有模式也在这里得到了支持。例如,您可以使用通配符从预定义级别的子目录:/path/to/log//. 1log获取所有文件。这将从/path/到/log的子文件夹中获取所有的.log文件。它不会从/path/获取日志文件到/log文件夹本身。如果此设置为空,Filebeat将根据您的操作系统选择日志路径;
2、gc日志文件集设置
3、审计日志文件集设置
【部分问题解决】
(1)冷热分离
注意ELK是实时监测数据的,虽然有数据库的功能,但是完全和数据库不一样,实时监测非常消耗资源,如果只当数据库,纯属大材小用。一般要把数据冷热分离,刚刚采集到数据可以理解为热数据(hot),实时写入ELK分析;过一段时间,数据变为温数据(warm),可以用来查询,不再写入;再过一段时间变为冷数据(cold),查询也很少了,我们可以考虑把他放到数据库中存储,或者从硬件方面来说,从高性能的节点存储换为普通性能的节点,把高性能的节点留给热数据;再过很久,会删除数据。- 想要实现上面的冷热分离,进行生命周期管理,必须有:
1、节点标签。区分冷热节点
2、生命周期策略。定义热阶段的大小,最长时间,存在时长等等
3、索引模板引用索引模板策略。模板创建索引,加载生命周期策略
4、索引模板指定调度节点。将新建索引分片分配到热节点(2)搜索速度优化
为了提高es搜索速度,可以考虑下面几种方法:
1、为文件系统cache留有足够内存,内存越大,速度越快
2、提升i/o,使用固态硬盘
3、减少层层嵌套