prometheus最靠谱安装教程(node_exporter/mysqld_exporter/grafana)

prometheus安装

第一步:下载好prometheus安装包:

到这里参考自己所需版本:https://prometheus.io/download/

比如我自己在root下安装的版本是:prometheus-2.5.0.linux-amd64

第二步:解压到/usr/local

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" &


第五步:查看9090端口是否有运行:

ss -naltp |grep 9090

或者命令  isof  -i:9090

当看到有在运行,说明运行成功了。

可以在网页端查看界面:

 

node_exporter的安装:

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

在网页上查看:

 

下面让prometheus来抓取这个node_exporter的数据

第一步:关闭正在运行的prometheus

pkill prometheus

第二步:更改prometheus的配置文件:

vim /usr/local/prometheus/prometheus.yml

在最末尾添加:(注意:这里 即便是本地也要 填写ip,不要写成localhost)

- job_name: 'myjob' # 取一个job名称来代表被监控的机器
static_configs:
- targets: ['xx.xx.xx.xx:9100'] # 这里改成被监控机器的IP,后面端口接9100

启动prometheus:

/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
 

在网页查看此刻prometheus的监控对象:此刻多了一个你刚添加的node_exporter点

 

下面监控mysql

注意,mysql表中要有相应的datatime类型的字段。

下载mysqld_exporter

也是在官网找一个合适的版本下载: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

启动mysqld_exporter:

nohup    /usr/local/mysqld_exporter/mysqld_exporter --config.mycnf=/usr/local/mysqld_exporter/.my.cnf &
查看端口占用情况:

ss -naltp |grep 9104

在网页上查看运行情况:

 

下面在prometheus中添加这个mysqld_exporter服务

第一步:关闭正在运行的prometheus

pkill prometheus

第二步:更改prometheus的配置文件:

vim /usr/local/prometheus/prometheus.yml

在最末尾添加:(注意:这里 即便是本地也要 填写ip,不要写成localhost)

- job_name: 'mysqld_exporter' # 取一个job名称来代表被监控的mysql
static_configs:
- targets: ['xx.xx.xx.xx:9104'] # 这里改成被监控mysql所在的ip,后面端口接9104

启动prometheus:

/usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
 

在网页查看此刻prometheus的监控对象:此刻多了一个你刚添加的mysqld_exporter

 

Grafana的安装

什么是Grafana?

Grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分
析,查询,然后进行可视化的展示,并能实现报警。

官方网址:https://grafana.com/

官方文档:http://docs.grafana.org/

Grafana的安装流程

先从官网下载好自己的版本。我这里下载的是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

登录后需要你更改密码,这样更安全。

 

接下来把prometheus作为数据源,添加放在grafana中进行展示

点击添加数据源:

 

 

 最后就在dashboard中可以看到

还可以对匹配条件进行配置:

Graph里面的选项说明:

General(常规选择)、Metrics(指标)、Axes(坐标轴)、Legend(图例)、 Display(显示样式)、Alert(告警)、Time range(时间范围) 

 

更详细的参数含义:https://blog.csdn.net/qq_23598037/article/details/99850396

 

接下来把mysqld_exporter的数据放到gfarana中展示

注意,这里的逻辑是,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
 

在grafana图形界面导入相关json文件

当然,如果你是在window电脑上登录grafana的web界面,那么此刻直接上传你本地dashboards中的json文件

 

注意: 

点import导入后,报prometheus数据源找不到,因为这些json文件里默认
要找的就是叫Prometheus的数据源,但我们前面建立的数据源却是叫
prometheus_data(坑啊)
那么请自行把原来的prometheus_data源改名为Prometheus即可(注意:
第一个字母P是大写)
然后再回去刷新,就有数据了(如下图所示)

过一段时间就有数据:

搭建grafana+onealert报警 

prometheus报警需要使用alertmanager这个组件,而且报警规则需要手
动编写(对运维来说不友好)。所以我这里选用grafana+onealert报警。
注意: 实现报警前把所有机器时间同步再检查一遍(除非你是同一台服务器监控自己服务器)

现在onealert平台(现在叫睿智云)注册账号:http://www.onealert.com/

注册后添加grafana运用:

自己设置好名称后保存:

你将得到appkey:

在这个网页下方会给出配置grafana的具体步骤:

上面这个图中,可以先Send Test,再点击Save。之后就可以在onealert后台收到了这条测试的信息。

注意:这里需要在onealert平台上添加通知策略,比如说,你想用短信、邮件的方式收到告警?设置方法如下:

 

现在可以去设置一个报警来测试了(这里以我们前面加的cpu负载监控来
做测试)
 

 

 保存后就可以测试了
如果agent1上的cpu负载还没有到0.5,你可以试试0.1,或者运行一些程序
把agent1负载调大。最终能测试报警成功

报警不成功的原因:

各服务器之间时间不同步,这样时序数据会出问题,也会造成报警出问

必须写通知内容,留空内容是不会发报警的
修改完报警配置后,记得要点右上角的保存
保存配置后,需要由OK状态变为alerting状态才会报警(也就是说,你
配置保存后,就已经是alerting状态是不会报警的)
grafana与onealert通信有问题
 

关于mysql监控的几个关键指标

如果你不清楚哪些才是应该监控的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/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值