到这里参考自己所需版本:https://prometheus.io/download/
比如我自己在root下安装的版本是:prometheus-2.5.0.linux-amd64
tar xf prometheus-2.5.0.linux-amd64 -C /usr/local/
mv /usr/local/prometheus-2.5.0.linux-amd64/ /usr/local/prometheus
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
ss -naltp |grep 9090
或者命令 isof -i:9090
当看到有在运行,说明运行成功了。
node_exporter用来监控任何一个想被监控的服务器系统数据。想要监控哪个服务器,就把node_exporter安装在那台服务器。
也是在官网找一个合适的版本下载:https://prometheus.io/download/
我这里下载的是node_exporter-0.16.0.linuxamd64.tar.gz
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
nohup /usr/local/node_exporter/node_exporter &
ss -naltp|grep 9100
pkill prometheus
vim /usr/local/prometheus/prometheus.yml
- job_name: 'myjob' # 取一个job名称来代表被监控的机器
static_configs:
- targets: ['xx.xx.xx.xx:9100'] # 这里改成被监控机器的IP,后面端口接9100
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
注意,mysql表中要有相应的datatime类型的字段。
也是在官网找一个合适的版本下载:https://prometheus.io/download/
tar xf mysqld_exporter-0.11.0.linuxamd64.tar.gz -C /usr/local/
mv /usr/local/mysqld_exporter-0.11.0.linuxamd64.tar.gz /usr/local/mysqld_exporter
vim /usr/local/mysqld_exporter/.my.cnf
(注意:这里写自己的mysql的用户名和密码)
[client]
user=root
password=123
nohup /usr/local/mysqld_exporter/mysqld_exporter --config.mycnf=/usr/local/mysqld_exporter/.my.cnf &
查看端口占用情况:
ss -naltp |grep 9104
pkill prometheus
vim /usr/local/prometheus/prometheus.yml
- job_name: 'mysqld_exporter' # 取一个job名称来代表被监控的mysql
static_configs:
- targets: ['xx.xx.xx.xx:9104'] # 这里改成被监控mysql所在的ip,后面端口接9104
/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
Grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分
析,查询,然后进行可视化的展示,并能实现报警。
官方网址:https://grafana.com/
官方文档:http://docs.grafana.org/
先从官网下载好自己的版本。我这里下载的是grafana-5.3.4-1.x86_64.rpm
第一步:安装:
rpm -ivh /root/Desktop/grafana-5.3.4-1.x86_64.rpm
第二步:启动
systemctl start grafana-server
第三步:设置开机启动
systemctl enable grafana-server
第四步:查看端口占用情况
ss -naltp |grep 3000
第五步:从网页查看:
http:// grafana服务器IP:3000
第一次会有个登录的界面,账号:admin 密码:admin
登录后需要你更改密码,这样更安全。
点击添加数据源:
还可以对匹配条件进行配置:
General(常规选择)、Metrics(指标)、Axes(坐标轴)、Legend(图例)、 Display(显示样式)、Alert(告警)、Time range(时间范围)
更详细的参数含义:https://blog.csdn.net/qq_23598037/article/details/99850396
注意,这里的逻辑是,mysql的数据接入到prometheus,然后再用grafana展示prometheus中的mysql数据。这和“用grafana直接展示mysql的数据”不一样。
在grafana上修改配置文件,并下载安装mysql监控的dashboard(包含
相关json文件,这些json文件可以看作是开发人员开发的一个监控模板)
参考网址: https://github.com/percona/grafana-dashboards
修改grafana的配置文件:
vim /etc/grafana/grafana.ini
在文件末尾添加:
[dashboards.json]
enabled = true
path = /var/lib/grafana/dashboards
假设你现在用的是window电脑,把https://github.com/percona/grafana-dashboards上的项目先下载到自己的电脑中,我们需要使用的只不过是项目中dashboards文件夹下面的json文件(因为git直接下载可能会很慢,下载本地后再上传到服务器更快)。
再把这些json文件放到linux服务器的/var/lib/grafana/dashboards目录下面
经过以上一番‘小周折’后,重启grafana
systemctl restart grafana-server
当然,如果你是在window电脑上登录grafana的web界面,那么此刻直接上传你本地dashboards中的json文件
注意:
点import导入后,报prometheus数据源找不到,因为这些json文件里默认
要找的就是叫Prometheus的数据源,但我们前面建立的数据源却是叫
prometheus_data(坑啊)
那么请自行把原来的prometheus_data源改名为Prometheus即可(注意:
第一个字母P是大写)
然后再回去刷新,就有数据了(如下图所示)
过一段时间就有数据:
prometheus报警需要使用alertmanager这个组件,而且报警规则需要手
动编写(对运维来说不友好)。所以我这里选用grafana+onealert报警。
注意: 实现报警前把所有机器时间同步再检查一遍(除非你是同一台服务器监控自己服务器)
现在onealert平台(现在叫睿智云)注册账号:http://www.onealert.com/
注册后添加grafana运用:
自己设置好名称后保存:
你将得到appkey:
在这个网页下方会给出配置grafana的具体步骤:
上面这个图中,可以先Send Test,再点击Save。之后就可以在onealert后台收到了这条测试的信息。
保存后就可以测试了
如果agent1上的cpu负载还没有到0.5,你可以试试0.1,或者运行一些程序
把agent1负载调大。最终能测试报警成功
各服务器之间时间不同步,这样时序数据会出问题,也会造成报警出问
题
必须写通知内容,留空内容是不会发报警的
修改完报警配置后,记得要点右上角的保存
保存配置后,需要由OK状态变为alerting状态才会报警(也就是说,你
配置保存后,就已经是alerting状态是不会报警的)
grafana与onealert通信有问题
如果你不清楚哪些才是应该监控的mysql指标,下面这4个可以优先参考:
查询吞吐量(MySQL questions)
查询执行性能
连接情况(MySQL connectios)
缓冲池使用情况
查询吞吐量(已执行语句(由客户端发出)计数)
MySQL 有一个名为 Questions
的内部计数器(根据 MySQL 用语,这是一个服务器状态变量),客户端每发送一个查询语句,其值就会加一。由 Questions
指标带来的以客户端为中心的视角常常比相关的Queries
计数器更容易解释。作为存储程序的一部分,后者也会计算已执行语句的数量,以及诸如PREPARE
和 DEALLOCATE PREPARE
指令运行的次数,作为服务器端预处理语句的一部分。
当前的查询速率通常会有起伏,因此,如果基于固定的临界值,查询速率常常不是一个可操作的指标。但是,对于查询数量的突变设置告警非常重要——尤其是查询量的骤降,可能暗示着某个严重的问题。
查询执行性能(也就是查询运行时间、每种模式下的平均运行时间)
MySQL 用户监控查询延迟的方式有很多,既可以通过 MySQL 内置的指标,也可以通过查询性能模式。从 MySQL 5.6.6 版本开始默认启用,MySQL 的 performance_schema
数据库中的表格存储着服务器事件与查询执行的低水平统计数据。
连接情况(MySQL connectios)
监控客户端连接情况相当重要,因为一旦可用连接耗尽,新的客户端连接就会遭到拒绝。MySQL 默认的连接数限制为 151,可通过下面的查询加以验证:
SHOW VARIABLES LIKE 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
MySQL 的文档指出,健壮的服务器应该能够处理成百上千的连接数。
“常规情况下,Linux 或 Solaris 应该能够支持 500 到 1000 个同时连接。如果可用的 RAM 较大,且每个连接的工作量较低或目标响应时间较为宽松,则最多可处理 10000 个连接。而 Windows 能处理的连接数一般不超过 2048 个,这是由于该平台上使用的 Posix 兼容层。”
连接数限制可以在系统运行时进行调整:
SET GLOBAL max_connections = 200;
然而,此设置会在服务器重启时恢复为默认值。想要永久地改变连接数限制,可以在 my.cnf
配置文件中添加如下配置(查看本文了解如何定位配置文件):
max_connections = 200
缓冲池使用情况
关键的 InnoDB 缓冲池指标
MySQL 提供了许多关于缓冲池及其利用率的指标。其中一些有用的指标能够追踪缓冲池的总大小,缓冲池的使用量,以及其处理读取操作的效率。
指标 Innodb_buffer_pool_read_requests
及 Innodb_buffer_pool_reads
对于理解缓冲池利用率都非常关键。Innodb_buffer_pool_read_requests
追踪合理读取请求的数量,而Innodb_buffer_pool_reads
追踪缓冲池无法满足,因而只能从磁盘读取的请求数量。我们知道,从内存读取的速度比从磁盘读取通常要快好几个数量级,因此,如果 Innodb_buffer_pool_reads
的值开始增加,意味着数据库性能大有问题。
部分参考:http://www.itcast.cn/