成熟稳定且强大
丰富的插件,大部分情况都能满足
轻量级部署,资源占用少
使用情况主要用来作为监控面板使用
使用Grafana监控:linux,windows,redis,clickhouse,mongodb,mysql,RabbitMQ,站点情况
使用Grafana设置告警当服务出现无法访问时通知到企业微信群
Grafana版本问题,可能存在面板失效,需要做一些调整
使用dockercompose安装Prometheus配置文件说明prometheus版本:
指定运行参数:
启动配置文件路径:'--=/etc/prometheus/'
数据存储目录:'--=/prometheus'
数据保留时间:'--=30d'
允许使用curl-XPOST``http://localhost:9090/-/reload重载其配置:'--'
指定web控制台配置,添加了账号密码:'--=/etc/prometheus/'
开放端口:9090
指定网络:devopsnetwork(dockernetworkcreatedevopsnetwork)
挂载配置文件及数据目录,需要对数据目录进行创建及赋予权限:mkdirprometheus_datachown65534./prometheus_data关于持久化权限的讨论
用到了三个配置文件:
dockercompose文件:
version:'3.1'services:prometheus:restart:alwayscontainer_name:prometheusimage:prom/prometheus::指定web面板账号密码访问-'--=/etc/prometheus/'数据保留时间-'--=30d'需要权限mkdirprometheus_datachown65534./prometheus_data-./:/etc/prometheus//prometheus_data:/prometheus-./:/etc/prometheus/:-9090:9090networks:-devopsnetworknetworks:devopsnetwork:external:true
prometheus配置文件示例:,
指定了prometheus,并设置了访问密码rootdevops666
global:scrape_interval:15sAttachtheselabelstoanytimeseriesoralertswhencommunicatingwithAscrapeconfigurationcontainingexactlyonepointtoscrape:启用了账号密码_auth_users需要配置basic_auth:username:rootpassword:devops666
web控制台配置:
指定账号密码rootdevops666
basic_auth_users:root:$2a$10$c6OOt9f6LuhiabPyW0nkNOprb1ndQ/HHSfqjB/exe7yh5FaYUqvBy
启动:dockercomposeup-d
Prometheus指定账号密码访问设置https或基础密码验证文档
要启用web面板账号密码访问,指定web访问配置文件'--=/etc/prometheus/'
映射指定账号密码rootdevops666,Prometheus密码需要使用htpasswd生成bcrypt密码在线生成工具
basic_auth_users:root:$2a$10$
如果需要使用Prometheus监听Prometheus,并且Prometheus启用了身份验证,需要在配置出增加basic_auth配置节
scrape_configs:-job_name:'prometheus'scrape_interval:5sstatic_configs:-targets:['localhost:9090']自行修改成你的域名ssl_certificate/certs//;ssl_certificate_key/certs//;ssl_session_cacheshared:SSL:1m;ssl_session_timeout5m;ssl_ciphersHIGH:!aNULL:!MD5;ssl_prefer_server_cipherson;location/{proxy_passhttp://prometheus:9090;proxy_http_;proxy_bufferingoff;proxy_request_bufferingoff;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"upgrade";proxy_set_headerHost$host;proxy_set_headerX-Forwarded-For$remote_addr;}}安装成功根据上面的配置,完成了Prometheus的搭建,监听本身Prometheus的情况
通过使用账号密码rootdevops666登陆后即可
使用dockercompose安装GrafanaGrafana是一个开源的数据可视化和监控平台,它提供了丰富的图表和面板,用于展示各种指标和数据。提到Prometheus,Grafana自然是不不能落下,基于官方和社区,可以很快的制作出监控可视化面板,助力日常运维检测
配置文件说明grafana版本:
指定账号密码:rootdevops666
端口映射:3000
挂载数据目录./grafana_data,需要赋予权限:mkdir-pgrafana_datachown-R472:472./grafana_data
指定网络为devopsnetwork(dockernetworkcreatedevopsnetwork)
dockercompose文件:,安装替换版本号即可
version:'3.1'services:grafana:restart:alwayscontainer_name:grafanaimage:grafana/grafana:10.2.0ports:-"3000:3000"volumes:-./grafana_data:/var/lib/grafanaenvironment:-GF_SECURITY_ADMIN_USER=root-GF_SECURITY_ADMIN_PASSWORD=devops666-GF_USERS_ALLOW_SIGN_UP=falsenetworks:-devopsnetworknetworks:devopsnetwork:external:true
启动:dockercomposeup-d
添加nginx配置server{listen80;listen443ssl;server_;global:scrape_configs:-job_name:'linux'global:scrape_configs:-job_name:'win-node'其他配置location=/stub_status{stub_status;}}指定映射端口:9113
docker运行nginx-prometheus-exporter
dockerrun-d-p9113:9113\--namenginx_exporter\--restartalways\nginx/nginx-prometheus-exporter:0.11--=
运行使用IP+9113端口访问即可:
将其配置到
-job_name:'nginx'Themysqld_exporterhost:portreplacement:192.168.123.214:9104
重载配置后生效curl-XPOST-uroot:devops666``http://localhost:9090/-/reload
导入Grafana面板11329
MongoDB监控配置Prometheus组件:mongodb_
Grafana面板推荐:
MongoDBID:14997部分图表无效
MongoDB数据源插件需要企业版才能使用
docker运行mongodb_exporter监听单机实例
指定配置文件-./config:/etc/clickhouse-server使用数据源插件监控
Grafana启用数据源clickhouse插件
配置数据源需要开启9000端口
启用默认仪表盘
预览效果
Redis监控配置Prometheus组件:redis_
配置参考
端口:单机9121:9121,集群9122:9121
Grafana面板推荐:
RedisExporterQuickstartandDashboard:ID14091
RedisDashboardforPrometheusRedisExporter:ID11835
Redis数据源插件面板:ID12776
redis_exporter单机监控docker运行oliver006/redis_exporter指定端口9121
通过--来指定地址和密码
配置文件-'--=/config/'volumes:_sd_configs:-names:-:Aport:443relabel_configs:-source_labels:[__address__]target_label:__param_targetreplacement::[__meta_dns_name]target_label:instance-target_label:__address__replacement:192.168.123.214:9115Makedomainnamebecome'Host'headerforproberequests-source_labels:[__meta_dns_name]target_label:vhost匹配apollo,需要访问/health检查状态-source_labels:[__param_hostname]regex:'apollo.*'target_label:__param_targetreplacement:,问的gpt,还真行-source_labels:[__param_hostname]regex:'prometheus.*'target_label:__param_targetreplacement:https://root:devops666@192.168.123.214:443
重载prometheus配置生效
导入面板13659监控效果
导入面板9719监控效果
导入面板9965监控效果
Grafana监控告警设置通过设置Alertrules(预警规则),匹配到有指标符合规则时,就会根据Notificationpolicies(通知策略)进行消息发送,发送的内容和模板在Contactpoints(通知方式)设置
下面完成一个实际的使用场景:检测RabbitMQ面板状态,服务不可用时进行预警,通过企业微信机器人进行群通知
设置预警规则添加规则名称:RabbitMQ监控
选择数据源:Prometheus
设置指标条件:内存使用字节erlang_mnesia_memory_usage_bytes并指定job是rabbitmq
设置预警条件:内存值小于1(无效)时进行通知
设置检查规则,30s检查一次,30s等待期,立刻通知
Pingperiod等待期:如果警报条件不再满足,警报规则将会恢复到正常状态,而不会触发警报
这个和默认的通知策略还有关系,需要结合使用,默认是30s,5分钟等待期,4小时内不重复发送可根据需要修改
设置提醒信息及服务地址
设置通知策略可以通过修改重复间隔,重新发送通知
设置告警模板Grafana使用Go模板语言来创建通知消息,可根据文档自行编写,另外一个aws的中文文档可以参考
结合文档写的一个通知模板
{{define"DevOpsTemplate"-}}{{-}}{{-}}{{"summary"}}**{{"预警消息"}}**:{{.Value}}{{--}}{{}}{{-}}{{"runbook_url"}}**{{"服务地址"}}**:{{.Value}}{{--}}{{}}**{{"预警分组"}}**:{{._folder}}**{{"开始时间"}}**:{{(.).Format"2006-01-0215:04:05"}}**{{"预警参数"}}**:{{}}{{.Name}}:{{.Value}}{{}}{{-}}{{-ifand("summary")("runbook_url")-}}{{.Name}}:{{.Value}}{{}}{{}}{{--}}{{--}}设置通知方式支持多种通知,根据需要配置,这里以企业微信机器人为例
需要通过告警快速定位问题,实际应用中肯定是需要将告警实例及其信息一并通知,所以还需要结合告警模板和规则进行消息的发送。使用模板语法指定前面设置的模板
设置完成后,当预警规则设置页面出现异常提示时,就会进行提示了
踩坑记录安装官方文档运行后,提示无权限,需要赋予挂载目录权限:chown65534./prometheus_data
权限在之前的使用中使用777权限,能够解决,但是很明显不是最佳方案,然后好好找了下,最后发现这个问题很久就有人提出pr,只是一直没有被合并,大概下个版本就可以了,关于持久化权限的讨论
basic_auth修改后,重载配置是无效的,需要重新启动后才生效
redis使用redis_exporter,监控多个如果有密码,没有密码,密码不一样的实例需要分开运行配置
mongodb的监控始终不是很完美
站点监控的证书验证和密码验证反反复复尝试了很久,以下为主要踩坑的地方
配置blackboxjob的paramsmodule只能有一个,多个只会第一个生效
blackbox配置的证书可以是pem,无效转换成crt格式,配置:ca_file:/config/
basic_auth配置不需要再配置job,可以直接使用特殊的url格式:https://root:devops666@192.168.123.214:443
Grafana服务重启后,nginx代理域名访问一直502,IP可以访问,重启nginx后就可以访问了
Grafana的通知模板语法,可参考文档
2.循环预警消息{{}}/**/{{}}4.删除空格和换行符{{}}{{}}{{.Name}}={{.Value}}{{}}{{}}5.if判断{{"runbook_url"}}#6.时区问题,+8设置**{{"开始时间"}}**:{{(.).Format"2006-01-0215:04:05"}}相关文档PrometheusGithub
Prometheus官方文档
PrometheusBcrypt密码生成
Prometheus配置文件参考示例
Prometheus数据持久化权限的讨论
GrafanaGithub
Grafana面板检索
Grafana通知模板中文文档
Prometheus+Grafana+Alertmanager实现告警推送教程
Grafana新手教程-实现仪表盘创建和告警推送****
后语