收集数据 -> 处理数据 -> 展示数据
-> 数据报警
对应到Prometheus结构中为
业务数据源NodeExporter -> Prometheus Server -> WebUI(Grafana)
->报警管理器 AlertManager
1,安装 Node Exporter
[root@SENRSL04 senrsl]# docker pull prom/node-exporter
docker run -d --name node-exporter \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
--net="host" \
prom/node-exporter
9100端口冲突
docker run -d --name node-exporter \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
--net=host \
prom/node-exporter \
--web.listen-address=0.0.0.0:9091 \
--path.procfs /host/proc \
--path.sysfs /host/sys \
--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
测试
http://think4.test.com:9091/metrics
2,安装Prometheus Server
https://prometheus.io/download/
时序数据库,用于存储和查询监控数据
docker安装
[root@SENRSL04 senrsl]# docker pull prom/prometheus
[root@SENRSL04 senrsl]# docker run -d -p 9090:9090 --name prometheus --net=host -v /home/senrsl/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
[root@SENRSL04 senrsl]# cat prometheus/prometheus.yml
# Prometheus全局配置项
global:
scrape_interval: 15s # 设定抓取数据的周期,默认为1min
evaluation_interval: 15s # 设定更新rules文件的周期,默认为1min
scrape_timeout: 15s # 设定抓取数据的超时时间,默认为10s
external_labels: # 额外的属性,会添加到拉取得数据并存到数据库中
monitor: 'codelab_monitor'
# # Alertmanager配置
# alerting:
# alertmanagers:
# - static_configs:
# - targets: ["localhost:9093"] # 设定alertmanager和prometheus交互的接口,即alertmanager监听的ip地址和端口
# # rule配置,首次读取默认加载,之后根据evaluation_interval设定的周期加载
# rule_files:
# - "alertmanager_rules.yml"
# - "prometheus_rules.yml"
# scape配置
scrape_configs:
- job_name: prometheus
# 覆盖global的采样点,拉取时间间隔5s
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
- job_name: node-exporter
static_configs:
- targets: ['localhost:9091']
labels:
instance: localhost
# - job_name: 'prometheus' # job_name默认写入timeseries的labels中,可以用于查询使用
# scrape_interval: 15s # 抓取周期,默认采用global配置
# static_configs: # 静态配置
# - targets: ['localhost:9091'] # prometheus所要抓取数据的地址,即instance实例项
# - job_name: 'user-module' #个人测试用接口
# static_configs:
# - targets: ['think4.test.com:9100'][root@SENRSL04 senrsl]#
访问
http://think4.test.com:9090/
http://think4.test.com:9090/metrics
测试联通了node-exporter
http://think4.test.com:9090/graph 查询 up 并执行
返回了两条up记录
后面的1代表应用存活
查询内存使用情况,输入 node_memory_Active_bytes
可以显示图形
配图1
3,安装Grafana
docker run -d \
-p 3000:3000 \
--name=grafana \
-v /home/senrsl/prometheus/grafana:/var/lib/grafana \
grafana/grafana
或者官方给的demo是
sudo docker run -d -i -p 3000:3000 \
-e "GF_SERVER_ROOT_URL=http://grafana.server.name"
\
-e "GF_SECURITY_ADMIN_PASSWORD=admin" \
--net=host \
grafana/grafana
GF_SERVER_ROOT_URL:docker的宿主机的ip地址
GF_SECURITY_ADMIN_PASSWORD:设置admin用户的登陆密码
http://think4.test.com:3000/login
默认用户名密码admin
4,grafana配置Prometheus
添加Prometheus plugin,然后配置数据源。。。。
配图2
然后+Dashboard看板 +Panel图表
空白的panel,左下选择数据源为Prometheus134,添加Metric业务指标公式,可以Query inspector和Run queries来测试。之后右侧 设置Title为CPU使用率,保存。
配图3
5,grafana metric指标
metric 指标,kv存储。
指标类型:
- gauges: 计量器。 某个key的value为特定值。 如Guages(haha, 3),
则haha这个key对应的value即为3.
- counter: 计数器。某个key的value进行变更。如Counter(haha, +1),
则haha这个key对应的value从3变成了4.
- meters:
度量某件事情发生的速率。如,1分钟内调用Meter(haha)5次,则haha这个key对应的value为5/min
- histograms: 柱状图。 Histogram统计数据的分布情况。比如1分钟内调用了很多次update(hehe,
x), 则会根据x的计算分布。
- timer: Meters & Histogram 的结合。
metrics,底层使用的可以是opentsdb
opentsdb是一个时间序列的数据库。就是一段时间内某些特定指标量的一些列数据点。
5,grafana alert
配置报警功能,看起来也用了flowable
也可以直接在创建panel的时候添加告警。
6,grafana模板中心
https://grafana.com/grafana/dashboards/
找到合适的模板,复制ID,grafa导入ID即可。
配图4
这是别人封装好的UI,很全
配图5
配图6
删了个没用到的datasource就报错了。。。。
TypeError: t.map is not a function
7,springboot actuator
http://think4.test.com:8061/actuator
基于actuator
添加
<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <scope>runtime</scope> </dependency>
启动,访问
http://localhost:8061/actuator/prometheus
配图7
然后grafana import 4701.
查看Prometheus已启动的target
http://think4.test.com:9090/targets
可以看到Prometheus.yml文件中配置的target信息,添加springboot的actuator
- job_name: user-module
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['think4.test.com:8061']
然后重启Prometheus
确认启动起来了
配图8
然后重新import 4701,刷新一下页面,就显示了。
配图9
可以自定义指标,比如可以配置显示用户增长、登录、订单成交量等等有用的数据。
senRsl
2022年10月28日15:14:34
没有评论 :
发表评论