docker部署 prometheus、grafana 、cadvisor、node-exporter、mysqld-exporter、redis、java服务等监控体系

说明:本次搭建会启动很多容器,请避免端口冲突,由于是docker部署,需要提前搭建好docker环境,镜像加速器之类的。

目录

1、部署prometheus

2、部署grafana

3 、部署cadvisor 

4、部署node-exporter

5、部署mysqld-exporter

6  部署Redis_exporter

7 监控springboot应用


1、部署prometheus

  Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。

   1.1 拉取镜像

docker pull prom/prometheus

1.2 创建映射目录

mkdir $PWD/prometheus/

 1.3 创建映射文件

touch -f $PWD/prometheus/prometheus.yml

1.4 运行容器,目的是获取里面的配置文件

docker run -d --name prometheus prom/prometheus

1.5 瞒天过海,复制文件

docker cp prometheus:/etc/prometheus/prometheus.yml $PWD/prometheus/prometheus.yml

1.6 卸磨杀驴,用完即删


docker rm -f prometheus

1.7 言归正传,创建容器

docker run -d \
 -p 9090:9090 \
 --restart always \
-v $PWD/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /etc/localtime:/etc/localtime \
-e TZ=Asia/Shanghai \
--name prometheus \
prom/prometheus

1.8 查看成果 访问地址(自己本地ip加你部署的端口号,注意防火墙或安全组等)  http://192.168.153.102:9090/

 成功了。。。。。。

2、部署grafana

Grafana 是一个可视化工具,简单点说就是用来展示数据的。它和Zabbix、Prometheus 有本质区别,在于它不能解决监控问题,仅用于展示。也就是说,在监控领域,Grafana 需要配合 Zabbix、Prometheus 等工具一起使用,以获取数据源。

Grafana 官方是这么介绍 Grafana 的:grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。
 

2.1 拉取镜像

docker pull grafana/grafana

2.2 创建映射目录 (给他个权限,不给的话好像有报错)

mkdir $PWD/grafana &&chmod 777 $PWD/grafana

2.3 运行一把容器

docker run -d \
-p 3000:3000 \
--restart always \
-e TZ=Asia/Shanghai \
-v $PWD/grafana:/var/lib/grafana \
-v /etc/localtime:/etc/localtime \
--name=grafana \
grafana/grafana

2.4 测试一把 访问 http://192.168.153.102:3000/

成功了。。。。。。


2.5 初始化密码,第一次登陆用户和密码都是admin,登陆成功需要修改。 

 2.6 修改密码

2.7 修改密码成功,进入首页

3 、部署cadvisor 

cAdvisor 是谷歌公司用来分析运行中的 Docker 容器的资源占用以及性能特性的工具。

cAdvisor 是一个运行中的守护进程用来收集、聚合、处理和导出运行容器相关的信息,每个容器保持独立的参数、历史资源使用情况和完整的资源使用数据。当前支持 lmctfy 容器和 Docker 容器。

3.1 部署 ,--privileged=true用来解决日志报错打不开目录,不知道咋回事。我的8080端口占用了,所以用的是8081:“8080

sudo docker run \
--privileged=true \
--restart always \
--name cadvisor  \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/dev/disk/:/dev/disk:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8081:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest

 3.2 cadvisor集成prometheus

       ①编辑prometheus配置文件

        注意yml语法

vi $PWD/prometheus/prometheus.yml

         ②重启容器

docker  restart prometheus

3.3 访问一下cadvisor地址

 3.4 访问一下p,这英语单词记不住,简写了

 

 这个url访问不到,可能是跟配置的url有关系,修改一下配置文件,重启容器

vi prometheus/prometheus.yml

docker restart prometheus

3.5 配置监控数据源p

①先创建一下数据源,这玩意

 ②选择p

 ③配置一下路径

 ④save test 

 3.6 配置模板 395 13631 14841

        ①点击import

         ②输入模板编号

        

         ③点击load

         ④选择数据源

         ⑤点击import

 

         ⑥选择30s

         ⑦ 依次把剩下两个模板导入

 

4、部署node-exporter

采集到主机的运行指标如CPU, 内存,磁盘等信息

4.1 部署容器 
 

docker run -d \
 -p 9100:9100 \
--name node-exporter \
--restart=always \
--net="host" \
--pid="host" \
 -e TZ=Asia/Shanghai \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
