一、背景
近期进行适配,因用户统一监控平台使用的是promethesu+grafana+altermannger这一套,因此对达梦数据库进行适配对接。
目前主要有两种方式:
1. 部署Dem管理系统对外提供接口推送到prometheus进行采集数据,采集项可查看《Dem手册》9.1.4 管理 prometheus 监控数据的接口
2. 根据需求手写采集的指标项并推送到prometheus进行采集数据,grafama效果如图所示:
接下来一系列文章会从各个组件的搭建、如何自定义采集项exporter组件(源码)、手动/自动推送数据、邮件告警、短信告警、自动化部署脚本、注意事项等分为多篇文章。
二、相关组件概念
1. prometheus介绍
Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库(TSDB)的组合。它受启发于 Google 的 内部的监控系统,由工作在 SoundCloud 的前 google 员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。
2016 年,doker容器化部署兴起,Prometheus 正式加入 Cloud Native Computing Foundation(CNCF)基金会的项目,成为受欢迎度仅次于 Kubernetes 的项目。2017 年底发布了基于全新存储层的 2.0 版本,能更好地与容器平台、云平台配合。因为kubernetes(俗称k8s)的流行带动了prometheus的发展。
官网:https://prometheus.io/docs/introduction/overview/
Prometheus的基本原理是通过HTTP周期性抓取被监控组件的状态(接口),任意组件只要提供对应的HTTP接口并且符合Prometheus定义的数据格式,就可以接入Prometheus监控。
Prometheus Server负责定时在目标(被监控组件)上抓取Metrics(指标)数据并保存到本地存储里面。Prometheus主要采用了Pull(拉)的方式获取数据,不仅降低客户端的复杂度,客户端只需要采集数据,无需了解服务端情况,而且服务端可以更加方便的水平扩展。
2. prometheus与zabbix的对比
prometheus:Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库,并且系统每隔一两周就会有一个小版本的更新,而Prometheus与它的“师兄”Kubernetes都自带云原生的光环,天然能够友好协作。
zabbix:Zabbix是由Alexei Vladishev开源的分布式监控系统,是一个企业级的分布式开源监控方案。能够监控各种网络参数以及服务器健康性和完整性的软件。
3. prometheus丨TSDB时序数据库
时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。
时间序列数据(TimeSeries Data) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。应用的场景很多, 如:
- 无人驾驶车辆运行中要记录的经度,纬度,速度,方向,旁边物体的距离等等。每时每刻都要将数据记录下来做分析。
- 某一个地区的各车辆的行驶轨迹数据
- 传统证券行业实时交易数据
- 实时运维监控数据等
4. Grafana介绍
grafana 是一款采用 Go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。
下载地址:https://grafana.com/grafana/download。
三、prometheus的安装
1. prometheus下载
下载地址:https://prometheus.io/download/,版本也可使用文章末尾的资料包
根据环境下载对应的版本,x86环境的话用这个prometheus-2.40.5.linux-amd64.tar.gz
2. prometheus安装
## 1. 更新同步操作系统时间,避免时间误差
[root@VM-24-17-centos opt]# ntpdate edu.ntp.org.cn && hwclock -w
## 2. 新建目录
[root@VM-24-17-centos opt]# mkdir /opt/jiankong/jiankongSoft -p
[root@VM-24-17-centos opt]# cd /opt/jiankong/jiankongSoft
## 3. 上传压缩包 并解压
[root@server ~]# tar -zxvf prometheus-2.35.0.linux-amd64.tar.gz -C /opt/jiankong
## 4. 重命名prometheus文件名
[root@localhost jiankongSoft]# cd /opt/jiankong
[root@localhost jiankong]# mv prometheus-2.40.5.linux-amd64 prometheus-2.40.5
3. prometheus启动
## 5. 前台启动服务进行测试
[root@VM-24-17-centos opt]# cd /opt/jiankong/prometheus-2.40.5
[root@VM-24-17-centos prometheus-2.35.0]# ./prometheus --config.file="prometheus.yml"
## 5.1(备用)如需更换启动端口添加web.listen-address参数
[root@localhost prometheus-2.40.5]# ./prometheus --config.file="prometheus.yml" --web.listen-address="0.0.0.0:9091"
#服务启动默认占用9090端口(文章的话就是用9091端口)
[root@server ~]# lsof -i:9090
## 6.前台测试没有问题后,使用后台启动方式
[root@localhost prometheus-2.40.5]# nohup ./prometheus --config.file="prometheus.yml" --web.listen-address="0.0.0.0:9091" > ./prometheus.log 2>&1 &
[1] 30524
## 7.记得查询进程是否存在
[root@localhost prometheus-2.40.5]# ps -ef|grep prometheus
root 30524 29851 0 12:51 pts/1 00:00:00 ./prometheus --config.file=prometheus.yml --web.listen-address=0.0.0.0:9091
root 30534 29851 0 12:51 pts/1 00:00:00 grep prometheus
## 8. 需要停到服务时,kill掉即可
常见错误 err=“listen tcp 0.0.0.0:9090: bind: address already in use”
这是因为端口被占用,杀掉占用端口的服务或者添加web.listen-address参数调整端口
[root@localhost prometheus-2.40.5]# ./prometheus --config.file="prometheus.yml" --web.listen-address="0.0.0.0:9091"
4. prometheus使用
通过浏览器访问http://服务器IP:9091就可以访问到prometheus的主界面(默认时9090,此处是9091端口)
http://192.168.145.161:9091/
项目启动后会默认监控了本机,点Status --》点Targets --》可以看到只监控了本机
采集的信息可以通过http://服务器IP:9091/metrics可以查看到监控的数据 (prometheus本身也会采集本机的信息)
http://192.168.145.161:9091/metrics
在web主界面可以通过关键字查询监控项
5. prometheus注册服务(可选)
## 1.编辑服务自启动文件
[root@master1 ~]#vim /lib/systemd/system/prometheus.service
## 提示 这里用的是9091端口
[root@master1 ~]#cat /lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target
[Service]
Type=simple
Restart=on-failure
User=root
Group=root
WorkingDirectory=/opt/jiankong/prometheus-2.40.5/
ExecStart=/opt/jiankong/prometheus-2.40.5/prometheus --web.listen-address="0.0.0.0:9091" --web.read-timeout=5m --web.max-connections=256 --storage.tsdb.retention=15d --storage.tsdb.path=data/ --query.max-concurrency=20 --query.timeout=2m
ExecReload=/bin/kill -HUP $MAINPID
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
#我们需要将定制的prometheus的配置文件和数据目录作为启动参数配置好
#其它的参数,可以基于prometheus --help 查看更多
## 2. 更新systemd服务信息
[root@master1 ~]# systemctl daemon-reload
## 3. 服务开机自动启动
[root@master1 ~]# systemctl enable --now prometheus.service
## 4.启动服务
[root@master1 ~]# systemctl start prometheus
## 其他的备用命令
[root@master1 ~]# systemctl enable prometheus.service
[root@master1 ~]# systemctl stop prometheus.service
[root@master1 ~]# systemctl restart prometheus.service
[root@master1 ~]# systemctl status prometheus.service
[root@master1 ~]# journalctl -u prometheus -f -n 500
四、Grafana的安装
1. Grafanna下载
下载地址:https://grafana.com/grafana/download,版本也可使用文章末尾的资料包
根据环境下载对应的版本,x86环境的话用这个Standalone Linux Binaries(64 Bit)
2. Grafanna安装
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.3.1.linux-amd64.tar.gz
tar -zxvf grafana-enterprise-9.3.1.linux-amd64.tar.gz
## 1. 进入目录
[root@VM-24-17-centos opt]# mkdir /opt/jiankong/jiankongSoft -p
[root@VM-24-17-centos opt]# cd /opt/jiankong/jiankongSoft
## 2. 上传压缩包 并解压
[root@server ~]# tar -zxvf grafana-enterprise-9.3.1.linux-amd64.tar.gz -C /opt/jiankong
3. Grafanna启动
## 3. 进入到grafana目录
[root@localhost bin]# cd /opt/jiankong/grafana-9.3.1
## 4. 启动服务
[root@VM-24-17-centos grafana-9.3.1]# nohup ./bin/grafana-server > ./grafana.log 2>&1 &
## 查看端口默认是3000
[root@server ~]# lsof -i:3000
## 通过浏览器访问http://IP:3000 ,默认用户名和密码:admin
4. Grafanna注册服务(可选)
1. 编辑配置文件
[root@master1 ~]#vim /lib/systemd/system/grafana_server.service
[root@master1 ~]#cat /lib/systemd/system/grafana_server.service
[Unit]
Description=Grafana
After=network.target
[Service]
Restart=simple
##注意用户
User=root
Group=root
WorkingDirectory=/opt/jiankong/grafana-9.3.1
ExecStart=/opt/jiankong/grafana-9.3.1/bin/grafana-server
ExecReload=/bin/kill -HUP $MAINPID
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
## 2. 更新systemd服务信息
[root@master1 ~]# systemctl daemon-reload
## 3. 服务开机自动启动
[root@master1 ~]# systemctl enable --now grafana_server.service
## 4.启动服务
[root@master1 ~]# systemctl start grafana_server
## 其他的备用命令
[root@master1 ~]# systemctl enable grafana_server.service
[root@master1 ~]# systemctl stop grafana_server.service
[root@master1 ~]# systemctl restart grafana_server.service
[root@master1 ~]# systemctl status grafana_server.service
[root@master1 ~]# journalctl -u grafana_server -f -n 500
5. 添加prometheus数据源相关联
点击配置,点击 Data Sources:
点击添加按钮:
找到 Prometheus,点击 Select
点击 Back 返回即可,可以看到 Data Sources 页面,出现了添加的 Prometheus:
资料包
链接:https://pan.baidu.com/s/1lo6AynZBR5JdRZwY_1arbA?pwd=o178 提取码:o178