在分布式系统中,实时监控和报警是保障系统稳定性的关键。本文将介绍如何使用 Prometheus、ElasticSearch Exporter 和 Grafana 构建一个监控 ElasticSearch 集群的解决方案。通过本文的步骤,您将能够轻松实现对 ElasticSearch 集群的监控,并将监控数据可视化展示在 Grafana 上。
构建 docker-compose.yml
创建一个存放 Docker 配置文件的目录,并进入该目录:
mkdir /app/esmonitor
cd /app/esmonitor
创建 docker-compose.yml 配置文件
vim /app/esmonitor/docker-compose.yml
填入 docker-compose.yml 的配置内容:
version: '3'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
deploy:
resources:
limits:
cpus: '0.8'
memory: 16G
privileged: true
ports:
- 9090:9090
volumes:
- /app/esmonitor/prometheus.yml:/etc/prometheus/prometheus.yml
depends_on:
- grafana
environment:
- TZ=Asia/Shanghai
grafana:
image: grafana/grafana:latest
hostname: grafana
container_name: grafana
ports:
- 3000:3000
environment:
- TZ=Asia/Shanghai
elasticsearch_exporter:
image: quay.io/prometheuscommunity/elasticsearch-exporter:latest
command:
- '--es.uri=http://192.168.3.122:9200'
- '--es.all'
- '--es.indices'
- '--es.indices_settings'
- '--es.indices_mappings'
- '--es.shards'
- '--es.timeout=20s'
restart: always
ports:
- "192.168.3.122:9114:9114"
• prometheus 服务:
• **cpus**:限制 Prometheus 服务的 CPU 使用率为 80%。
• **memory**:限制 Prometheus 服务的内存使用量为 12GB。
• **privileged**:启用此选项以允许容器拥有主机系统的高级权限(建议谨慎使用)。
• **ports**:映射 Prometheus 服务的端口。
• **volumes**:挂载 Prometheus 的配置文件。
• **depends_on**:确保 Prometheus 服务在 Grafana 服务启动后再启动。
• elasticsearch_exporter 服务:
• **–es.uri**:指定 ElasticSearch 集群的 URI 地址。
• **–es.all**:获取集群中所有节点的状态。
• **–es.indices**:获取所有索引的统计信息。
创建 Prometheus 的配置文件 prometheus.yml
vim /app/esmonitor/prometheus.yml
填入 dprometheus.yml 的配置内容:
global:
scrape_interval: 5s
evaluation_interval: 5s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['192.168.3.122:9090']
- job_name: 'elasticsearch'
scrape_interval: 60s
scrape_timeout: 30s
metrics_path: "/metrics"
static_configs:
- targets: ['192.168.3.122:9114']
启动所有服务:
docker-compose -f docker-compose.yml up -d
验证 Prometheus:
访问 Prometheus 的 UI,地址为 http://192.168.3.122:9090。在“Targets”页面,您应该能看到 ElasticSearch 的监控状态为 UP,表示监控成功。
验证 elasticsearch_exporter
访问 elasticsearch_exporter 的 UI,地址为 http://192.168.3.122:9114
配置 Grafana:
访问 Grafana 的 UI,地址为 http://192.168.3.122:3000。使用默认账号密码 admin/admin 登录,并按照提示修改密码。
创建数据源
在 Grafana 中创建 Prometheus 数据源,输入 Prometheus 的地址 http://192.168.3.122:9090,并保存配置。
导入监控模板
导入官方或推荐的监控模板,官方模板编号为 2322,推荐的模板编号为 13071、13072、13073、13074。根据需求选择适合的模板进行导入。
导入完成后,您可以在 Grafana 中查看 ElasticSearch 的监控信息。