一、Metricbeat简介
Metricbeat是一个轻量级的托运程序,可以安装在服务器上,定期从操作系统和服务器上运行的服务收集度量。Metricbeat获取它收集的度量和统计数据,并将它们发送到您指定的输出,例如Elasticsearch或Logstash。
Metricbeat通过从服务器上运行的系统和服务收集指标,帮助您监控服务器,例如:
- Apache
- HAProxy
- MongoDB
- MySQL
- Nginx
- PostgreSQL
- Redis
- System
- Zookeeper
二、ELK集成Metricbeat工作原理
三、部署方案
服务器 |
服务 |
默认端口号 |
作用 |
备注 |
192.168.16.21 |
Elasticsearch |
9200 |
日志存储、日志查询、日志解析 |
|
192.168.16.22 |
Logstash |
5044 |
日志收集、日志过滤 |
|
192.168.16.4 (外网地址:xx.xxx.xx.xx) |
Kibana |
5601 |
可视化展示 |
如需外网访问,Kibana需部署在外网可以访问的服务器上 |
192.168.16.6 192.168.16.11 ...... |
Metricbeat |
服务器系统指标收集 |
各个需要采集指标的服务器上都部署 |
四、Metricbeat部署与配置
官网指南:https://www.elastic.co/guide/en/beats/metricbeat/7.8/metricbeat-getting-started.html
1.下载安装Metricbeat
注意事项:
- 在安装和配置Metricbeat前,需确保ELK(Elasticsearch、Logstash、Kibana)已正确安装和工作,关于ELK部署安装,请参照我的前一篇文章《ELK日志监控分析系统的探索与实践(一):利用Filebeat监控Springboot日志》
- Metricbeat版本需和Elasticsearch、Kibana版本保持一致
https://www.elastic.co/cn/downloads/past-releases/metricbeat-7-8-0
2.配置Metricbeat
编辑metricbeat.yml
output.elasticsearch: hosts: ["192.168.16.21:9200"] # ES地址 username: "elastic"# elasticsearch登录用户名,如有 password: "elastic"# elasticsearch登录密码,如有setup.kibana: # kibana地址 host: "192.168.16.4:5601"
注意:Output配置中,ES和Logstash只能配置一个,否则会报错:Error initializing beat: error unpacking config data: more than one namespace configured accessing 'output' (source:'metricbeat.yml')
3.启动system模块
./metricbeat modules enable system # 开启system模块 ./metricbeat modules list enable # 查看已开启的模块
如需配置采集的内容,可以修改modules.d目录下的配置文件system.yml:vi modules.d/system.yml
4.加载索引模板供Kibana可视化
./metricbeat setup -e# 初始化metricbeat,-e 的含义:日志直接命令行输出,而非日志
初始化成功后,会提示“Kibana dashboards successfully loaded.” 如下图所示:
5.启动Metricbeat
./metricbeat -e
也可以新建一个后台启动脚本:startup.sh,内容如下:
nohup ./metricbeat >/dev/null 2>&1 &
启动成功后,如下所示:
启动成功后,可以通过“检查数据”来确认Metricbeat是否收集到系统数据
6.查看Kibana面板
以上几步操作成功后,可以点击“系统指标面板”进入可视化面板页面
7.监控多台服务器
监控多台服务器和监控一台的原理一致,只需要在想要采集指标的服务器上安装Metricbeat即可,重复上述1-6步。
监控面板效果如下图所示:
五、小结
至此,ELK+Filebeat+Metricbeat的组合,就已实现了业务+系统(项目日志+系统指标)的监控与分析。当然ELK和Metricbeat的功能远不止以上提到的这些,系统监控也只是服务器运维中的一个小环节,如何实现业务、系统资源预警,并及时通知到相关责任人,才是运维的工作重点。