Prometheus+Grafana架构 监控(Prometheus详细文档)
- 一,组件介绍
- 二,针对不同业务组件的监控部署。
-
- 1,Prometheus + node_exporter 对CentOS7.4系统做主机监控。
-
-
- 1.)编写shell脚本,批量上传部署node_exporter客户端来采集数据。
- 2.)Server端部署Prometheus服务。
- 3,)服务端部署配置grafana,便于数据可视化展示。
-
- 1,安装grafana安装包
- 2,启动grafana服务,并查看服务启动是否成功。
- 3,登录grafana web界面,配置dashbord 可视化文件。
- 4,登录之后,会显示下面的页面,点击添加数据源。
- 5,选择Prometheus。
- 6,配置添加监控的服务器ip+端口号,根据之前配置的Prometheus客户端,此处填写为192.168.48.20:9090。之后点击下面的保存即可。
- 7,在 grafana 系统页面中,导入已经下载好了Linux主机监控模板。([grafana dashboard下载官方地址](https://grafana.com/grafana/dashboards/))
- 8,导入完成后就可以在界面上查看Linux主机的配置情况了。
- 到此。Prometheus的可视化监控即部署完成。下面,即部署配置Prometheus的可视化告警【备注:prometheus支持钉钉,微信,邮件等多种告警方式。但因业务实际的机器均在内网,且机器不能访问外网,也没有跨网接口。故此处只配置了Prometheus的可视化告警页面。】此方案用于内网服务的监控告警。
- 4.)Prometheus配置可视化告警界面。
-
- 2,Prometheus + postgres_exporter 对postgres做数据库监控。
- 3,Prometheus + kafka_exporter 对消息队列kafka做监控
- 4,Prometheus + pushgateway + shell 对目录内的文件数量做监控。
- 5,Prometheus + pushgateway + shell 对vsftpd服务的共享目录做监控。
一,组件介绍
1,Prometheus介绍:
Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。
Prometheus涉及的组件:
Prometheus Server: 时序库,用于收集和存储时间序列数据。
Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端,所有向promtheus server提供监控数据的程序都可以被称为exporter。
Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。
pushgateway: 各个目标主机可上报数据到pushgateway,然后prometheus server统一从pushgateway拉取数据。
2,grafana介绍:
Grafana 是一个开源的监控数据分析和可视化套件。最常用于对基础设施和应用数据分析的时间序列数据进行可视化分析,也可以用于其他需要数据可视化分析的领域。Grafana 可以帮助你查询、可视化、告警、分析你所在意的指标和数据。可以与整个团队共享,有助于培养团队的数据驱动文化。
二,针对不同业务组件的监控部署。
1,Prometheus + node_exporter 对CentOS7.4系统做主机监控。
1.)编写shell脚本,批量上传部署node_exporter客户端来采集数据。
#!/bin/bash
host=( '“java” “nginx” “database” “redis” “kafka”)
#设置主机名变量
for i in ${host[@]};
do
#引入for循环
echo $host
ssh -p 2222 root@$i “mkdir /data/”
#远程登陆机器并做创建目录操作,注意:此脚本使用hostname来做远程操作,实际使用中如使用,需在hosts文件中配置主机名和IP。
scp -P 2222 -r node_exporter-1.3.1.linux-amd64.tar root@$i:/data/
ssh -p 2222 root@$i “cd /data/ && tar -zxvf node_exporter-1.3.1.linux-amd64.tar”
ssh -p 2222 root@$i “cd /data/ && mv node_exporter-1.3.1.linux-amd64 node_exporter”
scp -P 2222 -r node_exporter.service root@$i:/etc/systemd/system/
ssh -p 2222 root@$i “systemctl daemon-reload”
ssh -p 2222 root@$i “systemctl enable node_export”
ssh -p 2222 root@$i “systemctl start node_export”
ssh -p 2222 root@$i “systemctl status node_export”
done
#此脚本执行前需要配置ssh免密码登录服务,否则执行此脚本登录机器需要输入密码。设置ssh免密码登录可参考此链接(shell批量更新操作)
node_exporter服务的service文件
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
ExecStart=/data/node_exporter/node_exporter
#StandardOutput=null
Restart=on-failure
[Install]
WantedBy=multi-user.target
客户端部署完后,可以在web端访问查看metrics页面。
http://ip:9100/metircs #9100 node_exporter服务的默认监听端口。
2.)Server端部署Prometheus服务。
1,上传Prometheus tar包,并解压。
mkdir /data
tar -zxvf prometheus-2.33.4.linux-amd64.tar.gz -C /data
cd /data
mv prometheus-2.33.4.linux-amd64/ prometheus
2,配置Prometheus的配置文件。
cd prometheus/
vi prometheus.yml
在scrape_configs配置项下添加Linux监控的job,其中 IP修改为上面部署 node_exporter机器的ip,端口号为9100,注意缩进。
【此处Prometheus配置文件对格式要求严格,建议直接复制粘贴配置文件中的参数,然后修改。如下图所示。】
- job_name: “node1”
static_configs:
- targets: ["192.168.48.20:9100"]
3,配置Prometheus的service文件,设置自启动管理。
vi /etc/systemd/system/prometheus.service
[Unit]
Description=“prometheus”
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
ExecStart=/data/prometheus/prometheus --config.file=/data/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus/data --web.enable-lifecycle --enable-feature=remote-write-receiver --query.lookback-delta=2m
Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=prometheus
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable prometheus
systemctl restart prometheus
查看Prometheus启动是否成功。并访问Prometheus的web操作界面。
systemctl status prometheus
http://ip:9090 #9090 Prometheus的默认监听端口。
访问地址的status下的targets。显示被监控节点是up状态,为正常(代表prometheus和node_exporter链接成功)。
3,)服务端部署配置grafana,便于数据可视化展示。
1,安装grafana安装包
(grafana安装包官网下载地址 g