1.介绍
监控系统有一下部分组成:
prometheus服务(接收所有exporter发送过来的消息,配置告警规则;默认端口:9090)
grafana可视化界面(将prometheus数据展示出来;默认端口:3000)
exporter代理服务(将server上报的数据转换为prometheus能看懂的格式;nginx-vts默认端口:9913;nginx默认端口:9113)
server服务(上报数据)
alertmanager报警管理器(将告警通过mail或者webhook通知开发者;默认端口:9093)
数据上报流程:
1.server上报数据给exporter;
2.exporter上报数据给prometheus
3.grafana配置连接prometheus读取数据,并且通过UI模板将prometheus数据展示出来
4.prometheus中配置rules,触发rules后向alertmanager推送消息
5.alertmanager收到消息后处理消息
2.安装prometheus
1.下载解压prometheus包
安装包见Prometheus相关文件
2.配置prometheus
修改prometheus.yml,scrape_configs中添加
- job_name: 'prometheus'
static_configs:
- targets: ['119.28.102.000:9090']
3.启动prometheus
nohup 解压目录/prometheus --config.file=解压目录/prometheus.yml --web.external-url=http://119.28.102.000:9090 >解压目录/log.log &
3.安装grafana
1.下载grafana包
安装包见Prometheus相关文件
2.安装grafana包
sudo apt-get install -y adduser libfontconfig1
sudo dpkg -i 包名
systemctl daemon-reload
3.启动grafana
systemctl restart grafana-server #重启
systemctl status grafana-server #查看运行状态
systemctl enable grafana-server #设置开机启动
4.配置grafana,设置prometheus数据源
1.访问grafana(ip:3000)
2.选择Configuration(左侧导航栏齿轮图标)>点击Data sources>点击Add data source>搜索并选择Prometheus
3.将Http-URL输入你的Prometheus服务地址(ip:9090),点击最底部的 Save & test
5.导入grafana模板展示数据
1.选访问grafana(ip:3000)
2.选择Dashboards(左侧导航栏四个正方形图标)>点击New>点击Import>输入8918>点击Load
3.选择Prometheus>点击Import
4.选择Search dashboards(左侧导航栏放大镜图标)就能看到刚刚添加的Dashboards
4.安装Alertmanager
1.下载解压Alertmanager
安装包见Prometheus相关文件
2.配置Prometheus
1.在Prometheus根目录创建rules文件夹,并且新增nginx_rules.yml
groups:
- name: nginx
rules:
- alert: nginx_waiting
expr: nginx_server_connections{instance=~"119.28.102.000:9913", status=~"waiting"}>1
for: 10s
labels:
instance: '{{$labels.instance}}'
priority: "3"
type: 'nginx'
annotations:
description: '{{ $labels.instance }} nginx waiting连接过大,请前往查看,当前waiting数量:{{$value}}'
summary: '{{ $labels.instance }} nginx waiting连接过大,请前往查看,当前waiting数量:{{$value}}}'
- alert: nginx_up
expr: nginx_up{instance=~"119.28.102.000:9113"}==0
for: 10s
labels:
instance: '{{$labels.instance}}'
priority: "3"
type: 'nginx'
annotations:
description: '{{ $labels.instance }} nginx 已宕机,请前往查看,{{$value}}}'
summary: '{{ $labels.instance }} nginx 已宕机,请前往查看,{{$value}}}'
2.修改prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
- 119.28.102.000:9093
# 规则文件地址
rule_files:
- "rules/*.yml"
3.检查规则是否配置成功
重启Prometheus,访问http://119.28.102.000:9090/rules,查看是否存在数据
3.配置Alertmanager
1.修改alertmanager.yml
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1m
receiver: 'webhook' #定义接受告警组名
receivers:
- name: 'webhook'
webhook_configs:
- url: 'http://119.28.102.000:8082/index/prometheusWebHook' #需要自己实现接口和Cat一样
2.启动alertmanager
nohup 解压地址/alertmanager > 解压地址/log.log &
3.测试
这边配置的规则是监控nginx是否存活,杀死nginx即可