文章目录
- 一、Prometheus 监控系统状态
- 二、Prometheus 监控数据库状态
- 三、Prometheus 监控应用状态
- 四、其它监控组件
一、Prometheus 监控系统状态
- 假设有一台应用服务器,你想时刻获取它运行时的参数和状态,比如:
CPU
负载、系统负载、内存消耗、硬盘使用量、网络IO
等等,那么这些都可以使用node_exporter
来收集,并通过Prometheus
来提供收集和展示 - 进入应用服务器下载规划目录,下载 最新版本的
node_exporter
组件
# 进入系统规划目录
cd /usr/local/src
# 下载最新版本的 node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
# 解压到规划安装目录
tar -zxvf node_exporter-1.0.1.linux-amd64.tar.gz -C ../prometheus
# 重命名 node_exporter
cd /usr/local/prometheus
mv node_exporter-1.0.1.linux-amd64/ node_exporter-1.0.1
# 后台启动 node_export
nohup ./node_exporter &
- 通过
http://ip:9100/metrics
即可访问到node_exporter
收集到的系统信息
# 开放 node_exporter 默认端口 9100 ,提供给 Prometheus 收集系统信息
firewall-cmd --zone=public --add-port=9100/tcp --permanent
firewall-cmd --reload
node_exporter
自定义参数参考
node_exporte
基本信息配置
# node_exporter监听的端口,默认是9100,若需要修改则通过此参数。
--web.listen-address=":9100"
# 获取metric信息的url,默认是/metrics,若需要修改则通过此参数
--web.telemetry-path="/metrics"
# 设置日志级别
--log.level="info"
# 设置打印日志的格式,若有自动化日志提取工具可以使用这个参数规范日志打印的格式
--log.format="logger:stderr"
- 通过正则表达式来屏蔽或选择某些监控项
# 通过正则表达式忽略某些磁盘的信息收集
--collector.diskstats.ignored-devices="^(ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\\d+n\\d+p)\\d+$"
# 通过正则表达式忽略某些文件系统挂载点的信息收集
--collector.filesystem.ignored-mount-points="^/(dev|proc|sys|var/lib/docker/.+)($|/)"
# 通过正则表达式忽略某些文件系统类型的信息收集
--collector.filesystem.ignored-fs-types="^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$"
# 通过正则表达式忽略某些网络类的信息收集
--collector.netclass.ignored-devices="^$"
# 通过正则表达式忽略某些网络设备的信息收集
--collector.netdev.ignored-devices="^$"
# 通过正则表达式配置需要获取的网络状态信息
--collector.netstat.fields="^$"
# 通过正则表达式配置vmstat返回信息中需要收集的选项
--collector.vmstat.fields="^(oom_kill|pgpg|pswp|pg.*fault).*"
- 配置
Prometheus
来收集步骤3
暴露出来的系统信息
- 修改
Prometheus
的yml
文件,新增监控node_exporter
收集的信息
# 进入 Prometheus 挂载的 prometheus.yml 文件
vim /opt/docker/prometheus/prometheus.yml
# 新增监控节点
- job_name: 'node208-metircs'
scrape_interval: 5s
static_configs:
- targets: ['192.169.5.208:9100']
- 配置信息如下
- 重启
Prometheus
docker restart prometheus
- 查看
Prometheus
是否收集到了node_exporter
的暴露的信息
- 也可以通过官网提供的采用 Docker 方式安装 node_exporter ,但是为了更加精确的监控系统指标,建议采用以上方式进行安装
二、Prometheus 监控数据库状态
- 假设有一台
MySQL
数据库实例的服务器,你需要监控它的运行指标,我们可以在数据库实例的服务器上安装mysql_exporter
来监控该服务器上MySQL
实例的状态 - 进入
MySQL
服务器的规划下载目录,下载 最新版本的mysql_exporter
组件
# 进入系统规划目录
cd /usr/local/src
# 下载最新版本的 mysql_exporter
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
# 解压到规划安装目录
tar -zxvf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C ../prometheus
# 重命名 node_exporter
cd /usr/local/prometheus
mv mysqld_exporter-0.12.1.linux-amd64/ mysqld_exporter-0.12.1
root
用户登录需要被监控的MySQL
数据库实例,创建监控账户
# 登录数据库
mysql -u root -p
# 创建监控数据库用户
CREATE USER 'exporter'@'%' IDENTIFIED BY '123456' WITH MAX_USER_CONNECTIONS 3;
# 为用户赋权
GRANT PROCESS,REPLICATION CLIENT,SELECT ON *.* TO 'exporter'@'%';
# 刷新配置
FLUSH PRIVILEGES;
- 启动
mysql_exporter
# 在解压后 mysql_exporter 根目录创建 .my.conf 文件并配置数据库连接信息
vim /usr/local/prometheus/mysqld_exporter-0.12.1/.my.conf
# 配置连接信息如下
[client]
host=192.169.5.207
user=exporter
password=123456
[mysqld]
port=8001
# 后台启动
#(非必要) export DATA_SOURCE_NAME='exporter:123456@(192.169.5.207:8001)/'
nohup /usr/local/prometheus/mysqld_exporter-0.12.1/mysqld_exporter --config.my-cnf='/usr/local/prometheus/mysqld_exporter-0.12.1/.my.cnf' &
# 查看启动状态
ss -antpl | grep 9104
- 开放
9104
端口后访问http://ip:9104
效果如下
firewall-cmd --zone=public --add-port=9104/tcp --permanent
firewall-cmd --reload
- 也可以编写
mysql_exporter.service
文件来通过systemctl
控制启停操作 - 修改
prometheus
的yml
配置文件,收集 步骤5
暴露出来的信息
- 修改
prometheus
的yml
文件,新增监控mysql_exporter
收集的信息
# 进入 Prometheus 挂载的 prometheus.yml 文件
vim /opt/docker/prometheus/prometheus.yml
# 新增监控节点
- job_name: 'node207-mysql'
scrape_interval: 5s
static_configs:
- targets: ['192.169.5.207:9104']
- 配置信息如下
- 重启
Prometheus
docker restart prometheus
- 查看
Prometheus
是否收集到了node_exporter
的暴露的信息
- 也可以通过官网提供的采用 Docker 方式安装 node_exporter
三、Prometheus 监控应用状态
- 在应用程序的
pom
文件中添加Micrometer
和Prometheus
的桥梁
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<!-- 此处的版本一定要和 Prometheus 兼容(浏览器访问 http://appip:port/actuator/prometheus 应用程序控制台不报错) -->
<version>1.3.6</version>
</dependency>
- 在启动类添加
MeterRegistryCustomizer
配置信息
@Bean
MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName) {
// 此处的配置名称将会在 Prometheus 的控制面板显示
return (registry) -> registry.config().commonTags("application", applicationName);
}
P.S
- 在应用程序的配置信息中暴露注册信息
# 暴露注册信息
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: always
- 启动应用程序并访问
http://appip:port/actuator/prometheus
- 配置
Prometheus
来收集步骤4
暴露出来的系统信息
- 修改
Prometheus
的yml
文件,新增监控node_exporter
收集的信息
# 进入 Prometheus 挂载的 prometheus.yml 文件
vim /opt/docker/prometheus/prometheus.yml
# 新增监控节点
- job_name: 'rms-console-service'
# 由于默认 pull 的 uri 是 metrics 所以这里要指定 uri
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
static_configs:
- targets: ['192.169.5.247:9002']
- 配置信息如下
- 重启
Prometheus
docker restart prometheus
- 查看
Prometheus
是否收集到了node_exporter
的暴露的信息
四、其它监控组件
-
prometheus
为我们提供了许多监控组件,查看组件的具体功能和用法