部署时间 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