部署时间 2020.12.14
| ip | 部署服务 | 系统版本 |
|---|---|---|
| 10.0.4.198 | promethes,node_exporter,grafana,mysql | centos7 |
| 10.0.3.103 | node_exporter,postgres_exporter | centos6 |
| 10.0.3.106 | node_exporter,postgres_exporter | centos6 |
| 10.0.3.109 | node_exporter,postgres_exporter | centos6 |
| 10.0.3.111 | node_exporter,postgres_exporter | centos6 |
1.安装数据库(首先要安装数据库,存储grafana的数据)
yum install -y mysql-server(这里我安装的mysql是8版本的)
systemctl start mysqld
mysql8以上密码修改(该链接为修改mysql8密码的正确方式,十分详细,可以参考下,我下面所写的也是参考该链接做的)

查看mysql初始密码
mysql -uroot -p密码为初始化的密码
update user set Host='%' where User='root';
select host, user, authentication_string, plugin from mysql.user;(查询用户,密码以及密码认证方式,我这里是已经修改后的)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; (密码必须为大小写字母数字加特殊字符,不允许简单密码)
注:
mysql> update user set password=password(“新密码”) where user=”用户名”;
执行后报错 ERROR 1054(42S22) Unknown column ‘password’ in ‘field list’
错误的原因是 5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string
正确的为:
update mysql.user set authentication_string=password('*******') where user='*******';

flush privileges;
update mysql.user set plugin='mysql_native_password' where user='root';(更新密码认证方式)
创建grafana的数据库,grafana启动后会自动创建相应的表。
CREATE DATABASE grafana DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
2.安装grafana(我这里安装的是grafana6.0.1版本,大家最好选择7以上的版本,我安装完成后发现6有很多图形功能都不支持)
wget https://dl.grafana.com/oss/release/grafana-6.0.1.linux-amd64.tar.gz
tar zxf grafana-6.0.1.linux-amd64.tar.gz -C /data
mv /data/grafana-6.0.1/ /data/grafana
cp /data/grafana/conf/defaults.ini /data/grafana/conf/defaults.ini.bak 备份配置文件
vim /data/grafana/conf/defaults.ini

以上为grafana各路径位置

以上为grafana数据库配置
mkdir -p /data/grafana/data/log创建数据目录
/data/grafana/bin/grafana-server -homepath='/data/grafana/' & 启动grafana

查看服务是否启动,grafana默认端口为3000

前端页面登录grafana,浏览器输入10.0.4.198:3000即可(默认帐号/密码:admin/admin)
使用默认密码登录后会要求你更改密码。
2.安装promethes
wget https://github.com/prometheus/prometheus/releases/download/v2.8.0/prometheus-2.8.0.linux-amd64.tar.gz ##获取安装包
tar -zxf prometheus-2.8.0.linux-amd64.tar.gz -C /data/
mv /data/prometheus-2.8.0.linux-amd64 /data/prometheus-2.6.0
/data/prometheus-2.6.0/prometheus --web.enable-lifecycle --web.enable-admin-api &

promethes的默认端口为9090

前端页面登录查看,浏览器输入10.0.4.198:9090查看prometheus是否成功,出现上图所示界面说明成功
3.给所有机器安装node_exporter(以10.0.4.198为例,监控的机器都安装,可以采集机器的基础数据)
node_exporter简介
Exporter是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取。
node-exporter用于采集服务器层面的运行指标,包括机器的loadavg、filesystem、meminfo等基础监控,类似于传统主机监控维度的zabbix-agent。
node-export由prometheus官方提供、维护,不会捆绑安装,但基本上是必备的exporter。
安装:
wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
tar zxf node_exporter-0.17.0.linux-amd64.tar.gz -C /data
mv /data/node_exporter-0.17.0.linux-amd64/ /data/node_exporter
/data/node_exporter/node_exporter & 启动node_exporter

查看node_exporter是否启动,默认端口为9100

浏览器输入10.0.4.198:9100界面上图所示
点击metrics即可查看采集到的机器数据

采集的数据如上图所示,如果看到上图所示界面,说明配置成功
4.postgres服务上的机器安装postgres_exporter(以10.0.3.103为例)
wget https://github.com/wrouesnel/postgres_exporter/archive/v0.8.0.tar.gz
tar zxf postgres_exporter_v0.8.0_linux-amd64.tar.gz -C /data/
mv /data/postgres_exporter_v0.8.0_linux-amd64/ /data/postgres_exporter
cd /data/postgres_exporter/
vim start.sh
#!/bin/bash
cd /data/postgres_exporter
export PATH=/data/postgresql/bin/:$PATH
# 下面的password替换为你自己的postgres用户的密码
export DATA_SOURCE_NAME="user=username host=localhost password=passwd port=5432 dbname=pgscdb sslmode=disable"
nohup ./postgres_exporter --web.listen-address=":9187" >/dev/null 2>&1 &
sh start.sh


