霍格沃兹测试学院 docker 实战

孙高飞 · November 28, 2019 · Last by liuqi replied at April 20, 2020 · 2009 hits

课程帖

课堂作业 一

使用docker搭建一个可以访问的jenkins服务

使用docker搭建一个可以访问的testlink服务

使用container模式搭建前端和后端服务

普罗米修斯的配置文件

启动node_exporter :nohup ./node_exporter/node_exporter >> node_exporter.log 2>&1 &

global:
scrape_interval: 15s
evaluation_interval: 15s

scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['docker.testing-studio.com:9100']
- job_name: 'mysql'
static_configs:
- targets: ['docker.testing-studio.com:9104']

docker run --name prometheus -d -p 9090:9090 -v pwd/prometheus.yml:/etc/prometheus/prometheus.yml -v pwd/rules/:/etc/prometheus/ prom/prometheus

cpu使用率:100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)
内存使用率:100*(node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes

磁盘使用:100.0 - 100 * ((node_filesystem_avail_bytes{mountpoint=~"/", device!="rootfs"} / 1000 / 1000 ) / (node_filesystem_size_bytes{mountpoint=~"/", device!="rootfs"} / 1024 / 1024))

启动grafana

docker run --name grafana -d -p 8011:3000 grafana/grafana

模板地址:https://grafana.com/grafana/dashboards/8919

使用普罗米修斯+grafana监控mysql

docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME="root:1qaz9ol.@(docker.testing-studio.com :8888)/mysql" prom/mysqld-exporter

教学项目

https://github.com/ycwdaaaa/techUI

docker 搭建分布式UI自动化框架

docker run --name=hub -p 5001:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium
docker run --name=chrome -p 5902:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium
VNC密码是:secret

课堂作业二

在学习了jenkins课程之后,搭建起全套的CI流程。

k8s部署grid

hub

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: selenium-hub-58
labels:
name: selenium-hub-58
spec:
replicas: 1
template:
metadata:
labels:
name: selenium-hub-58
spec:
containers:
- name: selenium-hub-58
image: selenium/hub:3.7.1-beryllium
imagePullPolicy: IfNotPresent
ports:
- containerPort: 4444
env:
- name: GRID_TIMEOUT
value: "0"
- name: GRID_THROW_ON_CAPABILITY_NOT_PRESENT
value: "true"
- name: GRID_NEW_SESSION_WAIT_TIMEOUT
value: "-1"
- name: GRID_BROWSER_TIMEOUT
value: "15000"
- name: GRID_TIMEOUT
value: "30000"
- name: GRID_CLEAN_UP_CYCLE
value: "30000"
- name: JAVA_OPTS
value: "-Xmx512m"
- name: GRID_MAX_SESSION
value: "30"
---
apiVersion: v1
kind: Service
metadata:
name: selenium-hub-58
labels:
name: selenium-hub-58
spec:
type: NodePort
ports:
- port: 4444
targetPort: 4444
name: port0
nodePort: 30000
selector:
name: selenium-hub-58
sessionAffinity: None
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: selenium-node-chrome-58
labels:
name: selenium-node-chrome-58
spec:
replicas: 1
template:
metadata:
labels:
name: selenium-node-chrome-58
spec:
containers:
- name: selenium-node-chrome-58
image: selenium/node-chrome-debug:3.7.1-beryllium
imagePullPolicy: IfNotPresent
ports:
- containerPort: 5900
env:
- name: HUB_PORT_4444_TCP_ADDR
value: "selenium-hub-58"
- name: HUB_PORT_4444_TCP_PORT
value: "4444"
- name: NODE_MAX_INSTANCES
value: "30"
- name: NODE_MAX_SESSION
value: "30"
- name: NODE_REGISTER_CYCLE
value: "5000"
- name: DBUS_SESSION_BUS_ADDRESS
value: "/dev/null"
resources:
requests:
memory: "500Mi"
volumeMounts:
- mountPath: "/dev/shm"
name: "dshm"
volumes:
- name: "dshm"
emptyDir:
medium: "Memory"
imagePullSecrets:
- name: docker4paradigm

---
apiVersion: v1
kind: Service
metadata:
name: selenium-node-chrome-58
labels:
name: selenium-node-chrome-58
spec:
type: NodePort
ports:
- port: 5900
targetPort: 5900
name: port0
nodePort: 30001
selector:
name: selenium-node-chrome-58
sessionAffinity: None

课堂作业三

编写可以作为jenkins slave 机器的 dockerfile并制作镜像,连接到jenkins上。

FROM centos

ADD entrypoint.sh /root
ADD jdk /opt/java-1.8

ENV M2_HOME=/usr/local/maven
ENV M2=$M2_HOME/bin
ENV JAVA_HOME=/opt/java-1.8
ENV PATH=$JAVA_HOME:$M2:$PATH

RUN yum install -y wget openssh-server vim git openssh-clients \
&& /usr/bin/ssh-keygen -A \
&& wget http://mirror.olnevhost.net/pub/apache/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz \
&& tar xvf apache-maven-3.0.5-bin.tar.gz \
&& mv apache-maven-3.0.5 /usr/local/maven \
&& ssh-keygen -t rsa -f /root/.ssh/id_rsa -N '' \
&& cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys \
&& chmod 600 /root/.ssh/authorized_keys \
&& echo "StrictHostKeyChecking no" > /root/.ssh/config \
&& echo "UserKnownHostsFile /dev/null" >> /root/.ssh/config \
&& echo 1qaz9ol.|passwd --stdin root \
&& echo "export M2_HOME=/usr/local/maven" >> /root/.bashrc \
&& echo "export M2=$M2_HOME/bin" >> /root/.bashrc \
&& echo "export JAVA_HOME=/opt/java-1.8" >> /root/.bashrc \
&& echo "export PATH=$JAVA_HOME:$M2:$PATH" >> /root/.bashrc



ENTRYPOINT ["/bin/bash", "/root/entrypoint.sh"]
FROM selenium/node-chrome-debug:3.7.1-beryllium

USER root

ADD run.sh /root/


RUN apt-get update \
&& apt-get -y install ttf-wqy-microhei ttf-wqy-zenhei \
&& apt-get clean \
&& mkdir -p mkdir -p ~/.vnc \
&& x11vnc -storepasswd work123 ~/.vnc/passwd
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 33 条回复 时间 点赞

1

sudo docker exec  -it CONTAINER ID /bin/bash 
cat /var/jenkins_home/secrets/initialAdminPassword
去找初始密码



2.testlink可访问搭建

3.container模式搭建前后端分离

4.prometheus 监控搭建

5.grafana 可视化

##作业1

##作业2

##作业3

##作业4

##作业5

#作业一:使用docker搭建一个可以访问的jenkins服务

#作业二:使用docker搭建一个可以访问的testlink服务

#作业三:使用container模式搭建前端和后端服务

#作业四:配置prometheus

#作业五:启动grafana

#作业六:使用普罗米修斯+grafana监控mysql

蚊子大佬666啊

我是docker logs myjenkins找的密码嘻嘻

jenkins

使用container模式搭建前端和后端服务

重点:

  1. 端口映射: -p参数
  2. 在日志中查看密码: docker logs 容器名称
  3. 在容器中(不是在宿主机查看)查看密码: docker exec --it 容器名称 /bin/bash 备注:下面这一步安装失败了没事,可以跳过,可以后续根据需要安装~ 主页:

一、搭建jerkins服务:

端口映射到8090到端口,然后根据提示去获取密码,进入后安装依赖

二、搭建testklink服务,这个搭建起来不知道怎么用:

三、前后端分离

四、搭建grafana,用老师的 node exporter可以获取数据 - targets: ['docker.testing-studio.com:9100'],自己的获取到都都N/A,我看prometheus上target是对的,graph也能获取数据,grafana不知道为什么获取不到性能数据:


1、从docker hub上拉取Jenkins:docker pull jenkins/jenkins:lts
2、在本地建立容器的挂载目录:mkdir ~/Documents/Jenkins
3、启动Jenkins,映射8080和50000端口,容器名字为Jenkins:docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v ~/Documents/Jenkins:/var/jenkins_home jenkins/jenkins:lts
4、输入URL:http://localhost:8080/进行访问
4、获取Jenkins初始密码:docker exec -it jenkins bash
cat /var/jenkins_home/secrets/initialAdminPassword

求助:
问题1:我进到grafa里了,但是加载模板报错



监控mysql

老师,写一个dockerfile,启动一个tomcat web服务器和mysql数据库时,是不是就要用到container模式?

老师,怎么没看到prometheus自己的一些性能监控呢?之前不是配置了吗?
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
该如何查看呢?

为什么监控不到自己的主机呢?

Mr.武 回复

这里能切换主机

Yvan 回复

你需要自己配置仪表盘, 默认肯定是什么都不显示的

拉宝 回复

container模式是要用至少2个容器的, 只有一个docker file怎么启动呢?

使用普罗米修斯+grafana监控mysql:

孙高飞 回复

这个主机列表里面没有我的主机。。。

Mr.武 回复

你看一下你的普罗米修斯中的target, 看看你自己的主机的node_exporter是UP状态么?

孙高飞 回复

是UP状态,也可以使用命令查到CPU占用率,就是在grafana中看不到我的主机

26Floor has been deleted
Mr.武 回复

这个就很蛋疼了。。。。你用的mac么? 我之前遇到一位同学在mac上怎么都不行 ,在阿里云上找了一个linux机器就好了

我的也是mac,在grafana上获取不到数据,应该是grafana那个获取数据的方法取不到Mac的值,我单独edit一个,把获取数据的公式换成prometheus的公式就可以拿到数据

孙高飞 回复

嗯,使用的Mac,我用docker.testing那个就可以监控到。。。很尴尬,grafana不是使用的prometheus的数据吗,但是我可以查到CPU信息之类的

31Floor has been deleted
# 运行hub
docker run --name=hub -p 5001:4444 \
-e GRID_TIMEOUT=0 \
-e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true \
-e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 \
-e GRID_BROWSER_TIMEOUT=15000 \
-e GRID_TIMEOUT=30000 \
-e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium

# 运行节点
docker run --name=chrome1 \
-e NODE_MAX_INSTANCES=6 \
-e NODE_MAX_SESSION=6 \
-e NODE_REGISTER_CYCLE=5000 \
-e HUB_PORT_4444_TCP_ADDR=hub_ip \
-e HUB_PORT_4444_TCP_PORT=hub_port \
-v /dev/shm:/dev/shm \
-d selenium/node-chrome:3.7.1-beryllium

课堂作业一

1.使用docker搭建一个可以访问的jenkins服务

2.搭建可访问的TestLink服务

3.使用container模式搭建前端和后端服务

4.prometheus监控数据

5.grafana数据可视化

1:使用docker搭建一个可以访问的jenkins服务

1、使用docker搭建一个可以访问的jenkins服务

2、使用docker搭建一个可以访问的testlink服务

3、使用container模式搭建前端和后端服务

4、prometheus 监控页面

5、grafana 监控可视化

6、MySQL 监控可视化

36Floor has been deleted

课堂作业 一
1、使用docker搭建一个可以访问的jenkins服务
http://192.168.99.100:8080/

2、普罗米修斯

3、grafan

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up