ELK主要收集分析预警的是我们平台系统中各个服务的业务日志,一般通过日志组件(log4j 、log4j2 、logback)来收集并写入文本。但是对于系统本身以及一些应用软件的监控预警,这套方案显然是不合适的,这里推荐一下GPE三剑客;基本上主流的中间件和应用都能监控,并且大多数都是代码无入侵的。 Grafana、Prometheus、Exporter(一系列插件)为了使得整合监控程序更加流畅完整,我们加入了注册中心做服务发现,实现动态添加服务,使用邮件、钉钉以及webhook实现异常告警。
工作流程: Exporter组件获取服务器或者系统软件的metrics
Prometheus拉取Exporter的metrics到本地存储
Grafana配置Prometheus数据源获取其采集数据结合自定义面板实现监控大屏
Grafana通过设置Alerting实现监控预警
Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。
5.1.1 下载及上传prometheus安装包 下载当前最新prometheus的2.23.0版本,地址:https://prometheus.io/download/ 解压
tar -zxvf prometheus-2.23.0.linux-amd64.tar.gz
5.1.2 修改配置文件
vi /gpe/prometheus-2.23.0.linux-amd64/prometheus.yml
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
5.1.3 启动
cd prometheus-2.23.0.linux-amd64
nohup ./prometheus --config.file=prometheus.yml >/dev/null &
5.1.4 验证 可以通过http://ip:9090访问浏览器,或者http://ip:9090/metrics看是否能提供关于自身的各项指标
5.2.1 下载及上传grafana安装包 下载当前最新grafana的7.3.4版本,地址:https://grafana.com/grafana/download 解压
tar -zxvf grafana-7.3.4.linux-amd64.tar.gz
5.2.2 启动
cd grafana-7.3.4
nohup ./bin/grafana-server web >/dev/null &
5.2.3 验证 访问浏览器http://ip:3000, 默认的账号密码为: admin / admin,登录后会要求修改密码
第一次登录系统会要求输入新的密码,之后添加数据源Prometheus
compile group: 'io.micrometer', name: 'micrometer-registry-prometheus'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator'
# spring-boot-actuator配置
management:
server:
# 区分开来actuator端口安全
port: 12345
servlet:
#请求前缀
context-path: /
endpoints:
web:
exposure:
include: '*'
health:
#关闭过滤敏感信息
sensitive: false
endpoint:
shutdown:
#是否启用 shutdown 端点
enabled: true
health:
#何时显示完整的健康详情
show-details: ALWAYS
logfile:
#是否启用 logfile 端点
enabled: true
metrics:
#是否启用metrics端点
enabled: true
prometheus:
#是否启用 prometheus 端点
enabled: true
metrics:
export:
prometheus:
# 是否启用向prometheus导出
enabled: true
distribution:
percentiles-histogram:
http:
server:
# 开启Micormeter
requests: true
sla:
http:
server:
# Micormeter bucket指标配置,千分尺分段记录
requests: 100ms,200ms,400ms
percentiles:
http:
server:
# Micormeter quantile指标配置
requests: 0.5,0.9,0.95,0.99,0.999
tags:
application: ${spring.application.name}
通过file_sd_configs进行服务发现的配置,每次json文件的内容发生变更,Prometheus会自动刷新target列表 保存到/docker/prometheus/conf/file_sd_configs目录下
注意路径,如果没有在prometheus中发现http://172.16.90.33:9090/targets有对应的job_name,可以查看log日志查询是否是找不到路径
[
{
"targets": [
"192.168.20.89:9000"
],
"labels": {
"job":"spring-cloud-service",
"env":"test",
"application":"spring-cloud-service-test",
"instance":"192.168.20.89:9000"
}
},
{
"targets": [
"192.168.20.89:9001"
],
"labels": {
"job":"spring-cloud-service",
"env":"test",
"application":"spring-cloud-service-test1",
"instance":"192.168.20.89:9001"
}
}
]
- job_name: spring-cloud-service
metrics_path: "/actuator/prometheus"
file_sd_configs:
- files:
- file_sd_configs/springcloud/*.json
refresh_interval: 10s
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。