13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

【创新互联】Grafana介绍与实战操作

一、概述

grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。

创新互联主营大洼网站建设的网络公司,主营网站建设方案,成都app软件开发,大洼h5成都微信小程序搭建,大洼网站营销推广欢迎大洼等地区企业咨询

一般是Prometheus与Grafana配套使用,有些公司直接使用Grafana告警,而弃用alertmanager。相关参考文档如下:

二、Grafana 安装

1)下载安装

下载地址:https://grafana.com/grafana/download?platform=linux

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.3.2-1.x86_64.rpm
sudo yum install grafana-enterprise-9.3.2-1.x86_64.rpm -y

2)安装包信息

3)启动服务

sudo systemctl daemon-reload
sudo systemctl start grafana-server
# Grafana 开机自启动
sudo systemctl enable grafana-server
sudo systemctl status grafana-server
# 默认端口 3000
netstat -nlpt|grep 3000

4)Grafana 访问

默认端口是3000​,访问地址:http://IP:3000​默认账号/密码:admin/admin

三、Grafana 功能介绍

四、使用mysql存储

1)安装mysql

mysql安装可以参考我下面这篇文章,这里就不再重复讲解了:MySQL高可用实战( MHA)

2)修改grafana配置

1、创建grafana用户和grafana库

# 登录客户端
mysql -uroot -p
密码:123456

# 创建数据库
CREATE DATABASE IF NOT EXISTS grafana default charset utf8 COLLATE utf8_general_ci;

# 创建用户并授权
grant all on grafana.* to 'grafana'@'192.168.182.%' identified by '123456';

2、修改grafana配置

配置文件: /etc/grafana/grafana.ini

[database]
type = mysql
host = 192.168.182.110:3306
name = grafana
user = grafana
password = 123456
# 也可以直接配置url
# url = mysql://grafana:grafana@192.168.182.110:3306/grafana

重启grafana

systemctl restart grafana-server

五、配置数据源(Data sources)

1)配置prometheus 数据源

前面我们已经部署了prometheus了,所以可以把prometheus数据源加进来。

2)配置mysql 数据源

六、配置监控面板(Dashboard)

地址:https://grafana.com/grafana/dashboards/

1)node_exporter 监控面板

1、安装node_exporter

下载地址:https://github.com/prometheus/node_exporter/releases/

【1】下载

wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
tar -xzf node_exporter-1.5.0.linux-amd64.tar.gz

【2】配置node_exporter.service启动

# 默认端口9100
cat >/usr/lib/systemd/system/node_exporter.service<[Unit]
Descriptinotallow=node_exporter
After=network.target
#可以创建相应的用户和组 启动
#User=prometheus
#Group=prometheus

[Service]
ExecStart=/opt/prometheus/exporter/node_exporter/node_exporter-1.5.0.linux-amd64/node_exporter --web.listen-address=:9100
[Install]
WantedBy=multi-user.target
EOF

【3】启动服务

systemctl daemon-reload
systemctl start node_exporter
systemctl status node_exporter
systemctl enable node_exporter

【4】检查

curl http://localhost:9100/metrics

2、配置Prometheus加载node_exporter

添加或修改配置 prometheus.yml

重新加载

systemctl restart prometheus
# 1、 kill方式
#kill -HUP pid
# 2、curl方式(推荐)
#curl -X POST http://IP/-/reload
# 【注意】需要在启动的命令行增加参数:--web.enable-lifecycle
curl -X POST http://192.168.182.110:9090/-/reload
# 3、重启(不推荐,重启会导致所有的连接短暂性中断)
# systemctl restart prometheus

3、配置监控面板

地址:https://grafana.com/grafana/dashboards/?search=node_exporter

加载有两种方式:离线(json文件)和在线(通过ID远程下载json)

导入之后就可以看到数据了。

2)mysql_exporter 监控面板

下载地址:https://github.com/prometheus/mysqld_exporter

1、安装node_exporter

【1】下载

# 注意MySQL对应的版本
export VER=0.12.0
wget https://github.com/prometheus/mysqld_exporter/releases/download/v${VER}/mysqld_exporter-${VER}.linux-amd64.tar.gz
tar xvf mysqld_exporter-${VER}.linux-amd64.tar.gz
mv mysqld_exporter-${VER}.linux-amd64/mysqld_exporter /usr/local/bin/
chmod +x /usr/local/bin/mysqld_exporter

【2】配置数据库凭证创建数据库凭证文件,为用户创建添加正确的用户名和密码并设置所有权限:

cat > /root/.my.cnf <[client]
host=192.168.182.110
port=3306
user=mha
password=123456
EOF

【3】配置mysql_exporter.service启动

