Prometheus监控服务工具的安装配置
Prometheus简介
Prometheus监控系统,基于go开发的开源监控系统,支持pull和push两种采集模式,有完整的监控、报警、展示、数据异地传输能力,配置简单,对容器支持良好。
由于目前使用的MySQL在AWS云上部署,公司着手使用Zabbix监控系统或者Prometheus,最后选择Prometheus监控系统开始捣腾。
Prometheus服务安装
官网下载地址 https://prometheus.io/download/
这里我安装的是2.35.7版本
#下载安装包
$ wget https://github.com/prometheus/prometheus/releases/download/v2.37.5/prometheus-2.37.5.linux-amd64.tar.gz
#拷贝到安装目录
$ sudo cp prometheus-2.37.5.linux-amd64.tar.gz /usr/local
#解压
$ sudo -zxvf prometheus-2.37.5.linux-amd64.tar.gz
#添加服务到开机启动
$ sudo vim /usr/lib/systemd/system/prometheus.service
将下面代码贴进 刚刚的那个prometheus.service文件, 为了减少数据负荷 storage.tsdb.max-block-duration 数据缓存在内存中的时间,这个时间控制多久吧数据从内存存入磁盘中;storage.tsdb.retention.time 数据过期清理时间
[Unit]
Description=Prometheus Server
After=network-online.target
[Service]
User=root
Restart=on-failure
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path=/usr/local/prometheus/data \
--storage.tsdb.max-block-duration=2h \
--storage.tsdb.min-block-duration=2h \
--storage.tsdb.retention.time=2h \
--web.enable-lifecycle
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
后续执行开启服务命令:
#注册服务
$ sudo systemctl enable prometheus
#每次更改 prometheus.server 文件都要执行重载命令
$ sudo systemctl daemon-reload
#启动服务
$ sudo systemctl start prometheus
#查看服务 如果是 active running 就成功了,
$ sudo systemctl start prometheus
prometheus.yml配置文件如下:
# my global config
global:
scrape_interval: 60s # 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_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- /usr/local/monitor_soft/prometheus-2.37.5.linux-amd64/alert_rules/*.yml
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
- job_name: "mysql_exporter"
params:
auth_module: [client]
file_sd_configs:
- files:
- /usr/local/monitor_soft/prometheus-2.37.5.linux-amd64/mysql_config/*.yml
metrics_path: /probe
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 172.31.7.230:9104
mysql_config/mysql.yml具体mysql 数据库配置如下,标签可以自定义,要对应配置引用的名称,不然会报错自己把握;targets 可以多组,自己加多目标
- targets: [172.31.13.116:3306]
labels:
instance_id: JP001-DB-slave08
role: slave
env: JP001
aws_id: "i-0845952e0018a1575"
usr: mysql_monitor
instance: '172.31.13.116:3306'
服务起来后,默认使用的是 9090端口,需要linux系统中开放, 然后 localhost:9090 就可以访问了!
Mysql_export 指标采集器安装
官网下载地址 https://prometheus.io/download/
这里我安装的是github直接拉取打包版本(因为当前最新发布的版本中不支持一点多机采集,开发版本中功能已经有了)
github下载地址:https://github.com/prometheus/mysqld_exporter
下载后如果是linux系统先安装 GO,使用其 go build 命令打包
$ sudo apt-get install golang
$ go version #查看GO版本
$ cd /xxxx/mysql_export/
$ sudo go build #进入源码根目录 运行编译命令,
GO这边我使用的版本是 go1.19.5 运行完成之后会出现一个 mysqld_exporter 程序,这个就是可执行的程序了,之间加入系统服务就可以使用,mysqld_exporter.service 配置
[Unit]
Description=Prometheus MySQL daemon
After=network.target
[Service]
User=root
Group=root
Type=simple
Restart=always
ExecStart=/usr/local/mysqld_exporter_main/mysqld_exporter-main/mysqld_exporter \
--config.my-cnf=/usr/local/mysqld_exporter_main/mysqld_exporter-main/my_config.cnf \
--collect.global_status \
--collect.auto_increment.columns \
--collect.info_schema.processlist \
--collect.binlog_size \
--collect.info_schema.tablestats \
--collect.global_variables \
--collect.info_schema.innodb_metrics \
--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
注册服务和载入启动服务和 promeitheus 流程一样
my_config.yml 配置如下,这个client 组是默认必须的,其他也可以再增加自己的组,到时prometheus 通过配置文件就可以连接指定使用对应的账号密码了
[client]
user=mysql_monitor
password=XXXXX