Metricbeat 是一个轻量级的开源数据采集器,专门用于收集操作系统和服务的指标(metrics)。它是 Elastic Stack(即 ELK Stack)的一部分,通常用于监控系统性能、收集应用程序和服务器的性能指标,并将这些数据发送到 Elasticsearch 或 Logstash 进行进一步的分析和可视化(如通过 Kibana)。
如果你是一名Elastic stack的开发人员,可能认为只要能够熟练的使用Elastic stack就可以了,可是随着软件行业的内卷,不少IT大佬们提出了开发既运维的观念,如果你是一名Elastic stack的运维人员,如果再不努力可能真的就要失业了。对于开发既运维的观念我是非常认同的,我经常和我的同事讲,如果你只会使用Elastic stack技术来写代码实现CUDR,对Elastic集群的相关知识非常匮乏的话,那么后续的代码优化你很可能就会做的不到位了。所以,同学们不论你是开发还是运维都建议你跟随我把目前的这个专题学起来,肯定对你有莫大的好处。
废话结束,开始今天的教程。
Metricbeat 的主要功能和特点
- 采集系统和服务的指标: Metricbeat 可以从各种系统和服务(如 Apache、MySQL、Docker、Kubernetes 等)收集性能指标。例如,CPU 使用率、内存使用情况、磁盘 I/O、网络流量等操作系统层面的数据。
- 模块化设计: Metricbeat 提供了多个模块,每个模块针对不同的服务或技术收集特定的指标。用户可以启用或禁用不同模块来采集自己需要的监控数据。常见模块包括:
- System Module:采集 CPU、内存、磁盘、网络等系统指标。
- MySQL Module:采集 MySQL 相关的性能指标。
- Docker Module:采集容器的运行状况和性能指标。
- Kubernetes Module:监控 Kubernetes 集群。
- 轻量级: Metricbeat 以轻量级为特点,对系统性能影响较小,非常适合用于大规模集群中收集数据。
- 发送数据到多种目标: Metricbeat 可以将收集到的指标数据发送到不同的目标:
- Elasticsearch:用于存储和查询数据,并通过 Kibana 可视化。
- Logstash:用于进一步处理和传输数据。
- 文件:可以输出到本地文件,用于日志管理或调试。
- Kafka:将数据发送到 Kafka 进行消息处理。
- 实时监控: Metricbeat 可以以固定的时间间隔(例如每 10 秒)采集数据,并实时发送到目标系统进行监控和分析。
- 自定义指标采集: 除了内置模块外,Metricbeat 还允许用户定义自己的监控需求,采集自定义指标。
1.安装Metricbeat
在集群中的每个节点上安装metircbeat
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.11.4-amd64.deb
sudo dpkg -i metricbeat-8.11.4-amd64.deb
2.接入Elastic stack
修改配置文件metricbeat.yml
reload.enabled: true
setup.dashboards.enabled: true
setup.kibana:
host: "http://192.168.50.4:5601"
ssl.verification_mode: none
output.elasticsearch:
hosts: ["<elasticsearch-domain>:<elasticsearch-port>"]
protocol: "https"
username: "elastic"
password: "<your elastic password>"
使用下面的命令测试配置是否正确:
/usr/share/metricbeat/bin/metricbeat test config -c /etc/metricbeat/metricbeat.yml --path.home /usr/share/metricbeat/ --path.data /var/lib/metricbeat
/usr/share/metricbeat/bin/metricbeat test output -c /etc/metricbeat/metricbeat.yml --path.home /usr/share/metricbeat/ --path.data /var/lib/metricbeat
配置
/usr/share/metricbeat/bin/metricbeat setup -c /etc/metricbeat/metricbeat.yml --path.home /usr/share/metricbeat/ --path.data /var/lib/metricbeat
3.启动metricbeat
systemctl start metricbeat
4.使用kibana查看metricbeat监控数据
在kibana的管理页面的面板中搜索“system”,找到Metricbeat相关的内容,点击打开查看。
metricbeat的监控数据已经正常显示了。
但是上面的操作我们禁用了证书验证,并且在配置文件中硬编码了用户名和密码,有很大的安全隐患,接下来我们就要一步一步的解决这些安全隐患。
5.使用证书验证
首先我在我的节点node2上安装metricbeat,并在这个节点上配置metricbeat使用证书认证连接Elasticsearch.
5.1 生成CA证书
生成CA证书:使用下面的命令生成CA证书(这里我们添加–pem,直接生成ca.crt和ca.key,如果不加–pem生成后再提取的话ca证书为空)。
/usr/share/elasticsearch/bin/elasticsearch-certutil ca --pem --out /etc/elasticsearch/certs/ca.zip
上面的命令会在/etc/elasticsearch/certs/
目录下生成一个ca.zip
压缩文件,解压这个文件。
cd /etc/elasticsearch/certs/
unzip ca.zip
5.2 为Metricbeat生成客户端证书和密钥
使用下面的命令生成证书:
/usr/share/elasticsearch/bin/elasticsearch-certutil cert \
--out /etc/elasticsearch/certs/elastic.zip \
--name elastic \
--ca-cert /etc/elasticsearch/certs/ca/ca.crt \
--ca-key /etc/elasticsearch/certs/ca/ca.key \
--ip 192.168.50.6 \
--dns node2.am.es.com \
--pem
上述命令会用到5.1中生成的ca.crt和ca.key。
- ip 对应你节点真实的IP
- dns 如果你使用域名要和当前的IP做好绑定,这里我是并没有真实的域名,只是通过修改/etc/hosts做的对应。
解压上述生成的elastic.zip
的文件,就能得到客户端的crt和key。
cd /etc/elasticsearch/certs/
unzip elastic.zip
5.3 修改metricbeat配置文件
我们已经生成好了ca.cr接着就修改metricbeat的配置文件应用这些证书,(这里我就只截了修改应用证书部分,其余的配置和修改node1时的相同)。
vim /etc/metricbeat/metricbeat.yml
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["https://192.168.50.6:9200"]
ssl.certificate_authorities: ["/etc/metricbeat/certs/ca.crt"]
ssl.certificate: "/etc/metricbeat/certs/elastic.crt"
ssl.key: "/etc/metricbeat/certs/elastic.key"
protocol: "https"
username: "elastic"
password: "root123"
⚠️ 虽然使用了证书,但是用户名和密码明文写在了配置文件中,是不是很不安全啊?后面的教程我会通过API key的方式修改。
5.4 检查并使配置生效
/usr/share/metricbeat/bin/metricbeat test config -c /etc/metricbeat/metricbeat.yml --path.home /usr/share/metricbeat/ --path.data /var/lib/metricbeat
使用配置生效,并启动metricbeat.
/usr/share/metricbeat/bin/metricbeat test output -c /etc/metricbeat/metricbeat.yml --path.home /usr/share/metricbeat/ --path.data /var/lib/metricbeat
通过上图可以看出我的metricbeat已经正常启动了并且没有报错,这是一件值得庆贺的事情啊。
6.检验
登录kibana的仪表板,查看节点数据。
两个节点已然在这里了。
查看一下我们使用证书添加的节点2.
数据一切正常,虽然节点1和节点2从面板这里看不出什么,但是两者背后还是有很大区别的哟。
好了,今天的教程就到这里了,天气转凉,大家注意保暖,我也要去给我儿子去买秋衣秋裤了。小孩子长得快,去年的已经不合身了。