一、普罗米修斯监控系统
1、为什么需要监控:
① 实时收集数据:监控工具能够实时收集关于系统、应用、网络等各方面的数据,包括性能指标、错误日志、用户行为等。
② 及时发现问题:通过实时数据收集和分析,监控系统能够在问题发生时迅速识别异常。
③ 及时处理:一旦监控系统发现问题,它可以触发报警机制,通知管理员或相关团队。
④ 为优化提供依据:监控数据不仅可以帮助发现问题,还可以为系统优化提供依据。
2、普罗米修斯概述:
Prometheus由go语言开发,是一套开源的监控&报警&时间序列数据库的组合,适合监控docker容器。
时间序列数据 (TimeSeries Data) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。
二、prometheus实验
1、实验架构:
修改IP、UUID、主机名、hosts文件、时间同步
2、安装prometheus:
(1) 解压:
Prometheus 官方提供了预编译的二进制版本,不需要进行编译,解压后就可以使用。
tar xf prometheus-2.5.0.linuxamd64.tar.gz -C /usr/local/
mv /usr/local/prometheus-2.5.0.linux-amd64/ /usr/local/prometheus
(2) 启动:
直接使用默认配置文件启动。
Prometheus的配置文件是一个YAML格式的文件,包含了Prometheus的各种配置信息,配置文件放置在/usr/local/prometheus/目录下。
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
#指定配置文件的路径,&表示后台运行,不占用终端界面
3、prometheus界面:
浏览器访问http://服务器IP:9090就可以访问到prometheus的主界面:
http://服务器IP:9090/metrics可以查看到监控的数据:
prometheus默认监控本机:
在web界面可以通过关键字查询监控项:
4、监控远程Linux主机:
(1) 在远程linux主机(被监控端agent)上安装node_exporter组件:
node_exporter可以采集服务器的各种资源使用情况,将这些信息提供给Prometheus服务器进行监控和分析。
tar xf node_exporter-0.16.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/node_exporter-0.16.0.linux-amd64/ /usr/local/node_exporter
(2) 启动node_exporter:
nohup /usr/local/node_exporter/node_exporter &
/usr/local/node_exporter/node_exporter 是node_exporter组件的完整路径;
nohub 命令的作用是即使关闭node_exporter所在的终端,它也会继续运行。
(3) 在prometheus服务器的添加被监控的机器:
在主配置文件添加被监控的机器:
vim /usr/local/prometheus/prometheus.yml
完成配置后重启服务:
pkill prometheus #结束当前普罗米修斯进程
ss -anptl | grep 9090 #确认端口没有进程占用
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
ss -anptl | grep 9090
在web界面查看是否有新增监控主机:
5、监控远程MySQL:
(1) 在被管理机agent上安装mysqld_exporter组件:
mysqld_exporter提供了一组用于采集MySQL性能指标的接口,通过将mysqld_exporter与Prometheus结合使用,可以监控MySQL数据库的性能。
tar xf mysqld_exporter-0.11.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/mysqld_exporter-0.11.0.linux-amd64/ /usr/local/mysqld_exporter
(2) 在agent上安装mariadb并授权:
安装:
yum install mariadb\* -y #安装mariadb客户端和服务器端
systemctl start mariadb
systemctl enable mariadb
创建授权用户:
创建一个名为mysql_monitor的用户,允许该用户从本地主机连接到MySQL服务器,同时设置了用户的密码为123。
mysql
grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identified by '123';
flush privileges;
quit;
(3) 创建mysql_exporter配置文件:
创建一个mysql_exporter配置文件,写上连接数据库的用户名与密码:
vim /usr/local/mysqld_exporter/.my.cnf
[client]
user=mysql_monitor
password=123
启动mysql_exporter:
nohup /usr/local/mysqld_exporter/mysqld_exporter --config.mycnf=/usr/local/mysqld_exporter/.my.cnf &
(4) 在prometheus服务器的添加被监控的数据库:
prometheus服务器 → mysql_exporter → mariadb
vim /usr/local/prometheus/prometheus.yml
配置完后重新启动prometheus服务。
(5) 在web界面查看mariadb监控项:
三、Grafana可视化图形工具
1、什么是Grafana:
Grafana是一个开源的度量分析和可视化工具,它允许用户查询、可视化、告警和探索来自多种数据源(如 Prometheus、InfluxDB、MySQL、Elasticsearch、OpenTSDB 等)的实时和历史数据,进行可视化的展示,并且能实现报警。
2、使用Grafana连接Prometheus:
(1) 在grafana服务器上安装grafana:
yum install -y grafana-5.3.4-1.x86_64.rpm
systemctl start grafana-server
systemctl enable grafana-server
(2) 浏览器访问http://grafana服务器IP:3000:
默认用户名和密码都是 admin
使用默认密码登录进去后需要修改密码:
3、Grafana关联Prometheus数据:
(1) Grafana添加Prometheus数据源:
把prometheus服务器收集的数据做为一个数据源添加到grafana,让grafana可以得到prometheus的数据。
设置普罗米修斯数据源,设置完毕后点击save:
(2) 查看添加的数据源:
点击此处即可查看到已添加的数据源。
(3) 为添加好的数据提供图形显示:
进入dashboard:
增加图形,选择需要呈现图形的数据 (Edit):
(4) 匹配特定监控项:
默认情况下该图像会收集普罗米修斯服务器所有的监控数据,也可以通过设置条件匹配特定的监控项
4、Grafana显示MySQL监控数据:
(1) 下载安装mysql监控的dashboard:
MySQL 监控 Dashboard 的 JSON 文件通常可以从 Grafana 的官方 Dashboard 库获取。这些 JSON 文件包含了 Dashboard 的布局、查询、面板配置等信息。
MySQL Overview | Grafana Labs
(2) 在grafana图形界面导入相关json文件:
在import界面导入下载的JSON文件,选择数据源为Metrics,还需要将之前所设置的数据源由prometheus_data改为Metrics。(3) 查看监控信息:
进入Dashboard,点击New dashboard,可看到导入的MySQL监控模版。
四、Grafana+onealert报警
1、onealert报警平台:
OneAlert报警平台是一个集告警接入、告警收敛、告警通知、告警处理、告警分析为一体的统一管理平台。
https://caweb.aiops.com
在集成的监控工具中可以选择grafana进行监控操作。
2、Grafana配置:
(1) 在Grafana中配置Webhook URL:
在Grafana中创建Notification channel (报警通道),选择类型为Webhook。
Webhook是一个接收HTTP POST(或GET, PUT, DELETE)的URL,当事件发生时,Webhook的API提供商会向这个配置好的URL发送一条信息。
URL格式:http://api.aiops.com/alert/api/event/grafana/v1/<AppKey>/
可以先点击Send Test查看邮箱是否收到告警信息,再点击Save。
(2) 将配置的Webhook Notification channel添加到Grafana alert中:
设置报警信息和报警通道,设置完毕后点击保存。
当Grafana满足了预警规则的条件时,就会触发预警。
Grafana会向配置的Webhook发送POST请求,这个POST请求包含了预警的详细信息,如触发条件、时间戳、相关数据等。
接收预警数据的应用程序(onealert)会根据需要解析数据、处理数据,并根据配置发送相应的通知,如电子邮件等。