-v /etc/localtime:/etc/localtime \
prom/node-exporter \
--path.procfs=/host/proc \
--path.rootfs=/rootfs \
--path.sysfs=/host/sys \
--collector.filesystem.ignored-mount-points='^/(sys|proc|dev|host|etc)($$|/)'

4.2 测试 192.168.153.102:9100/metrics

4.3 与p集成 

        ①编辑配置文件

vi prometheus/prometheus.yml 

        ②

         ③ 重启容器

docker restart prometheus

        ④查看 

4.4 配置模板 9276 8919 1860 

        ① 9276  选择node,这模板是监控主机信息的 

        ②8919

         ③1860

5、部署mysqld-exporter

使用 mysqld_exporter 来抓取 mysql的一些指标信息。

5.1 创建network

docker为容器创建独立的网络环境,实现宿主和容器、容器之间的网络隔离,默认使用bridge模式的网络,实现容器之间、容器与宿主机之间、乃至与外界之间 的网络通信。
但是我们在实际部署应用的时候,发现并不能直接通过容器内部端口访问另外一个容器的应用(比如:mysql容器端口是3306,web应用不能直接通过3306访问mysql),而是通过端口映射到宿主机器来实现容器之间的访问。

那么有什么方式能实现直接通过容器内部端口进行数据通讯呢?那就是通过network方式。

docker network创建一个桥接网络,在docker run的时候将容器指定到新创建的桥接网络中,这样同一桥接网络中的容器就可以通过互相访问。

docker network create  my-mysql-network

5.2 查看network

docker network ls

5.3 部署

DATA_SOURCE_NAME ,配置账户名和密码、地址:端口号。应该专门配置一个监控账户,自行百度。

docker run -d \
  --name mysql_exporter \
  --restart always \
  -p 9104:9104 \
  --network my-mysql-network \
  --network-alias mysql_exporter \
  -e DATA_SOURCE_NAME="root:123456@(192.168.153.102:3307)/" \
   -e TZ=Asia/Shanghai \
   -v /etc/localtime:/etc/localtime \
  prom/mysqld-exporter

5.4 集成p

        ①编辑p配置文件

vi prometheus/prometheus.yml 

        ②

         ③重启容器

docker restart prometheus

        ④测试

5.5 配置模板 7362

6  部署Redis_exporter

6.1 拉取镜像

 docker pull oliver006/redis_exporter

6.2 部署

docker run -d --name  redis_exporter  --restart=always -p 9121:9121 oliver006/redis_exporter --redis.addr redis://192.168.153.102:6379

6.3编辑p配置文件

vi prometheus/prometheus.yml 

6.4

6.5 重启p容器

docker restart prometheus

6.6 测试

 6.7 配置模板  763

7 监控springboot应用

7.1 加入依赖

监控SpringBoot应用需要依靠actuatormicrometer,通过暴露actuator的端点,Prometheus可以定时获取并存储指标信息。

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
			<version>2.6.6</version>
		</dependency>
		<dependency>
			<groupId>io.micrometer</groupId>
			<artifactId>micrometer-registry-prometheus</artifactId>
			<version>1.9.3</version>
		</dependency>

7.2 修改应用配置文件application.yml,通过actuator暴露监控端口/actuator/prometheus


# 配置为开启Actuator服务
management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    prometheus:
      enabled: true
    metrics:
      enabled: true
  metrics:
    export:
      prometheus:
        enabled: true
    # 将工程应用名称添加到计量器注册表的 tag 中
    tags:
      application: ${spring.application.name}

7.3 放行这个路径

 7.4 加入bean到spring容器 

	@Bean
	MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName){
		return registry -> registry.config().commonTags("application", applicationName);
	}

7.5 本地启动测试

 7.6 修改p文件 


  - job_name: "rongyi"
    # 采集时间间隔
    scrape_interval: 5s
    # 采集超时时间
    scrape_timeout: 4s
    # 采集数据的路径
    metrics_path: /renren-fast/actuator/prometheus

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    # 采集服务地址
      - targets: ["192.168.153.102:9666"]

7.7 重启p容器

7.8 部署项目到服务器上(临时部署)

        ①上传jar包到rongyi目录下

mkdir /home/rongyi
        ②创建Dockerfile文件

FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY ./renren-fast.jar  /app.jar
ENTRYPOINT ["nohup","java", "-jar", "/app.jar","&"]

        ③打包成镜像

 docker build .

        ④启动容器

