Node Exporter & Prometheus系统监控
背景
- Netdata固然是一个不错的系统监控工具,但是Node Exporter + Prometheus + Grafana也提供了另外的选择,并且可定制化程度更高
- Node Exporter是Prometheus推出的针对服务器状态监控的Metrics工具,除此之外,GitHub中还有众多的XX Exporter可用来针对不同的服务提供Metrics服务,可以直接在Google中用
服务名 + exporter
或服务名 + metrics
查询 - Prometheus是云原生时代事实上的系统(服务)状态监测标准,通过基于HTTP的pull方式采集时序数据,可以通过服务发现或者静态配置去获取要采集的目标服务器,支持单主节点工作,支持多种可视化图表及仪表盘
- Grafana是一个开源的度量分析与可视化套件。 纯Javascript 开发的前端工具,通过访问库(如InfluxDB、Prometheus),展示自定义报表、显示图表等。Grafana的UI更加灵活,有丰富的插件,功能强大
Node Exporter安装
- 目标监控主机操作系统:Ubuntu Server 20.04
一键安装脚本:
sudo useradd --no-create-home --shell /bin/false node_exporter \ && cd /opt && wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz \ && tar xvf node_exporter-0.18.1.linux-amd64.tar.gz \ && sudo mv node_exporter-0.18.1.linux-amd64 /opt/node_exporter \ && sudo chown node_exporter:node_exporter /opt/node_exporter -R \ && sudo touch /etc/systemd/system/node_exporter.service \ && sudo echo '[Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=node_exporter Group=node_exporter Type=simple ExecStart=/opt/node_exporter/node_exporter --collector.systemd [Install] WantedBy=multi-user.target' > /etc/systemd/system/node_exporter.service \ && sudo systemctl daemon-reload \ && sudo systemctl enable node_exporter \ && sudo systemctl start node_exporter \ && sudo journalctl -f --unit node_exporter
- Node Exporter不建议使用Docker安装,参考官方GitHub仓库的说明
安装完成后访问:
http://${host}:9100/
,确认服务正常启动,如下图所示:
Prometheus/Grafana安装
Prometheus配置文件
prometheus-conf.yaml
global: scrape_interval: 15s external_labels: monitor: 'codelab-monitor' scrape_configs: - job_name: 'host1' scrape_interval: 5s static_configs: - targets: ['host1:9100'] - job_name: 'host2' scrape_interval: 5s static_configs: - targets: ['host2:9100']
- 配置文件中的
targets
的值即是待监控的节点列表,灵活更改即可
- 配置文件中的
使用Docker Compose部署
prometheus.yaml
:version: "3" services: prometheus: restart: always image: prom/prometheus:v2.28.0 container_name: prometheus volumes: - ./:/etc/prometheus/ command: - "--config.file=/etc/prometheus/prometheus-conf.yaml" - "--storage.tsdb.path=/prometheus" - "--web.console.libraries=/etc/prometheus/console_libraries" - "--web.console.templates=/etc/prometheus/consoles" - "--storage.tsdb.retention.time=720h" - "--web.enable-lifecycle" ports: - 9090:9090 grafana: image: grafana/grafana:8.1.2 container_name: grafana restart: always depends_on: - prometheus ports: - 3000:3000
- 安装完成后访问:
http://${host}:9090/
,确认Prometheus服务正常启动,如下图所示:
- 安装完成后访问:
http://${host}:3000/
,确认Grafana服务正常启动,默认用户名:密码是admin:admin
配置默认Prometheus数据源
- 左侧菜单
Configuration → Data Sources
,点击/编辑默认Prometheus数据源,配置URL为:http://prometheus:9090
,Save & Test
安装Node Exporter Dashboard
在左侧面板中选择Create->Import可以使用ID引入Grafana Dashboard市场中提供的支持Node Exporter的Dashboard
- 给Dashboard加上星标,就可以在Configuration->Preferences->Home Dashboard中设置为首页Dashboard
- Grafana如果仅供自己使用,不建议将服务暴露在公网,可以参考端口映射将服务映射到本地服务器
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。