ELK Stack(Elasticsearch、Logstash、Kibana)的监控告警体系可分为组件自身监控与业务日志异常监控两部分,常用方案包括Kibana原生Watcher插件、ElastAlert第三方工具及Prometheus+Grafana开源组合。以下是具体配置步骤:
在配置告警前,需确保ELK组件已正确安装并运行:
network.host: 0.0.0.0)。file采集本地日志、beats接收Filebeat数据)、过滤器插件(如grok解析Nginx/Apache日志)及输出插件(如elasticsearch写入ES)。elasticsearch.hosts: ["http://localhost:9200"])。filebeat.inputs指向日志文件路径(如/var/log/nginx/access.log),并输出至Logstash或Elasticsearch。Watcher是Elasticsearch的内置告警插件,通过Kibana界面配置,适用于Elasticsearch数据监控(如集群状态、日志指标)。
bin/elasticsearch-plugin install x-pack,重启Elasticsearch服务。High CPU Usage Alert)。{
"query": {
"bool": {
"filter": [
{
"range": {
"cpu_usage": {
"gte": 90
}
}
}
]
}
}
}
1m,每分钟检查一次)。{
"actions": {
"email_notification": {
"email": {
"to": "admin@example.com",
"subject": "High CPU Usage Alert",
"body": "CPU usage is above 90% for 5 minutes."
}
}
}
}
ElastAlert是基于Python的告警工具,支持频率告警(如10分钟内5次错误)、异常检测等,适用于复杂业务日志监控(如Nginx 404错误、响应超时)。
pip install elastalert安装,或下载源码解压。config.yaml,设置Elasticsearch连接、规则目录、SMTP/Slack配置(如邮件通知):es_host: localhost
es_port: 9200
rule_files:
- "example_rules/*.yaml"
smtp_host: smtp.gmail.com
smtp_port: 587
smtp_user: your_email@gmail.com
smtp_password: your_password
from_addr: "alert@example.com"
example_rules目录下创建规则文件(如nginx_404.yaml),定义告警名称、类型、索引、过滤条件及动作:name: "Nginx 404 Error Alert"
type: frequency
index: kafka-logstash-nginx-access*
num_events: 3 # 10秒内3次404错误
timeframe:
seconds: 10
filter:
- query:
query_string:
query: "response: 404"
alert:
- "slack"
slack_webhook_url: "https://hooks.slack.com/services/your/webhook/url"
slack_msg_type: "text"
alert_text: "Nginx 404 Error detected: {{match}} ({{num_hits}} times in {{timeframe}})"
elastalert --verbose --config config.yaml --rule example_rules/nginx_404.yaml(前台测试),生产环境用nohup后台运行。此方案适用于ELK组件自身状态监控(如Elasticsearch集群健康、Logstash处理延迟)及业务指标监控(如请求量、响应时间),通过Prometheus采集指标,Grafana可视化并触发Alertmanager告警。
prometheus.yml添加ES、Logstash、Kafka等exporter(如elasticsearch_exporter监控ES集群):global:
scrape_interval: 15s
scrape_configs:
- job_name: 'elasticsearch'
static_configs:
- targets: ['elasticsearch-exporter:9114']
Configuration → Data Sources → Prometheus),导入ELK监控Dashboard(如Elastic官方提供的Elasticsearch Cluster Monitoring)。alertmanager.yml设置通知渠道(如邮件、Slack):route:
receiver: 'slack'
receivers:
- name: 'slack'
slack_configs:
- api_url: 'https://hooks.slack.com/services/your/webhook/url'
channel: '#alerts'
Elasticsearch Disk Space AlertA(如elasticsearch_filesystem_data_used_bytes / elasticsearch_filesystem_data_total_bytes > 0.8)1m(每分钟评估一次)slack接收器。1m太长可能导致延迟)。num_events(如将3次改为5次)或timeframe(如将10s改为30s),增加过滤条件(如排除测试环境的日志)。通过以上方案,可实现ELK Stack从组件自身健康到业务日志异常的全链路监控告警,帮助企业快速定位问题,提升系统稳定性。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。