查看postgres_exporter是否启动,默认端口为9187

浏览器输入10.0.3.103:9187查看如上图所示

点击metrics即可查看到postgres_export采集的数据,出现这样的界面表示成功
5.在10.0.3.103,10.0.3.106,10.03.109,10.0.3.111,10.0.4.198上部署node_export采集机器的基础性能信息,在10.0.3.103,10.0.3.106,10.0.3.109,10.0.3.111上部署postgres_export采集postgres的信息。
6.修改promethes的配置文件并重启
cd /data/prometheus-2.6.0/
cp prometheus.yml prometheus.yml.bak
vim prometheus.yml
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
scrape_configs:
- job_name: 'promethus'
static_configs:
- targets: ['10.0.4.198:9090']
- job_name: 'system'
static_configs:
- targets: ['10.0.4.198:9100']
- targets: ['10.0.3.103:9100']
- targets: ['10.0.3.106:9100']
- targets: ['10.0.3.109:9100']
- targets: ['10.0.3.111:9100']
- job_name: 'postgres'
static_configs:
- targets: ['10.0.3.103:9187']
- targets: ['10.0.3.106:9187']
- targets: ['10.0.3.109:9187']

ps -ef | grep prometheus
kill 18211
./prometheus --web.enable-lifecycle --web.enable-admin-api &

前端页面查看
登录10.0.4.198:9090/targets查看各节点状态
也可以通过下图status中的targets页面查看

7.grafana绘制图形
添加数据源

点击齿轮==》Data Source进入以下界面

点击Add data source选择数据源

选择Prometheus

设置如上图所示,然后点击左下角Save & Test保存即可
若在Data Source能看到下图界面则表示添加成功。

1)绘制基础性能图形
登录grafana查看
PostgreSQL Database与Node Exporter FULL是我已经生成的两个界面
这里我们鼠标放在“+”上选择单击imprt进入以下界面

我们可以直接从grafana官网提供的模板配置相应的可视化界面
官网模板链接:https://grafana.com/grafana/dashboards
首先导入基础性能相对应的模板

Data Source(数据源)
我们选择promethes,我们的数据源是promethes
Collector(收集)
我么是通过nodeexporter收集数据的
Sort By(排序)
我喜欢按下载量排序
选择自己喜欢的一个模板

如上图所示,11074为该模板的id我们直接导入改id即可(该模板是我测试新建的模板,我的成品图使用的模板id为1860)

输入id号后点击load即可

load后会出现上图的界面,输入name,选择数据源后点击左下import导入即可.(到这里基础性能的绘制就已经完成了,你可以选择其它的模板绘制图形界面)
如果你用的grafana和我的版本相同会出现以下错误

这个时候就得提到另外一个坑了,如下所示:

我们使用的grafana版本还是6.0的,所以json文件中需要把table-old替换为table。

点击右上角齿轮修改json文件中内容

选择JSON Model,将其中的tables-old全部替换为table(有两处),修改完后点击save然后再次查看。

这时基本就可以显示了,但还是有问题,等我完成poetgres的图形绘制后再来描述问题。
2)绘制postgres的图形
导入模板

选择合适的模板进行导入(算则postgres相关的模板,可不要选成其他数据库的)
这里我选择9628模板,修改名称和数据来源后导入模板即可。

这里的start time,max wal size,seq page cost都是没有数据的;
点击Edit修改相应数据

max wal size

初始设置如上图所示
我在promethes查询到的数据没有pg_settings_max_wal_size_bytes该数据,有的数据是pg_settings_max_wal_senders

将其修改为

seq page cost修改参照同一行其它数据;
start time修改如下所示:

pg_postmaster_start_time_seconds不存在
修改如下图所示:

###填坑
关于监控的内存使用率异常的说明
如果你监控的机器版本不相同,需要在这里注意的是centos6和centos7收集的参数是不一样的,可以看下是否是因为参数原因导致的。
centos6中可用内存表示为

即node_memory_MemFree_bytes
centos7中可用内存表示为
node_memory_MemAvailable_bytes
centos7中也可以使用node_memory_MemFree_bytes表示可用内存

成品图:
node(node的模板为1860)


POSTGRES


本文详述了2020年12月部署的监控系统,涉及数据库MySQL和PostgreSQL的 exporter,以及node_exporter和postgres_exporter的安装与Prometheus配置,展示了从数据源收集到Grafana可视化的过程。
250

被折叠的 条评论
为什么被折叠?



