首页 Linux安装普罗米修斯监控系统
文章
取消

Linux安装普罗米修斯监控系统

普罗米修斯监控系统简介

普罗米修斯(Prometheus)是一个SoundCloud公司开源的监控系统,拥有强大的监控能力。

普罗米修斯监控系统分两部分,客户端和服务端。客户端部署在被监控的服务器上,负责收集本机数据。服务端部署在其他机器上,记录客户端发送的监控数据,提供页面供管理员查看。可以部署多个客户端同时监控多台机器。如下图所示

Prometheus(普罗米修斯)监控系统(一)_运维_04

部署后最终效果

image-20220313204719416

客户端部署

部署环境

  • 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

image-20220313202942171

注意:记得防火墙打开9100的端口。检测端口9100是否监听,监听则客户端node_exporter启动成功,node_exporter启动成功后, 你就可以通过如下api看到你的监控数据了 http://localhost:9100/metrics。

image-20220313195527358

服务端部署

下载并解压

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

image-20220313202422910

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

image-20220313203043160

配置监控

Grafana默认端口为3000,输入http://localhost:3000/访问,记得打开3000端口的防火墙设置。 granafa首次登录账户名和密码admin/admin,第一次登录需要修改密码

image-20220313203221684

配置数据源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

image-20220313204601453

image-20220313204635388

image-20220313204719416

监控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/

image-20220313212803121

服务端集成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就可以使用了。

image-20220313213203999

image-20220313213329998

本文由作者按照 CC BY 4.0 进行授权

殷浩详解DDD系列 第五讲 - 聊聊如何避免写流水账代码

ubuntu 提升下载速度—更换阿里源