华硕路由器修改本地Hosts局域网DNS转发设置

引子

联通网络,入户给配了智能光猫(集成光猫和无线路由器的功能),192.168.0.1 是智能光猫的地址。光猫后面就是华硕路由器,华硕路由器自动获取的 IP 地址 192.168.0.2 ,路由器本身的登录地址改为192.168.50.1,路由器的子设备为192.168.50.xxx。
在路由器的子设备中有一个 Synology(群辉) 的 Nas,端口映射到外网,有真实的外网 IP 地址,外网可以正常访问。但从光猫、路由器内的局域网中,都无法直接访问这个外网 IP 地址,Ping 也无法 Ping 通。

问题

综上,尴尬的事情就来了,Nas 绑定的域名无法在我的局域网内访问 Nas,因为域名指向的是我 Nas 的外网 Ip 地址,但是这个 Ip 并不能在我家的局域网内访问,所以,一旦连接上我家的 WIFI 后,访问我的 Nas 域名,就要自动指向到我 Nas 的内网 IP 地址。

解决

既然只有连接到我家的 Wifi 时需要将 Nas 的域名指向到我家的内网 Ip 地址,那么我就从路由器动手,在路由器作为 DNS 服务器的时候,将域名的请求指向 Nas 内网 IP 。

修改路由器 Hosts

华硕路由器本身无法直接修改 Hosts 文件,因为文件修改权限不够,就像 iOS 需要越狱、Android 需要 Root 一样,路由器也需要获取到管理员权限,才能对其核心文件进行修改,所以分两步,首先给路由器刷梅林固件,然后再使用 WinSCP 连接路由器,改 Hosts 文件。

华硕路由器刷梅林固件

因为这个不是本篇文章的主要内容,我就简单略过了,梅林固件的安装也非常简单,和安装原版固件基本相同。

升级固件

系统管理 - 固件升级 - 新固件文件,选择梅林固件之后,点击上传,然后按照提示省级,重启就好了。

img

建议
如果可以的话,还是进入系统管理 - 恢复/导出/上传设置里面把配置文件先备份一下,以后也方便。

初始化路由器

升级完成进入https://router.asus.com,会出现自动设置向导,点击 跳过设置向导 (因为等下要恢复出厂),进入 系统管理 - 系统设置,勾选 Format JFFS partition at next boot,点击 应用本页面设置。
img

恢复路由器出厂设置

进入 系统管理 - 恢复/导出/上传设置,在 原厂默认值 一栏,点击 恢复 按钮,恢复出厂设置。

重新配置路由器

重新进入https://router.asus.com,现在可以根据 设置向导 来配置你的路由器登陆密码和wifi密码,或者你可以稍后自己设置。

配置软件中心

进入系统管理 - 系统设置,勾选 Enable JFFS custom scripts and configs,点击 应用本页面设置 (此步关系到软件中心能否正常使用)

这样,华硕路由器的梅林系统就安装完成了,安装梅林系统的同时,路由器的权限也随之获取了,我们下一步就开始干正事。

配置 Hosts 文件

因为已经取得了路由器的控制权限,所以我们首先将路由器的SSH功能开启,然后利用 WinSCP 登录到路由器中。

开启路由器 SSH 功能

进入系统管理 - 系统设置 - SSH 连接,按照我的截图进行设置即可。

注意
我截图里面选择的是只允许有线连接,如果你是无线连接的记得选择 Wifi 可以使用 SSH ,更改 LAN only 那一项即可。

img

建立 SSH 连接

用浏览器打开下面的链接
ssh://admin@192.168.50.1

注意
上面SSH 链接的 admin 是我路由器的管理员帐号。
192.167.50.1 是我路由器的访问地址

如果在 Mac 下可能出现以下错误

复制代码

1
2
3
4
5
6
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.

这个错误我没有列全,因为涉及到地址等信息,如果出现以上错误,在 Mac 本地删除 /Users/你的 mac 用户名/.ssh/known_hosts中的所有文件即可。
Finder 中按 shift + cmd + G 或者直接 点击菜单上的 前往 - 前往本地文件夹
WX20180824-113238
删除该文件夹下的所有内容
WX20180824-113310

