说明:本次搭建会启动很多容器,请避免端口冲突,由于是docker部署,需要提前搭建好docker环境,镜像加速器之类的。
目录
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应用需要依靠actuator及micrometer,通过暴露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

493

被折叠的 条评论
为什么被折叠?



