Prometheus监控mysql nginx tomcat 黑盒监控

本文详细介绍了如何部署ConsulExporter进行服务发现,以及如何将Prometheus与Nginx、MySQL、Tomcat等应用集成,包括设置Prometheus配置、使用blackbox_exporter进行黑盒监控,并通过DockerCompose管理和配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

部署consul_exporter,用与服务发现
https://github.com/prometheus/consul_exporter/releases/download/v0.9.0/consul_exporter-0.9.0.linux-amd64.tar.gz

注册

oot@ubuntu20:~# cat consul_export.json 
root@ubuntu20:~# cat consul_export.json 
{
  "services": [{
      "id": "consul_exporter",
      "name": "192.168.1.50_cousul_expo",
      "address": "192.168.1.50",
      "port": 9107,
      "tags": ["consul_exporter"],
      "checks": [{
        "http": "http://192.168.1.50:9107/metrics",
        "interval": "5s"
      }]
    }
  ]


consul services register consul_export.json
可以访问consul查看,
在这里插入图片描述

Prometheus添加配置

 - job_name: "consul_exporter"
    metrics_path: '/metrics'
    scheme: "http"
    consul_sd_configs:
        - server: "192.168.1.50:8500"
          tags:
          - "consul_exporter"
          refresh_interval: 1m

重新加载Prometheus
root@consumer:/apps/prometheus# curl -XPOST localhost:9090/-/reload

在这里插入图片描述
export 获取数据转换为Prometheus数据

pushgetway

查询持久化

grafanf绘图

altermanager 发送告警系统
选择

应用程序不兼容Prometheus

监控mysql

1.安装 mysqld export

$ cd /usr/local/src
$ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
$ tar -zxf mysqld_exporter-0.12.1.linux-amd64.tar.gz
$ mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter

2.部署mysql
安装mysql
创建用户授权
create user ‘exporter’@‘%’ identified by ‘123456’;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON . TO ‘exporter’@‘%’
3.启动服务
cd /usr/local/mysqld_exporter
创建配置文件,添加授权信息
vim .my.cnf

[client]
host=localhost
user=exporter
password=123456
创建service文件,使用systemd管理

cat > /usr/lib/systemd/system/mysqld_exporter.service <<EOF
[Unit]
Description=mysqld_exporter
After=network.target
 
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF

这里我也是用prometheus用户启动mysqld_exporter,所以要创建prometheus用户并授权。

$ groupadd prometheus
$ useradd -g prometheus -m -d /var/lib/prometheus -s /sbin/nologin prometheus
$ chown -R prometheus:prometheus /usr/local/mysqld_exporter

启动mysqld_exporter:

$ systemctl daemon-reload
$ systemctl start mysqld_exporter
$ systemctl status mysqld_exporter
$ systemctl enable mysqld_exporter
$ ss -tln | grep 9104

Prometheus配置中添加

  - job_name: "mysql"
    static_configs:
      - targets: ["192.168.1.73:9104"]

从新加载:curl -XPOST localhost:9090/-/reload
访问界面查看新增mysql
4.grafana中添加7362模版
在这里插入图片描述

nginx-export

https://github.com/nginxinc/nginx-prometheus-exporter

添加nginx配置,添加这个查看指标

       location /stub_status {
           # Turn on nginx stats
                stub_status on;
                access_log   off;
    # Only allow access from certain IP addresses
                allow all;
    #deny all;
                }

运行采集指标export
root@ubuntu20:/apps# ./nginx-prometheus-exporter -nginx.scrape-uri=http://192.168.1.50/stub_status

root@ubuntu20:/etc/nginx# netstat -antp |grep 9113
tcp6 0 0 :::9113 ::😗 LISTEN 168719/./nginx-prom


root@ubuntu20:~# cat nginx_export.json 
{
  "services": [{
      "id": "nginx_exporter",
      "name": "192.168.1.50_nginx",
      "address": "192.168.1.50",
      "port": 9113,
      "tags": ["nginx_exporter"],
      "checks": [{
        "http": "http://192.168.1.50:9113/metrics",
        "interval": "5s"
      }]
    }
  ]
}

consul services register  nginx_export.json 

配置Prometheus添加

  - job_name: "nginx_exporter"
    metrics_path: '/metrics'
    scheme: "http"
    consul_sd_configs:
        - server: "192.168.1.50:8500"
          tags:
          - "nginx_exporter"
          refresh_interval: 1m

curl -XPOST localhost:9090/-/reload

在这里插入图片描述

监控tomcat

tomcat
mcat自身并不能提供监控指标数据,需要借助第三方exporter实现:https://github.com/nlighten/tomcat_exporter

JVM的export或者tomcat export

构建tomcat镜像,并暴露8082端口

cat docker-compose.yml 
version: '3.6'

volumes:
    tomcat_webapps: {}

networks:
  monitoring:
    driver: bridge
    ipam:
      config:
        - subnet: 172.31.130.0/24

services:
  tomcat:
    #image: tomcat:jdk11
    build:
      context: tomcat
      dockerfile: Dockerfile 
    hostname: tomcat.magedu.com
    expose:
      - 8080
    ports:
      - 8082:8080
    volumes:
      - tomcat_webapps:/usr/local/tomcat/webapps
      - ./tomcat/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml
    networks:
      - monitoring
    environment:
      TZ: Asia/Shanghai

root@jenkins:~/learning-prometheus/08-prometheus-components-compose/tomcat-and-metrics# docker-compose up

注册到consul

root@ubuntu20:~# cat tomcat2.json 
{
  "services": [{
      "id": "tomcat",
      "name": "192.168.1.51_tomcat",
      "address": "192.168.1.51",
      "port": 8082,
      "tags": ["tomcat_exporter"],
      "checks": [{
        "http": "http://192.168.1.51:8082/metrics",
        "interval": "5s"
      }]
    }
  ]
}


consul services register   tomcat2.json 

添加Prometheus配置并重新加载

  - job_name: "tomcat_exporter"
    metrics_path: '/metrics'
    scheme: "http"
    consul_sd_configs:
        - server: "192.168.1.50:8500"
          tags:
          - "tomcat_exporter"
          refresh_interval: 1m

curl -XPOST localhost:9090/-/reload

在这里插入图片描述

黑盒监控

https://github.com/prometheus/blackbox_exporter/releases/download/v0.24.0/blackbox_exporter-0.24.0.linux-amd64.tar.gz

通过容器运行
root@jenkins:~/learning-prometheus/08-prometheus-components-compose/blackbox-exporter# docker-compose up -d

Prometheus添加

  - job_name: "tomcat_exporter"
    metrics_path: '/metrics'
    scheme: "http"
    consul_sd_configs:
        - server: "192.168.1.50:8500"
          tags:
          - "tomcat_exporter"
          refresh_interval: 1m
  - job_name: 'blackbox'
    metrics_path: /probe
    params:
      module: [http_2xx]
    static_configs:
    - targets:
      - www.magedu.com
      - www.google.com
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: "192.168.1.51:9115"  # Blackbox exporter.
      - target_label: region
        replacement: "remote"

在这里插入图片描述
容器部署在9115端口页面显示失败

使用二进制部署参考https://blog.youkuaiyun.com/u011417723/article/details/120783567

正常
在这里插入图片描述

### 使用 Prometheus 监控 MySQLTomcat 的解决方案 #### 1. Prometheus 监控 MySQL 的配置指南 Prometheus 可以通过 Exporter 工具来监控 MySQL。以下是实现这一目标的详细步骤: - 首先,需要安装并配置 `mysqld_exporter`。这是 Prometheus 官方支持的一个 Exporter,用于从 MySQL 收集指标数据[^4]。 - 在 MySQL 数据库中创建一个用户,该用户仅具有查询状态所需的权限。例如: ```sql CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'password'; GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'exporter'@'localhost'; ``` - 下载并启动 `mysqld_exporter`,同时指定 MySQL 用户名和密码: ```bash ./mysqld_exporter --config.my-cnf=/path/to/my.cnf ``` 其中,`my.cnf` 文件包含 MySQL 的连接信息[^5]。 - 将 `mysqld_exporter` 的端口(默认为 9104)添加到 Prometheus 的配置文件 `prometheus.yml` 中: ```yaml - job_name: 'mysql' static_configs: - targets: ['localhost:9104'] ``` #### 2. Prometheus 监控 Tomcat 的配置指南 为了监控 Tomcat,可以使用 `tomcat-exporter` 或者直接启用 JMX Exporter 来收集指标。 - 如果选择使用 `tomcat-exporter`,需要将其部署为 Tomcat 的 Web 应用程序。下载 `tomcat-exporter.war` 文件,并将其放置在 Tomcat 的 `webapps` 目录下[^6]。 - 启动 Tomcat 时,确保使用非 root 用户运行,例如: ```bash su - www -c "/apps/tomcat/bin/catalina.sh start" ``` 这一步已经在提供的引用中进行了演示[^2]。 - 对于 JMX Exporter,需要下载 `jmx_prometheus_httpserver.jar` 并配置相应的 YAML 文件。例如: ```bash java -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=9010 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ -javaagent:jmx_prometheus_javaagent-0.16.1.jar=9011:/path/to/config.yaml \ -jar tomcat/bin/startup.sh ``` - 将 Tomcat 或 JMX Exporter 的目标地址添加到 Prometheus 的配置文件中: ```yaml - job_name: 'tomcat' static_configs: - targets: ['localhost:9011'] ``` #### 3. Prometheus 服务的启动与管理 Prometheus 服务可以通过 systemd 管理,确保其作为系统服务稳定运行。以下是一个示例配置文件[^3]: ```ini [Unit] Description=prometheus server daemon [Service] Restart=on-failure ExecStart=/data/prometheus/prometheus --config.file=/data/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus/data --storage.tsdb.retention.time=30d --web.enable-lifecycle [Install] WantedBy=multi-user.target ``` #### 4. Grafana 可视化配置 为了更直观地展示监控数据,可以将 Prometheus 与 Grafana 结合使用。Grafana 提供了许多现成的 Dashboard 模板,可以直接导入并用于可视化 MySQLTomcat监控数据[^7]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值