我们再次连接,输入 yes ,进行确认。
WX20180824-113737

然后输入路由器后台的登录密码,并出现以下画面,表示登录成功。
WX20180824-113800

ssh登录到路由器

引入 Hosts

登入完成后,点击最上方的…,直到进入根目录,找到 jffs 目录,进入该目录。然后在 jffs 目录下,右键单击,新建一名为dnsmasq.conf.add的文件,在文件中输入

复制代码

1
addn-hosts=/jffs/configs/hosts

完成后,点击左上角保存按钮保存该文件,然后关闭。

配置 Hosts

然后进入该文件夹下的 configs 文件夹,,右键单击,新建一名为hosts的文件,在文件中输入你需要的 hosts 内容

复制代码

1
2
192.168.50.218 www.swimminghao.top
192.168.50.1 www.example.com

完成后,点击左上角保存按钮保存该文件,然后关闭。

重启 DNS 服务

打开刚才链接的 SSH 命令窗口,输入

复制代码

1
service restart_dnsmasq

WX20180824-113807
重启dnsmasq服务,来使hosts生效。
重启路由器后依然存在并且有效。这样,就可以了~!

l

word图片、表格自动编号

在写论文、报告或标书时,为了使数据更加直观,文档中会使用大量图片、表格或图表等元素。

如果图片、表格或图表太多,为了对它们进行区分,我们会在每一张图片(或表格、图表)底部进行编号。编号样式通常为:图1,图2,图3……或者为表1,表2,表3……等。

对于这种情况,许多人会手工输入图片的编号。真的是头晕眼花。还容易出错!

其实,学会利用Word题注+查找和替换功能就能为图片自动编号,不仅能避免手工输入编号带来的烦恼,还非常省事!1000张图片自动编号,10秒搞定

图片自动编号

一、先设置章节

使用word 自带的章节样式,例如:标题一、标题二,不然和标题联动的设置都会出问题

![](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/2023-04-05 18.32.10_20230405193155.gif)

二、为图片添加题注

Word中题注的作用就是给文档里的图片、表格、图表或公式等元素添加自动标注,即编号和注释文字。下面以为图片添加题注为例进行讲解(注:为表格、图表或公式添加题注的方法与为图片添加题注基本相同)。

1
2
3
4
5
6
7
1. 选中图片,点击【引用】-【题注】-【插入题注】。

2. 打开“题注”对话框,这里是为图片添加题注,所以我们在“标签”下拉列表中选择“图”。

3. 如果需要对图片设置说明信息,则在题注编号后面输入相应的说明文字,然后单击“确定”按钮即可。

4. 这样我们就为第一张图片加好了题注。

![](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/2023-04-05 18.13.45_20230405181431.gif)

技巧提示:在“题注”对话框的“位置”下拉列表框中还可以设置题注位于对象的上方或是下方。默认情况下为“所选项目下方”选项,表示题注位于对象的下方。

三、为图片批量编号

单张图片添加题注学会了,那么,若要为文档中的其他图片添加题注,是不是用相同的方法呢?这个方法虽然也可行,但不够高效。

接下来,教你2个批量为图片添加编号的小妙招:

利用【F4】快捷键(mac版使用CMD+Y)

在Word里用过【F4】快捷键的朋友就会知道,它的作用是重复上一步操作。因此,当我们插入一次题注编号后,按【F4】键,可重复插入编号(如要添加注释说明文字,直接在编号后输入即可)。

![](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/2023-04-05 18.15.23_20230405181540.gif)

利用查找和替换

Word里的查找替换功能非常强牛,特别是在批量处理相同格式的内容时,使用该功能效率倍增。因此,我们可以利用查找和替换来批量添加编号。

1
2
3
4
5
6
7
8
9
10
11
12

(1)选择题注,按下【Alt+F9】快捷键,切换到域代码状态。

(2)选中域代码,这里不包含后面的图片注释文字。按【Ctrl+C】键复制,再按【Ctrl+H】键打开“查找和替换”对话框。

