Prometheus 是 Cloud Native Computing Foundation 的一个监控系统项目, 集采集、监控、报警等特点于一体。
Prometheus主要受启发于Google的Brogmon监控系统, 从2012年开始由前Google工程师在Soundcloud以开源软件的形式进行研发,2017年底发布了基于全新存储层的2.0版本,当前最新版本是2.44.0版本。
IP | 角色 | |
---|---|---|
192.168.2.4 | prometheus服务器端 | |
192.168.2.3 | node_exporter客户端 |
[root@server ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.44.0/prometheus-2.44.0.linux-amd64.tar.gz [root@server ~]# tar zxf prometheus-2.44.0.linux-amd64.tar.gz [root@server ~]# mv prometheus-2.44.0.linux-amd64 /usr/local/prometheus
[root@server ~]# cd /usr/local/prometheus/ [root@server prometheus]# ./prometheus --version prometheus, version 2.44.0 (branch: HEAD, revision: 1ac5131f698ebc60f13fe2727f89b115a41f6558) build user: root@739e8181c5db build date: 20230514-06:18:11 go version: go1.20.4 platform: linux/amd64 tags: netgo,builtinassets,stringlabels
[root@server prometheus]# ./prometheus --help
# my global config global: # 默认情况下,每15s拉取一次目标采样点数据。 scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. # 每15秒评估一次规则。默认值为每1分钟。 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: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # job名称会增加到拉取到的所有采样点上,同时还有一个instance目标服务的host:port标签也会增加到采样点上 - job_name: 'prometheus' # 覆盖global的采样点,拉取时间间隔5s scrape_interval: 5s static_configs: - targets: ['localhost:9090']
# 启动服务 cd /usr/lib/systemd/system vi prometheus.service [Unit] Description=https://prometheus.io [Service] Restart=on-failure ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.listen-address=:9090 [Install] WantedBy=multi-user.target #保存退出
其他选项解释:
常用选项解释: # 指定配置文件 --config.file="prometheus.yml" # 默认指定监听地址端口,可修改端口 --web.listen-address="0.0.0.0:9090" # 最大连接数 --web.max-connections=512 # tsdb数据存储的目录,默认当前data/ --storage.tsdb.path="data/" # premetheus 存储数据的时间,默认保存15天 --storage.tsdb.retention=15d # 通过命令热加载无需重启 curl -XPOST 192.168.2.45:9090/-/reload --web.enable-lifecycle # 可以启用 TLS 或 身份验证 的配置文件的路径 --web.config.file="" 启动选项了解:./prometheus --help
systemctl daemon-reload systemctl start prometheus
IP:9090
[root@server ~]# wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz [root@server ~]# tar xf node_exporter-1.1.2.linux-amd64.tar.gz -C /usr/local/ [root@server ~]# cd /usr/local/ [root@server ~]# mv node_exporter-1.1.2.linux-amd64/ node_exporter
[root@server ~]# vi /usr/lib/systemd/system/node_exporter.service [Unit] Description=node_exporter After=network.target [Service] ExecStart=/usr/local/node_exporter/node_exporter Restart=on-failure [Install] WantedBy=multi-user.target # 启动node_exporter systemctl daemon-reload systemctl start node_exporter
[root@server prometheus]# cat prometheus.yml # my global config 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_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['192.168.2.4:9090'] - job_name: 'linux' static_configs: - targets: ['192.168.2.4:9100','192.168.2.3:9100'] # 多个用,分开 # 添加上面三行
[root@server ~]# systemctl restart prometheus.service
1.安装mysqld-exporter
[root@VM_2-44 ~]# wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz [root@VM_2-44 ~]# tar xf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/ [root@VM_2-44 /usr/local]# mv mysqld_exporter-0.12.1.linux-amd64 mysqld_exporter [root@VM_2-44 /usr/local/mysqld_exporter]# vi .my.cnf [client] host=192.168.2.3 user=root password=123456 port=3306
2.启动mysqld-exporter服务
[root@VM_2-44 /usr/local/mysqld_exporter]# ./mysqld_exporter --config.my-cnf="/usr/local/mysqld_exporter/.my.cnf" & [root@VM_2-44 /usr/local/mysqld_exporter]# ps -ef |grep exporter root 3447 3398 0 01:31 pts/1 00:00:02 ./node_exporter root 4647 3398 0 02:13 pts/1 00:00:00 ./mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf root 4654 3398 0 02:13 pts/1 00:00:00 grep --color=auto exporter [root@VM_2-44 /usr/local/mysqld_exporter]# ss -lntp |grep 4647 LISTEN 0 128 :::9104 :::* users:(("mysqld_exporter",pid=4647,fd=3)) [root@VM_2-44 /usr/local/mysqld_exporter]# # 启动后会监听9104端口
3.普罗米修斯配置文件添加监控项
[root@VM_2-45 /usr/local/prometheus]# vi prometheus.yml - job_name: 'mysql' static_configs: - targets: ['192.168.2.3:9104']
4.重启普罗米修斯
[root@VM_2-45 /usr/local/prometheus]# systemctl restart prometheus.service
5.查看状态
wget https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/Packages/grafana-7.4.3-1.x86_64.rpm [root@VM_2-45 ~]# yum install initscripts fontconfig [root@VM_2-45 ~]# yum install -y grafana-7.4.3-1.x86_64.rpm [root@VM_2-45 ~]# systemctl start grafana-server.service
启动后访问地址:ip:3000 初始用户名和密码都是admin
Configuration -> Data Sources ->add data source -> Prometheus
添加prometheus服务器
导入模板8919
选择数据源
Dashboards ->Manage
Configuration -> Data Sources ->add data source -> MySQL
https://pan.baidu.com/s/1GBzogDLsYS3IvwH4WbdPLw 提取码:ef6e