openfalcon 组件监控_promethues 针对redis集群和负载均衡的监控告警实践

promethues 针对redis集群和负载均衡的监控告警实践

背景:

原来采用的是open falcon监控redis集群和负载均衡组件,全部采用自研程序实现的监控指标采集上报告警,有bug不说,且需要自己维护,看中了promethues强大的exporter和扩展能力。

准备:

下载好如下几个包(截止2020年8月12日的最新稳定版):

-rwx------ 1 root root 119M Aug 10 17:10 go1.14.7.linux-amd64.tar.gz-rwx------ 1 root root  58M Aug 10 17:10 prometheus-2.17.0.linux-amd64.tar.gz-rwx------ 1 root root 428K Aug 10 17:40 nginx-module-vts-master.zip-rwx------ 1 root root 9.6M Aug 10 17:40 nginx-vts-exporter-0.10.3.linux-amd64.tar-rwx------ 1 root root  50M Aug 10 19:07 grafana-7.1.3-1.x86_64.rpm-rwx------ 1 root root 3.6M Aug 11 18:55 redis_exporter-v1.9.0.linux-amd64.tar.gz-rwx------ 1 root root 3.6M Aug 12 20:35 alertmanager-0.21.0.linux-amd64.tar.gz

解释下:

nginx-module-vts-master.zip  # nginx扩展模块vts,主要是监控指标强大,可以看到每个upstream的状态nginx-vts-exporter-0.10.3.linux-amd64.tar  # vts对应的exporterredis_exporter-v1.9.0.linux-amd64.tar.gz  # redis和rediscluster 对应的exporterprometheus-2.17.0.linux-amd64.tar.gz  # Prometheus不多说grafana-7.1.3-1.x86_64.rpm  # 配合prometheus展示使用alertmanager-0.21.0.linux-amd64.tar.gz  # prometheus告警模块

一、nginx监控部署:

1.1、Nginx加载vts模块编译部署启动

./configure --prefix=/app/usr/local/nginx--with-stream --with-http_stub_status_module --with-http_lua_module--with-http_gunzip_module --with-http_ssl_module --with-http_realip_module --add-module=/root/ngx_healthcheck_module-master --add-module=/root/nginx-sticky-module-ng  --add-module=modules/ngx_http_upstream_session_sticky_module  --add-module=modules/ngx_http_reqstat_module  --add-module=modules/ngx_debug_pool  --add-module=/root/nginx-module-vts-mastermakemake install

主要是这个:--add-module=/root/nginx-module-vts-master

nginx关键配置如下:

cdeed72df8380ef9778dd2a640d9f014.png

Vts模块页面查看方式:Http://ip:16599/status

d809b7611aad5f8539f980f1a2fd664f.png

1.2、配置nginx vts exporter and start

83a93afa40e81a44ff6338c701251e2a.png

Systemctl enable nginx-vts-exporterSystemctl start nginx-vts-exporter

查看状态:

db0010652ba36dfc709a60b66f2b8881.png

1.3、配置promethues.yaml后启动 promethues和grafana

scrape_configs:  - job_name: 'prometheus'    static_configs:    - targets: [ 'ip1:9913','ip2:9913']

1.4、grafana 配置

随便用一个都行:

https://grafana.com/grafana/dashboards?search=vts%20

635bbb0f828dad464abcce46c75d4bde.png

最终效果如下:

982cb2a94dec8f12a86e71b82e58c657.png

二、redis cluster监控部署:

2.1、redis cluster 容器、虚拟机、物理机部署(略)

2.2 、启动redis operator

nohop ./redis_exporter &

2.3、promethues配置(实际生产建议采用自动发现机制,可参考:https://www.cnblogs.com/skyflask/p/11498834.html)

  - job_name: 'redis_exporter_targets'    static_configs:    - targets:      - redis://192.1.127.161:6379  #redis每个nodes的ip和端口      - redis://192.1.127.140:6379      - redis://192.1.127.131:6379      - redis://192.1.127.146:6379      - redis://192.1.127.162:6379      - redis://192.1.127.151:6379    metrics_path: /scrape    relabel_configs:      - source_labels: [__address__]        target_label: __param_target      - source_labels: [__param_target]        target_label: instance      - target_label: __address__        replacement: 192.1.2.17:9121 #redis operator的地址和端口  ## config for scraping the exporter itself  - job_name: 'redis_exporter'    static_configs:    - targets:      - 192.1.2.17:9121 #redis operator的地址和端口

查看状态(包含nginx和redis cluster的)

7bb98850ba602269a4bf317354983cd1.png

聚合查询redis集群内存总用量

b67f3b9fa82217a3dd912553e96cda25.png

redis集群中每个节点上客户端数量

072bb263e353f8dd66c2a297d032c650.png

当然也可以在grafana上查找自己喜欢的模板,例如下:

098bffd191093dcfd2a2c0689d1b1b74.png

不过我并没有找到很适合redis cluster的模板,基本都是redis单节点,目前只在单节点上加了一个总流量的监控(最左下角那个)。求推荐

二、告警配置:


2.1、配置prometheus告警规则

prometheus.yml  增加如下配置

# Alertmanager configurationalerting:  alertmanagers:  - static_configs:    - targets:       #- alertmanager:9093       - 127.0.0.1:9093 #告警发送给本地9093的alertmanager# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.rule_files:   - "rules.yml"  #告警规则

rules.yml

groups:- name:  Redis  rules:    - alert: RedisDown      expr: redis_up  == 0      for: 5m      labels:        severity: error      annotations:        summary: "Redis down (instance {{ $labels.instance }})"        description: "Redis 挂了啊,mmp\n  VALUE = {{ $value }}\n  LABELS: {{ $labels }}"    - alert: MissingBackup      expr: time() - redis_rdb_last_save_timestamp_seconds > 60 * 60 * 24      for: 10s      labels:        severity: error      annotations:        summary: "Missing backup (instance {{ $labels.instance }})"        description: "Redis has not been backuped for 24 hours\n  VALUE = {{ $value }}\n  LABELS: {{ $labels }}"  # 其他的差不多不贴了

2.2、安装配置alertmanager.yml 启动服务

global:  #resolve_timeout: 5m  resolve_timeout: 1m  smtp_smarthost: '*****:25'  #smtp IP 端口  smtp_from: 'xiongjian@***.com'  smtp_auth_username: 'xiongjian@h***.com'  smtp_auth_password: '*****'  smtp_require_tls: false  #templates: # - '*.tmpl'route:   #路由规则 可以将不同告警  receiver: 'default-receiver' #默认的告警接收人  group_wait: 10s #报警等待时间,时间内的消息会被聚合发送  group_interval: 30s  #组报警间隔时间  repeat_interval: 1000s  #重复报警间隔时间  group_by: ['alertname']  #告警分组聚合标签,会根据标签做聚合receivers:- name: 'default-receiver'  email_configs:  - to: 'xiongjian@****.com'    send_resolved: true  #解决后发送确认邮件

2.3、查看告警

普罗米修斯页面(由于redis没有开启RDB所有会有相关告警):

a988e7019a6302f0b245d56bb56406dd.png

alertmanager页面:

b3ed59bca16bfb8bff23b418c6db265f.png

实际收到的告警邮件:

f320dd937a9d606b2ec1219b6c3ec0f3.png

后续就剩下工作量的问题了:

1、增加高可用、对接测试环境所有中间件及现有监控告警指标

2、集成现有paas平台

3、中间件自动发现

4、增加短信和钉钉告警

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值