(3)在查找文本框中输入【^g】;在替换文本框中输入【^&^p^c】,然后点击【全部替换】按钮。

(4)此时,所有图片下方均添加了编号。按下【Ctrl+A】键全选所有内容,再按【F9】刷新,最后,再按【Alt+F9】切回正常状态,这样就完成了图片的编号。

代码解析:^g 表示图片;^& 指要查找的内容;^p 表示换行符(也就是换一行);^c 表示剪切版的内容(即第二步中复制的代码内容)。

(5)然后,在每张图片的编号后添加上相应的说明文字即可。

![](https://cdn.jsdelivr.net/gh/swimminghao/picture@main/img/2023-04-05 18.16.45_20230405181844.gif)

四、“图”字和数字直接删掉空格,最后添加空格

1
2
3
4
5
6
7
8
9
10
11
12
1. 右击图片题注,样式里全选所有图题注

2. 在查找内容处,输入:空格,替换处什么都不填。

3. 全部替换删掉图字和数字之间的空格

4. 选中使用通配符,在查找内容处,输入:(*)^13,替换处,输入:\1 ^13

5. 单击【全部替换】。


注:要是现成的图题注,需要先去掉所有空格;再在查找内容处,输入:([一-龥][一-龥])(*)^13,替换处,输入: \1\2^13;最后单击【全部替换】

表格自动编号

  1. 粘贴如下代码,创建宏,并设置题注标题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub 表格题注()
'
'
If ActiveDocument.Tables.Count >= 1 Then
Set act_Doc = ActiveDocument
For Each otable In act_Doc.Tables
CaptionLabels.Add Name:="表星星星"
With otable.Range.InsertCaption(Label:="表星星星", Position:=wdCaptionPositionAbove)
'Position:=wdCaptionPositionBelow
End With
Next
End If

End Sub
  1. 使用宏将所有表格命名为”表星星星”格式,使用第一张表添加题注,接下来复制新建的表格题注,例:表1 ,(注:必须复制“表1”和后面的空格)
  2. 然后查找替换,使用通配符,查找内容:表星星星*表[星]{1,}*[0-9]{1,},替换内容:^c
l

Mac宿主机访问Docker容器网络

img

macOS上面Docker实现方式和Linux不一样,简单说macOS将Docker服务端(docker daemon守护进程)部署在一台虚拟机里面,而Linux里面Docker服务端直接作为宿主机的一个进程。这导致两种平台上Docker容器和其宿主机的网络通信方式有很大不同。

简单的表象是,Linux主机上会有一个docker0网卡,而macOS上没有docker0网卡;带来的区别是Linux上部署的容器应用默认和宿主机就是互联互通的,而macOS宿主机不能直接连通容器。

Linux查看docker0网卡

在阿里云ECS里面启动了Docker服务,终端输入ifconfig查看docker0网卡(容器默认使用bridge模式部署,都通过这个docker0网卡与宿主机通信)

img

Linux宿主机ping容器

启动一个nginx容器(默认使用bridge模式):

1
docker run -d --name nginx nginx

查找nginx容器ip地址:

1
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nginx

在宿主机使用curl http://172.17.0.4访问容器中nginx页面,可以看到返回结果,说明宿主机可以连通容器网络。

img

Linux容器ping宿主机和其它容器

容器里面ping宿主机可以ping得通,说明容器可以连通宿主机;容器里面ping其它容器可以ping得通,说明容器之间的网络也互通。

img

Linux查看bridge模式网络信息

Docker默认使用bridge模式启动容器服务,使用docker network inspect bridge命令查看bridge模式网络信息。

img

由此可见,Linux宿主机与容器网络是互联互通的

macOS宿主机ping容器

在macOS里面启动nginx和ubuntu容器,使用docker inspect命令获取nginx和ubuntu容器的ip地址。

img

由上可见,macOS宿主机与容器网络默认不连通;并且宿主机ping容器网关地址(172.17.0.1)也ping不通

macOS容器ping其它容器

进入ubunut容器,如果没有安装过相关命令工具先参照下面方法安装网络工具包。

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
ubuntu安装curl:
apt install curl
(使用curl ifconig.me查询本机ip)

ubuntu安装ipconfig:
apt-get install net-tools

ubuntu安装ping:
apt-get install iproute2

ubuntu安装ip:
apt-get install iproute2

ubuntu安装netcat经典版本:
apt-get -y install netcat-traditional

ubuntu安装telnet客户端:
apt-get install telnet

ubuntu安装telnet服务端:
apt-get install telnetd

ubuntu安装lsof:
apt-get install lsof安装lsof

ubuntu启动telnet服务(启动后使用lsof可以看到23端口被使用,macOS telnet服务):
/etc/init.d/openbsd-inetd restart启动telnet

使用ifconfig查看ubuntu容器ip地址是172.17.0.4,容器本地地址是127.0.0.1,注意这个127.0.0.1是ubuntu容器的localhost地址,和宿主机的127.0.0.1不是一回事。

在容器里ping容器网关地址(172.17.0.1)可以ping通,ping其它容器(nginx容器ip地址172.17.0.5)可以ping通,访问nginx容器主页可以成功,说明容器之间的网络是互通的。

img

macOS容器查看宿主机ip地址

Docker for Mac有两个内置的域名host.docker.internalgateway.docker.internal分别表示宿主机ip和网关ip。

容器中ping host.docker.internal得到宿主机ip地址192.168.65.2,ping gateway.docker.internal得到同样的ip地址,ping 192.168.65.1也可以ping通。奇怪为什么默认把宿主机和网关ip都设置为192.168.65.2而不是192.168.65.1。

img

查看Docker For Mac配置信息,发现192.168.65.2地址和默认设置的网段有关。

img

macOS容器ping宿主机真实ip地址

使用curl ifconfig.me获取运营商分配的”真实”ip地址,使用ifconfig | grep "inet " | grep -v 127.0.0.1获取宿主机局域网ip地址,在ubuntu容器里面都可以ping通。

img

容器如果需要连接macOS宿主机上的服务,比如MySQL数据库,那么数据库host地址可以使用192.168.65.2,也可以使用192.168.31.208,但显而易见使用192.168.65.2更为可靠。

macOS部署mindoc作为在线文档工具

mindoc是一款在线文档管理系统,其它就不多介绍了,自己看官网吧。

为了方便文档数据备份和迁移,我使用本地MySQL数据库替换默认的sqlite3数据库,将容器内文件上传目录映射到本地目录,这样以后我添加的所有文档都保存在macOS本地。

  1. 先使用内置sqlite3数据库默认启动一个mindoc服务

    1
    docker run -p 8181:8181 --name mindoc -e httpport=8181 -d registry.cn-hangzhou.aliyuncs.com/mindoc/mindoc:v2.0-beta.2
  2. 进入mindoc容器,将容器里面/mindoc/conf/app.conf拷贝到宿主机

  3. 在宿主机app.conf填写启动配置信息,主要是数据库配置信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    ####################MySQL 数据库配置###########################
    #支持MySQL和sqlite3两种数据库,如果是sqlite3 则 db_database 标识数据库的物理目录
    #db_adapter="${MINDOC_DB_ADAPTER||sqlite3}"
    #db_host="${MINDOC_DB_HOST||127.0.0.1}"
    #db_port="${MINDOC_DB_PORT||3306}"
    #db_database="${MINDOC_DB_DATABASE||./database/mindoc.db}"
    #db_username="${MINDOC_DB_USERNAME||root}"
    #db_password="${MINDOC_DB_PASSWORD||123456}"

    db_adapter=mysql
    db_host=192.168.65.2(宿主机ip,我这里也可以写192.168.31.208,但局域网ip容易变动因此不用)
    db_port=3306
    db_database=mindoc
    db_username=XXXXXX
    db_password=XXXXXX
  4. 在宿主机创建mindoc数据库,字符集使用utf8mb4,排序规则使用utf8mb4_general_ci

  5. 关闭并删除原容器,将本地app.conf映射到/mindoc/conf/app.conf,将本地文件上传目录映射到/mindoc/uploads,重新部署mindoc服务

    1
    docker run -p 8181:8181 --name=mindoc --restart=always -v /Users/XXX/XXX/app.conf:/mindoc/conf/app.conf -v /Users/XXX/XXX/uploads:/mindoc/uploads -e httpport=8181 -e MINDOC_ENABLE_EXPORT=true -d registry.cn-hangzhou.aliyuncs.com/mindoc/mindoc:v2.0-beta.2
  6. 使用docker logs查看容器日志,如果初始化成功会在宿主机mindoc数据库创建相关的表;如果出现数据库连接异常,有可能需要修改MySQL配置文件将bing-address改为0.0.0.0,然后重启MySQL即可;如果数据库还连接不上,检查数据库连接用户是否有操作mindoc表的权限,配置好即可

macOS宿主机连接容器网络

查到几种方式,比较一下发现使用docker-connector最简单。

安装docker-connector服务

  1. 使用brew安装docker-connector
1
brew install wenjunxiao/brew/docker-connector
  1. 执行下面命令将docker所有 bridge 网络都添加到docker-connector路由
1
docker network ls --filter driver=bridge --format "{{.ID}}" | xargs docker network inspect --format "route {{range .IPAM.Config}}{{.Subnet}}{{end}}" >> /usr/local/etc/docker-connector.conf

(/usr/local/etc/docker-connector.conf是安装docker-connector后生成的配置文件)

  1. 使用sudo启动docker-connector服务
1
sudo brew services start docker-connector
  1. 使用下面命令创建wenjunxiao/mac-docker-connector容器,要求使用 host 网络并且允许 NET_ADMIN
1
docker run -it -d --restart always --net host --cap-add NET_ADMIN --name connector wenjunxiao/mac-docker-connector
  1. docker-connector容器启动成功后,macOS宿主机即可访问其它容器网络

img

其它补充

如果macOS里面需要使用代理,proxychains4是比较好的选择。

1
2
3
1. 使用brew install proxychains4进行安装
2. 在/usr/local/Cellar/proxychains-ng/4.8.1/etc/proxychains.conf配置Socks5地址
3. 使用proxychains4 command走代理访问,不加proxychains4的command不受影响

参考资料

l

英语作文模板

答题性议论文

Currently,there is a widespread concern over(the issue that)作文题目.It is really an important concern to every one of us.As a result,we must spare no efforts to take some measures to solve this problem.

As we know that there are many steps which can be taken to undo this problem.First of all,途径一.In addition,another way contributing to success of the solving problem is 途径二.

Above all,to solve the problem of 作文题目,we should find a number of various ways.But as far as I am concerned,I would prefer to solve the problem in this way,that is to say,方法.

利弊型的议论文

Nowadays,there is a widespread concern over(the issue that)作文题目.In fact,there are both advantages and disadvantages in 题目议题.Generally speaking,it is widely believed there are several positive aspects as follows.Firstly,优点一.And secondly 优点二.

Just As a popular saying goes,”every coin has two sides”,讨论议题 is no exception,and in another word,it still has negative aspects.To begin with,缺点一.In addition,缺点二.

To sum up,we should try to bring the advantages of 讨论议题 into full play,and reduce the disadvantages to the minimum at the same.In that case,we will definitely make a better use of the 讨论议题.

议论文的框架

  1. 不同观点列举型(选择型)

There is a widespread concern over the issue that 作文题目.But it is well known that the opinion concerning this hot topic varies from person to person.A majority of people think that 观点一.In their views there are two factors contributing to this attitude as follows: in the first place,原因一.Furthermore,in the second place,原因二.So it goes without saying that 观点三.

People,however,differ in their opinions on this matter.Some people hold the idea that 观点二.In their point of view,on the one hand,原因一.On the other hand,原因二.Therefore,there is no doubt that 观点三.

As far as I am concerned,I firmly support the view that 观点一或二.It is not only because原因一 ,but also because原因二 .The more we are aware of the significance of ____,the more benefits we will get in our daily study and job.

  1. 谚语警句性议论文

It is well known to us that the proverb: “谚语“has a profound significance and value not only in our job but also in our study.It means__谚语的含义__.The saying can be illustrated through a series of examples as follows.(also theoretically)

A case in point is 例子一.Therefore,it is goes without saying that it is of great of importance to practice the proverb 谚语.

With the rapid development of science and technology in China,an increasing number of people come to realize that it is also of practical use to stick to the saying: 谚语.The more we are aware of the significance of this famous saying,the more benefits we will get in our daily study and job.

  1. 问题解决型作文模板

With the____of____,So it is of great importance for us to____.On the one hand____,On the other hand____,

However,we have figured out many ways to_____.Firstly,____So long as____.Secondly____,Thirdly____.In fact____,That is because____.

In a word,________.

  1. 现象说明文

Recently____ ,what amazes us most is____,it is ture that____.

There are many reasons explaining____.The main reason is____.

what is more____.thirdly____.As a result____.

Considering all there,____.For one thing____,for another____

In Conclusion____.  一种事物或现象(负面意义倾向)

l

Grafana + Prometheus + node_exporter性能监控

一、背景

在用Jmeter执行性能测试时,为了更好得收集压测数据,并展示性能测试结果数据,需要搭建一套监控平台。有了平台后测试人员可以随时通过查看性能压测数据,对比历史数据,分析性能优化结果。

二、服务准备

1、MySQL用户授权

需要对用户进行授权才能收集监控数据信息

  • 首先,登录mysql服务,这里以docker为例

    highlighter- applescript

    1
    2
    3
    docker exec -it mysqlserver sh

    mysql -uroot -p
  • 然后,创建用户并开启远程登录。

    highlighter- n1ql

    1
    2
    #CREATE USER '你的账号'@'%'  IDENTIFIED BY '你的密码';
    CREATE USER 'exporter'@'%' IDENTIFIED BY '123123123';
  • 然后,授予查看主从运行、线程,及所有数据库的权限

    highlighter- lasso

    1
    2
    #GRANT PROCESS, REPLICATION CLIENT ON 库名.* TO '你的账号'@'%';
    GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'exporter'@'%';
  • 然后,授予监控MySQL server运行过程中的资源消耗、资源权限

    highlighter- lasso

    1
    2
    #GRANT SELECT ON performance_schema.* TO '你的账号'@'%';
    GRANT SELECT ON performance_schema.* TO 'exporter'@'%';
  • 最后,更新用户权限后,刷新权限表

    highlighter- abnf

    1
    flush privileges;

2、部署服务

docker-compose.yml

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
version: '2'

networks:
monitor:
driver: bridge

services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
hostname: prometheus
restart: always
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
networks:
- monitor

grafana:
image: grafana/grafana:latest
container_name: grafana
hostname: grafana
restart: always
ports:
- "3000:3000"
networks:
- monitor

node-exporter:
image: quay.io/prometheus/node-exporter:latest
container_name: node-exporter
hostname: node-exporter
restart: always
ports:
- "9100:9100"
networks:
- monitor

cadvisor:
image: google/cadvisor:latest
container_name: cadvisor
hostname: cadvisor
restart: always
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
ports:
- "8899:8080"
networks:
- monitor

redis-exporter:
image: oliver006/redis_exporter
container_name: redis-exporter
hostname: redis-exporter
restart: always
ports:
- "9121:9121"
command:
- "--redis.addr=redis://127.0.0.1:6379"
networks:
- monitor

mysql_exporter:
image: prom/mysqld-exporter
container_name: mysql-exporter
hostname: mysql-exporter
restart: always
ports:
- "9104:9104"
environment:
DATA_SOURCE_NAME: 'exporter:123123123@(127.0.0.1:3306)'
networks:
- monitor

docker-compose.yml当前目录下,创建prometheus.yml文件,它将prometheusexporter服务关联起来。

prometheus.yml

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
34
35
36
37
38
39
# Prometheus全局配置项
global:
scrape_interval: 15s # 设定抓取数据的周期,默认为1min
evaluation_interval: 15s # 设定更新rules文件的周期,默认为1min
scrape_timeout: 15s # 设定抓取数据的超时时间,默认为10s


# scape配置
scrape_configs:
# job_name默认写入timeseries的labels中,可以用于查询使用
- job_name: 'prometheus'
scrape_interval: 15s # 抓取周期,默认采用global配置
static_configs:
- targets: ['192.168.50.218:9090'] # prometheus所要抓取数据的地址,即instance实例项

- job_name: 'node'
scrape_interval: 8s
static_configs:
- targets: ['192.168.50.218:9100']
labels:
instance: node

- job_name: 'cadvisor'
static_configs:
- targets: ['192.168.50.218:8899']
labels:
instance: cadvisor

- job_name: 'redis_exporter'
static_configs:
- targets: [ '192.168.50.218:9121' ]
labels:
instance: redis

- job_name: 'mysql_exporter'
static_configs:
- targets: [ '192.168.50.218:9104' ]
labels:
instance: mysql

docker-compose.yml以及prometheus.yml文件都准备好后,在当前目录下创建一个run.sh的脚本,方便快速启动服务,不用这个脚本,用脚本中的命令也可以。

run.sh

1
2
3
4
#!/usr/bin/env bash
docker-compose down
docker-compose rm
docker-compose up -d --build

全部启动后

1
2
3
cd ~/data/prometheus

docker-compose ps

img

启动成功,后就可以访问:

  • http://192.168.50.218:9090 :prometheus的原生web-ui
  • http://192.168.50.218:3000 :Grafana开源的监控可视化组件页面,默认用户及密码为admin
  • http://192.168.50.218:9100 :收集服务器(node-exporter)的metrics
  • http://192.168.50.218:8899 :收集docker(cadvisor)的metrics
  • http://192.168.50.218:9100 :收集redis(redis-exporter)的metrics
  • http://192.168.50.218:9104 :收集mysql(mysql-exporter)的metrics

打开 http://192.168.50.218:9090/targets ,如果State都是UP即代表Prometheus工作正常,如下图所示:

img

三、服务配置

1、配置数据源

首先,服务启动后,要让prometheus的数据能被Grafana访问,那么就需要打开Grafana页面(http://192.168.50.218:3000 ),默认用户及密码均为admin,并在Grafana页面中配置prometheus的数据来源。

img

配置好数据源后,就可以配置对应监控模板。

2、配置服务器监控

本次要导入的模板:https://grafana.com/grafana/dashboards/11074,模板ID:11074

img

Grafana页面(http://192.168.50.218:3000 ),然后选择import导入模板

img

然后,填写模板的名称(名称随意取),接着,选择数据源为prometheus

img

最后,点击import导入模板,结果如图:

img

可以看到node-exporter把获取的数据信息,展示在了Grafana页面。

3、配置容器监控

本次要导入的模板:https://grafana.com/grafana/dashboards/893,模板ID:893

img

Grafana页面(http://192.168.50.218:3000 ),然后选择import导入模板

img

然后,填写模板的名称(名称随意取),接着,选择数据源为prometheus

img

最后,就可以看到,收集docker(cadvisor)的metrics信息,并展示在grafana页面。

img

4、配置redis监控

本次要导入的模板:https://grafana.com/grafana/dashboards/11835,模板ID:11835

Grafana页面(http://192.168.50.218:3000 ),然后选择import导入模板

img

5、配置mysql监控

本次要导入的模板:https://grafana.com/grafana/dashboards/7362,模板ID:7362

img

四、参考

1、docker-compose 搭建 Prometheus+Grafana监控系统 :https://www.cnblogs.com/qdhxhz/p/16325893.html

2、jmeter压测练习:https://github.com/princeqjzh/iJmeter

3、dbeaver下载:https://dbeaver.io/download/

4、mysql监控:https://www.prometheus.wang/exporter/use-promethues-monitor-mysql.html

l

ppt技巧

图片拼接效果

插入大矩形形状->插入长条矩形->多选大矩形和长条矩形->形状格式工具栏->合并形状->拆分->删掉多余图形部分->在各个分割图形上插入图片

l

photoshop技巧

选区更换颜色

  1. 选区->编辑->填充->颜色->选择颜色->确定
l
l
l
l