docker run --name rongyi -d -p 9666:8080 340047b3de3e

7.9  测试

7.10 配置模板 14370 

### 实现系统和中间件指标监控的方案 使用 `Exporter`、`Prometheus` 和 `Grafana` 技术栈,可以实现对系统指标和中间件指标的全面监控。以下是具体的实施方案: #### 1. 系统指标监控 对于操作系统级别的监控,例如 CPU 使用率、内存占用、磁盘 I/O、网络流量等,通常需要使用独立运行的 Exporter,如 `Node Exporter`。它通过操作系统的接口获取数据,并将这些信息转换为 Prometheus 可读取的格式[^2]。 - **安装 Node Exporter** 在目标服务器上下载并启动 Node Exporter: ```bash wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz tar xvfz node_exporter-1.3.1.linux-amd64.tar.gz cd node_exporter-1.3.1.linux-amd64 ./node_exporter ``` 启动后,Node Exporter 默认监听在 `http://localhost:9100/metrics`,Prometheus Server 将从此地址抓取数据[^1]。 - **配置 Prometheus Server** 在 Prometheus 的配置文件 `prometheus.yml` 中添加如下内容以抓取 Node Exporter 提供的数据: ```yaml scrape_configs: - job_name: 'node' static_configs: - targets: ['<your-node-exporter-ip>:9100'] ``` #### 2. 中间件指标监控 对于数据库、缓存服务等中间件的监控,通常需要特定的 Exporter,例如 `MySQL Exporter`、`Redis Exporter` 等,它们分别用于采集 MySQL 和 Redis 的运行状态数据[^1]。 - **MySQL 监控** 安装 `mysqld_exporter` 并连接到 MySQL 数据库: ```bash wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.0/mysqld_exporter-0.15.0.linux-amd64.tar.gz tar xvfz mysqld_exporter-0.15.0.linux-amd64.tar.gz cd mysqld_exporter-0.15.0.linux-amd64 MYSQL_USER=root MYSQL_PASSWORD=yourpassword ./mysqld_exporter ``` 配置 Prometheus 抓取该 Exporter: ```yaml - job_name: 'mysql' static_configs: - targets: ['<your-mysql-exporter-ip>:9104'] ``` - **Redis 监控** 安装 `redis_exporter` 并启动: ```bash wget https://github.com/oliver006/redis_exporter/releases/download/v1.44.0/redis_exporter-v1.44.0.linux-amd64.tar.gz tar xvfz redis_exporter-v1.44.0.linux-amd64.tar.gz cd redis_exporter-v1.44.0 ./redis_exporter -redis.addr <redis-host>:6379 ``` Prometheus 配置如下: ```yaml - job_name: 'redis' static_configs: - targets: ['<your-redis-exporter-ip>:9121'] ``` #### 3. 数据可视化(GrafanaGrafana 是一个强大的可视化工具,支持多种数据源,包括 Prometheus。用户可以通过 Grafana 构建丰富的仪表板来展示监控指标。 - **安装与配置 Grafana** 使用 Docker 快速部署: ```bash docker run -d -p 3000:3000 --name grafana grafana/grafana ``` 登录 `http://<your-grafana-ip>:3000`,默认用户名密码为 `admin/admin`,首次登录后需更改密码。 - **添加 Prometheus 数据源** 进入 Grafana 的 “Configuration > Data Sources” 页面,点击 “Add data source”,选择 Prometheus,并填写 Prometheus Server 的访问地址(如 `http://<your-prometheus-server-ip>:9090`)。 - **导入预设仪表板** Grafana 社区提供了大量预设仪表板模板,例如: - Node Exporter:ID `1860` - MySQL Exporter:ID `11322` - Redis Exporter:ID `11836` 在 Grafana 的 “Create > Import” 页面输入模板 ID 即可导入对应的监控面板。 #### 4. 基于 Docker 的一键部署方案 如果希望快速搭建完整的监控系统,可以使用集成好的 Docker 镜像,例如包含 PrometheusNode Exporter、Process ExporterGrafana 的镜像包[^3]。 ```bash gunzip -c prometheus_grafana.tar.gz | sudo docker load docker run -tid --name prometheus-grafana --network=host candy.com/prometheus-grafana:build1 ``` 访问 Prometheus 地址:`http://ip:9999`,Grafana 地址:`http://ip:3000`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值