pmm-server服务部署解读

pmm-server官方提供了容器的部署方式,通过一个docker镜像就可以运行了,然而这个容器里面包含了很多个服务:prometheus,grafana,consul,nginx等。如果不搞清里面到底有哪些东西,后期的使用和维护总感觉没有底。所以,根据pmm-server在github上的Dockerfile及脚本来解读一下它里面都包含了什么。

所在github地址:
https://github.com/percona/pmm-server
官方文档地址:
https://www.percona.com/doc/percona-monitoring-and-management/index.html
https://www.percona.com/doc/percona-monitoring-and-management/deploy/server/docker.html#run-server-docker

Dockerfile

Dockerfile里面不到20行,操作流程比较清晰:
使用的是centos作为基础镜像
1)创建pmm账号
2)安装ansible并执行了playbook-install.yml和playbook-init.yml两个playbook
3)设置CMD容器启动脚本entrypoint.sh

所以,只要搞清楚这两playbook和一个entrypoint.sh就能知道pmm-server容器是如何运行的了。

大牛们的playbook写的还是很好的,通过读这playbook还能从中学到不少小技巧。里面的内容比较多,就找关键的说明一下。

playbook-install.yml

https://github.com/percona/pmm-server/blob/master/playbook-install.yml

1)首先是安装系统工具
screen
yum-utils
yum-cron
supervisor
2)创建需要的目录
/var/lib/cloud/scripts/per-once
/var/lib/cloud/scripts/per-boot
/opt/prometheus/data
/opt/consul-data
3)配置yum-cron
将/etc/yum/yum-cron-hourly.conf和/etc/yum/yum-cron.conf配置文件中的’update_cmd = default’改为’update_cmd = minimal-security’
4)安装Percona Client
Percona-Server-client-55
5)安装Pecona Server
先卸载mariadb-libs再安装,因为Percona Server里面集成了有mysql服务
Percona-Server-server-55
MySQL-python
安装后,可以通过rpm -ql命令查看Percona-Server-server-55都有哪些文件
6)添加mysql密码生成脚本
保存在/var/lib/cloud/scripts/per-once/init-mysql-password
7)添加pmm-laboratory源,并安装工具
nginx
percona-consul
percona-grafana
percona-prometheus
percona-orchestrator
percona-node_exporter
percona-qan-api
percona-qan-app
percona-qan-app2
percona-toolkit
percona-dashboards
pmm-server
pmm-manage
pmm-update
8)配置nginx
注释掉listen配置;生成/var/lib/cloud/scripts/per-boot/generate-ssl-certificate脚本,并通过此脚本生成ssl证书
9)配置Grafana匿名访问权限
/etc/grafana/grafana.ini
[auth.anonymous]
enabled = True
org_role = Editor
10)配置supervisor
/etc/supervisord.conf
[supervisorctl]
username = dummy
password = dummy
11)配置/etc/my.cnf
添加 !includedir /etc/my.cnf.d/ 这一行,注意:前面有一个感叹号
表示引入/etc/my.cnf.d/目录下的配置文件

playbook-init.yml

https://github.com/percona/pmm-server/blob/master/playbook-init.yml

有一些操作好像和前面的playbook里面重复了,这里只挑主要的看一下。
1)supervisord.conf里面配置了所涉及到的服务的启动,先运行supervisord服务
2)等待mysql服务起来,再创建orchestrator库,和名为orchestrator的mysql用户
3)利用pmm.sql脚本倒入pmm库,创建名为qan-api的用户并授予对pmm库的所有操作权限
4)等待grafana服务起来之后,重启orchestrator服务
5)等orchestrator服务器起来之后,检查pmm相关的一些目录和文件是否存在,如果不存在,则运行/usr/bin/pmm-update-stage2命令生成
6)通过supervisorctl shutdown停掉服务
7)清理刚才运行服务产生的日志文件

entrypoint.sh

https://github.com/percona/pmm-server/blob/master/entrypoint.sh

这个shell脚本主要是对相关配置文件做了些修改,最后执行supervisord的启动命令。

总之,这一个docker容器里面,包含了好多个服务。不看不知道,一看吓一跳…不过确实从中学感受到别人打包部署服务还是蛮牛的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值