# 默认端口:9104
cat > /etc/systemd/system/mysqld_exporter.service <[Unit]
Descriptinotallow=Prometheus MySQL Exporter
After=network.target
#User=prometheus
#Group=prometheus

[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/mysqld_exporter \
--config.my-cnf /root/.my.cnf \
--collect.global_status \
--collect.info_schema.innodb_metrics \
--collect.auto_increment.columns \
--collect.info_schema.processlist \
--collect.binlog_size \
--collect.info_schema.tablestats \
--collect.global_variables \
--collect.info_schema.query_response_time \
--collect.info_schema.userstats \
--collect.info_schema.tables \
--collect.perf_schema.tablelocks \
--collect.perf_schema.file_events \
--collect.perf_schema.eventswaits \
--collect.perf_schema.indexiowaits \
--collect.perf_schema.tableiowaits \
--collect.slave_status \
--web.listen-address=0.0.0.0:9104

[Install]
WantedBy=multi-user.target
EOF

【4】启动服务

systemctl daemon-reload
systemctl start mysqld_exporter
systemctl status mysqld_exporter
systemctl enable mysqld_exporter
# 启动并开机自启,等价于上面两行
# systemctl enable --now mysqld_exporter

【5】检查

curl http://localhost:9104/metrics

2、配置Prometheus加载mysql_exporter

添加或修改配置 prometheus.yml

重新加载

systemctl restart prometheus
# 1、 kill方式
#kill -HUP pid
# 2、curl方式(推荐)
#curl -X POST http://IP/-/reload
# 【注意】需要在启动的命令行增加参数:--web.enable-lifecycle
curl -X POST http://192.168.182.110:9090/-/reload
# 3、重启(不推荐,重启会导致所有的连接短暂性中断)
# systemctl restart prometheus

3、配置监控面板

地址:https://grafana.com/grafana/dashboards/7362-mysql-overview/

3)Grafana Query语法

4)自定义监控面板

上面两个是网上提供的面板,其实在生产环境中,很多时候是需要自定义监控项的。

1、Prometheus数据源

【1】新建一个空面板

【2】编写PromQL表达式

选择Prometheus数据源并且选择Query​ 就可以直接写 PromQL。先在Prometheus上调试promql,在粘贴过来就行了。

# 内存使用率
100 - ((node_memory_MemAvailable_bytes{instance="192.168.182.110:9100",job="prometheus"} * 100) / node_memory_MemTotal_bytes{instance="192.168.182.110:9100",job="prometheus"})

上面只显示一个机器的内存,显然还不完善,如果想显示多个,可以这样表达:

# 把instance="192.168.182.110:9100"去掉
100 - ((node_memory_MemAvailable_bytes{job="prometheus"} * 100) / node_memory_MemTotal_bytes{job="prometheus"})

# 或者复制几份
100 - ((node_memory_MemAvailable_bytes{instance="192.168.182.110:9100",job="prometheus"} * 100) / node_memory_MemTotal_bytes{instance="192.168.182.110:9100",job="prometheus"})
100 - ((node_memory_MemAvailable_bytes{instance="192.168.182.111:9100",job="prometheus"} * 100) / node_memory_MemTotal_bytes{instance="192.168.182.111:9100",job="prometheus"})
100 - ((node_memory_MemAvailable_bytes{instance="192.168.182.112:9100",job="prometheus"} * 100) / node_memory_MemTotal_bytes{instance="192.168.182.112:9100",job="prometheus"})
【3】变量使用

显然上面的方式不太好,这里使用变量的方式动态获取实例个数。先来了解Grafana的几个函数:

函数

作用

label_values(label)

返回Promthues所有监控指标中,标签名为label的所有可选值。

label_values(metric, label)

返回Promthues所有监控指标metric中,标签名为label的所有可选值。

metrics(metric)

返回所有指标名称满足metric定义正则表达式的指标名称

query_result(query)

返回prometheus查询语句的查询结果

参数解释:1、instance

2、General

3、Query options

4、Selection Options

【温馨提示】虽然选择组合值可以在一个panel里面查看多种监控数据,但是由于不同监控数据的数值大小格式都可能不一样,在一个图形里面格式很难兼容,这样就会出现问题,所以此处建议默认都不选。

修改表达如下:

100 - ((node_memory_MemAvailable_bytes{instance="$instance",job="prometheus"} * 100) / node_memory_MemTotal_bytes{instance="$instance",job="prometheus"})

2、MySQL数据源

可以直接写sql,直接以表格的形式展现,非常的方便的,像在大数据领域sql是使用最频繁的,所以使用这种直接sql的方式显示图表监控情况还是非常方便的。


网站栏目:【创新互联】Grafana介绍与实战操作
文章路径:http://cdbrznjsb.com/article/ccejeip.html

其他资讯

让你的专属顾问为你服务