普罗米修斯监控系统简介
普罗米修斯(Prometheus)是一个SoundCloud公司开源的监控系统,拥有强大的监控能力。
普罗米修斯监控系统分两部分,客户端和服务端。客户端部署在被监控的服务器上,负责收集本机数据。服务端部署在其他机器上,记录客户端发送的监控数据,提供页面供管理员查看。可以部署多个客户端同时监控多台机器。如下图所示
部署后最终效果
客户端部署
部署环境
- centos 7.3
- 阿里云服务器 1核2G轻量应用服务器
- 部署node_exporter,用来监控机器数据,包括CPU,内存,TCP连接等数据
下载安装包
官方下载地址。 https://prometheus.io/download/
1
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
解压压缩包
1
2
tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz
cp -R node_exporter-1.3.1.linux-amd64 /usr/local/node_exporter
注册node_exporter服务
1
2
3
cd /usr/local/node_exporter
touch /usr/lib/systemd/system/node_exporter.service
vim /usr/lib/systemd/system/node_exporter.serv
在node_exporter.service中加入如下代码:
1
2
3
4
5
6
7
8
9
10
[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动 node_exporter 服务并设置开机启动
1
2
3
4
5
systemctl daemon-reload
systemctl enable node_exporter.service
systemctl start node_exporter.service
# 查看状态
systemctl status node_exporter.service
注意:记得防火墙打开9100的端口。检测端口9100是否监听,监听则客户端node_exporter启动成功,node_exporter启动成功后, 你就可以通过如下api看到你的监控数据了 http://localhost:9100/metrics。
服务端部署
下载并解压
1
wget https://github.com/prometheus/prometheus/releases/download/v2.33.5/prometheus-2.33.5.linux-amd64.tar.gz
由于Prometheus是go语言写的,所以不需要编译,安装的过程非常简单,仅需要解压然后运行。
1
2
tar -zxvf prometheus-2.33.5.linux-amd64.tar.gz
cp -R prometheus-2.33.5.linux-amd64 /usr/local/prometheus
修改配置来监控客户端
这里需要特别注意,一定要严格注意间距和格式,建议参考范例所示的格式,我在第一次部署的时候,曾因为少了一个空格导致启动失败。
1
2
3
4
5
6
7
cd /usr/local/prometheus
vim prometheus.yml
#在最后面增加如下配置
- job_name: 'nodes'
static_configs:
- targets: ['客户端ip:9100']
设置prometheus系统服务,并配置开机启动
1
2
touch /usr/lib/systemd/system/prometheus.service
vim /usr/lib/systemd/system/prometheus.service
将如下配置写入prometheus.servie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
# --storage.tsdb.path是可选项,默认数据目录在运行目录的./dada目录中
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.enable-lifecycle --storage.tsdb.path=/usr/local/prometheus/data --storage.tsdb.retention=60d
Restart=on-failure
[Install]
WantedBy=multi-user.target
Prometheus启动参数说明
- config.file – 指明prometheus的配置文件路径
- web.enable-lifecycle – 指明prometheus配置更改后可以进行热加载
- storage.tsdb.path – 指明监控数据存储路径
- storage.tsdb.retention –指明数据保留时间
启动Prometheus
1
2
3
4
5
6
systemctl daemon-reload
# 设置开机启动
systemctl enable prometheus.service
# 启动服务
systemctl start prometheus.service
systemctl status prometheus.service
Grafana安装配置
Grafana安装
安装Grafana用于可视化普罗米修斯的监控数据
下载地址: https://grafana.com/grafana/download
1
2
3
4
5
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.4.3-1.x86_64.rpm
sudo yum install grafana-enterprise-8.4.3-1.x86_64.rpm
systemctl start grafana-server
systemctl status grafana-server
配置监控
Grafana默认端口为3000,输入http://localhost:3000/访问,记得打开3000端口的防火墙设置。 granafa首次登录账户名和密码admin/admin,第一次登录需要修改密码
配置数据源Data sources->Add data source -> Prometheus,输入prometheus数据源的信息,主要是输入name和url。由于我是Grafana 和Prometheus安装在同一个机器上,所以我的url如下
1
http://localhost:9090
配置Dashboard模板
Grafana官方提供模板地址: https://grafana.com/grafana/dashboards 本次要导入的模板: https://grafana.com/grafana/dashboards/11074
输入ID:11074
监控tomcat数据
客户端安装jmx_exporter
Prometheus监控Tomcat需要用到jmx_exporter。 jmx_exporter项目地址:https://github.com/prometheus/jmx_exporter
1
2
3
4
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.16.1/jmx_prometheus_javaagent-0.16.1.jar
mkdir -p /usr/local/jmx/
cp jmx_prometheus_javaagent-0.16.1.jar /usr/local/jmx/
修改配置,在config.yaml下添加如下内容
1
2
3
#修改配置
touch /usr/local/jmx/config.yaml
vim /usr/local/jmx/config.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#添加如下内容:
lowercaseOutputLabelNames: true
lowercaseOutputName: true
rules:
- pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+):'
name: tomcat_$3_total
labels:
port: "$2"
protocol: "$1"
help: Tomcat global $3
type: COUNTER
- pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|maxTime|processingTime|errorCount):'
name: tomcat_servlet_$3_total
labels:
module: "$1"
servlet: "$2"
help: Tomcat servlet $3 total
type: COUNTER
- pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount):'
name: tomcat_threadpool_$3
labels:
port: "$2"
protocol: "$1"
help: Tomcat threadpool $3
type: GAUGE
- pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions):'
name: tomcat_session_$3_total
labels:
context: "$2"
host: "$1"
help: Tomcat session $3 total
type: COUNTER
- pattern: ".*" #让所有的jmx metrics全部暴露出来
修改tomcat配置,让监控和tomcat程序一起启动
1
2
3
4
# 注意路径改为你tomcat所在位置
vim /usr/local/tomcat/bin/catalina.sh
# 添加以下内容,注意jar包的版本改为你下载的版本
JAVA_OPTS="$JAVA_OPTS -javaagent:/usr/local/jmx/jmx_prometheus_javaagent-0.16.1.jar=30013:/usr/local/jmx/config.yaml"
重启tomcat
1
systemctl restart tomcat
访问地址,记得开启防火墙端口30013,查看监控数据:http://localhost:30013/
服务端集成Prometheus
1
2
3
4
5
vim /usr/local/prometheus/prometheus.yml
#添加如下内容:
- job_name: 'tomcat'
static_configs:
- targets: ['客户端ip:30013']
重启Prometheus
1
systemctl restart prometheus
JMX Exporter 在 Grafana 上为我们提供好了 Dashboard 模板:https://grafana.com/dashboards/
导入8563
模板,job填写tomcat
就可以使用了。