d*******r 发帖数: 3299 | 1 请问板上的 Python 大牛们 (比如公孙大神), 用 Python 做cloud上的VM管理 (比如
AWS 上大量 EC2 instance 的配置和monitoring), 主要需要用熟哪些工具?
我研究了下, 关于auto deploy/cfg 的工具, 选择有 SaltStack 和 Ansible.
据说是 Ansible 更简单, 跑在 ssh connection 上, 而且Vagrant 官方支持.
SaltStack 需要安装 client 到被管理机器上, 而且 SaltStack 反馈速度更快, 跑在
ZeroMQ connection 上.
不知道 Zeromq 这种东西靠谱不, SaltStack+Zeromq 到底坑多不多?
看 SaltStack 官网, 现在也有 Salt Air 了, 也可以模拟 Ansible 那种 ssh style,
被管理的机器只要能被 ssh 就行.
python 用来监控和管理 process 的最好工具是什么? supervisord?
还有, 可以用 python 的某些个 module/lib 来完全代替linux系统的 cron job 吗?
自己不喜欢用 bash shell, 经常把 bash shell 粘合 cmd tools 的老程序换掉.
所以我在尽量多用 python 的modules. 最终目标是, 能把 cloud 上的 VMs 的管理工
作, 自动汇总到一台机器的python 代码里. 不知道能实现不? 想知道专业的 Python
DevOps 都是怎么搞的?
还有zookeeper什么的, 还没花时间看 ... 不知道需要了解不. |
mw 发帖数: 525 | 2 co ask
在
,
【在 d*******r 的大作中提到】 : 请问板上的 Python 大牛们 (比如公孙大神), 用 Python 做cloud上的VM管理 (比如 : AWS 上大量 EC2 instance 的配置和monitoring), 主要需要用熟哪些工具? : 我研究了下, 关于auto deploy/cfg 的工具, 选择有 SaltStack 和 Ansible. : 据说是 Ansible 更简单, 跑在 ssh connection 上, 而且Vagrant 官方支持. : SaltStack 需要安装 client 到被管理机器上, 而且 SaltStack 反馈速度更快, 跑在 : ZeroMQ connection 上. : 不知道 Zeromq 这种东西靠谱不, SaltStack+Zeromq 到底坑多不多? : 看 SaltStack 官网, 现在也有 Salt Air 了, 也可以模拟 Ansible 那种 ssh style, : 被管理的机器只要能被 ssh 就行. : python 用来监控和管理 process 的最好工具是什么? supervisord?
|
c***C 发帖数: 139 | 3 aws用boto,我们用salt,不错,速度快,简单。salt不用客户端安装直接用ssh的在
beta开发中,确定就是速度慢不少 |
c***C 发帖数: 139 | 4 Supervisord能kill process gracefully,而且结合signal模块。cron非常简单实用,
不知为何要找替代的 |
d*******r 发帖数: 3299 | 5 多谢指点。
以前在Ubuntu, Debian, OpenWRT 等等 linux 上都跑过cron,一不小心环境变量设置
有问题,就出问题.
反正我能不用 shell+cmd 的东西,就尽量不用。
【在 c***C 的大作中提到】 : Supervisord能kill process gracefully,而且结合signal模块。cron非常简单实用, : 不知为何要找替代的
|
d********g 发帖数: 10550 | 6 这个你得问专业DevOps才行,我们招了快半年了。我知道常见的boto、puppet、fabric
这些
supervisor用的人比较多,不过这个东西的web gui有个bug,在reverse proxy下对
https支持很烂,不知道多少年的老代码了,只能在Apache/Nginx这里加规则来fix
cron一般没必要替换,倒是有个APScheduler。*nix不可避免要bash,纯Python DevOps
不现实
在
,
【在 d*******r 的大作中提到】 : 请问板上的 Python 大牛们 (比如公孙大神), 用 Python 做cloud上的VM管理 (比如 : AWS 上大量 EC2 instance 的配置和monitoring), 主要需要用熟哪些工具? : 我研究了下, 关于auto deploy/cfg 的工具, 选择有 SaltStack 和 Ansible. : 据说是 Ansible 更简单, 跑在 ssh connection 上, 而且Vagrant 官方支持. : SaltStack 需要安装 client 到被管理机器上, 而且 SaltStack 反馈速度更快, 跑在 : ZeroMQ connection 上. : 不知道 Zeromq 这种东西靠谱不, SaltStack+Zeromq 到底坑多不多? : 看 SaltStack 官网, 现在也有 Salt Air 了, 也可以模拟 Ansible 那种 ssh style, : 被管理的机器只要能被 ssh 就行. : python 用来监控和管理 process 的最好工具是什么? supervisord?
|
d********g 发帖数: 10550 | 7 cron的env从安全角度考虑,默认是很有限的,需要自己设定
【在 d*******r 的大作中提到】 : 多谢指点。 : 以前在Ubuntu, Debian, OpenWRT 等等 linux 上都跑过cron,一不小心环境变量设置 : 有问题,就出问题. : 反正我能不用 shell+cmd 的东西,就尽量不用。
|
d*******r 发帖数: 3299 | 8 多谢大牛指点。
难道我不能自己开个 python process, 设置一堆 timer,然后再复杂的定时工作都能
搞吗。我准备用 supervisord监控自己的python processes, 然后只用 cron job 定期
监控这一个 supervisord process ... 好像看着 stackoverflow 上有人这么搞: http://serverfault.com/questions/433477/supervisor-vs-cronjob
对了,刚刚用一些 python lib 写了个周期性记录(并上传,绘图) server cpu/memory
使用率的 metrics 的daemon, 我有些问题正想问。
因为现在要给更多的,不同的 metrics 设置不同的搜集 timer (有的30sec采样一次,
有的1min一次),我准备为不同的 metrics 开不同的 Python thread. 不过听说
Python 的 multiple thread 设计得不好 (我知道有 GIL 拖慢的问题), 所以我想知道
pro 的 python guy,写这种东西一般是什么套路呢? python coroutines? or some
event driven framework? 我现在貌似对实时性没太大要求。
【在 d********g 的大作中提到】 : cron的env从安全角度考虑,默认是很有限的,需要自己设定
|
m******t 发帖数: 635 | 9 监控这样的东东是不是已经有很多轮子了?
memory
some
【在 d*******r 的大作中提到】 : 多谢大牛指点。 : 难道我不能自己开个 python process, 设置一堆 timer,然后再复杂的定时工作都能 : 搞吗。我准备用 supervisord监控自己的python processes, 然后只用 cron job 定期 : 监控这一个 supervisord process ... 好像看着 stackoverflow 上有人这么搞: http://serverfault.com/questions/433477/supervisor-vs-cronjob : 对了,刚刚用一些 python lib 写了个周期性记录(并上传,绘图) server cpu/memory : 使用率的 metrics 的daemon, 我有些问题正想问。 : 因为现在要给更多的,不同的 metrics 设置不同的搜集 timer (有的30sec采样一次, : 有的1min一次),我准备为不同的 metrics 开不同的 Python thread. 不过听说 : Python 的 multiple thread 设计得不好 (我知道有 GIL 拖慢的问题), 所以我想知道 : pro 的 python guy,写这种东西一般是什么套路呢? python coroutines? or some
|
d********g 发帖数: 10550 | 10 Python daemon也是可以的,如果你要更modular的话。multithreading一般不用,很多
是用twisted或者gevent。另外redis配合一些lib也可以用来做scheduler
memory
some
【在 d*******r 的大作中提到】 : 多谢大牛指点。 : 难道我不能自己开个 python process, 设置一堆 timer,然后再复杂的定时工作都能 : 搞吗。我准备用 supervisord监控自己的python processes, 然后只用 cron job 定期 : 监控这一个 supervisord process ... 好像看着 stackoverflow 上有人这么搞: http://serverfault.com/questions/433477/supervisor-vs-cronjob : 对了,刚刚用一些 python lib 写了个周期性记录(并上传,绘图) server cpu/memory : 使用率的 metrics 的daemon, 我有些问题正想问。 : 因为现在要给更多的,不同的 metrics 设置不同的搜集 timer (有的30sec采样一次, : 有的1min一次),我准备为不同的 metrics 开不同的 Python thread. 不过听说 : Python 的 multiple thread 设计得不好 (我知道有 GIL 拖慢的问题), 所以我想知道 : pro 的 python guy,写这种东西一般是什么套路呢? python coroutines? or some
|
|
|
d********g 发帖数: 10550 | 11 C的Nagios还比较出名
【在 m******t 的大作中提到】 : 监控这样的东东是不是已经有很多轮子了? : : memory : some
|
m******t 发帖数: 635 | 12 很多年前玩过cacti,不知道现在都流行什么
【在 d********g 的大作中提到】 : C的Nagios还比较出名
|
d*******r 发帖数: 3299 | 13 果然大家不用 Python multithreading啊?Python multithreading 到底有推荐使用的
scenario 没......?
gevent 是要比 twisted 好很多吧?twisted 我记得很老了。gevent VS twisted 大牛
什么意见?
【在 d********g 的大作中提到】 : Python daemon也是可以的,如果你要更modular的话。multithreading一般不用,很多 : 是用twisted或者gevent。另外redis配合一些lib也可以用来做scheduler : : memory : some
|
m**k 发帖数: 290 | 14 python threading 虽然有GIL的问题,还是可以放心使用的。
不推荐twisted或者gevent,太复杂了。 |
m**k 发帖数: 290 | 15
memory
some
开一个thread,处理所有的periodic job就可以了。
cloud service monitoring 有很多设计问题。pull metrics 还是push metrics, 要考
虑failover,aggregation, scalability 等等。
目前我还没看到有好用的framework。
【在 d*******r 的大作中提到】 : 多谢大牛指点。 : 难道我不能自己开个 python process, 设置一堆 timer,然后再复杂的定时工作都能 : 搞吗。我准备用 supervisord监控自己的python processes, 然后只用 cron job 定期 : 监控这一个 supervisord process ... 好像看着 stackoverflow 上有人这么搞: http://serverfault.com/questions/433477/supervisor-vs-cronjob : 对了,刚刚用一些 python lib 写了个周期性记录(并上传,绘图) server cpu/memory : 使用率的 metrics 的daemon, 我有些问题正想问。 : 因为现在要给更多的,不同的 metrics 设置不同的搜集 timer (有的30sec采样一次, : 有的1min一次),我准备为不同的 metrics 开不同的 Python thread. 不过听说 : Python 的 multiple thread 设计得不好 (我知道有 GIL 拖慢的问题), 所以我想知道 : pro 的 python guy,写这种东西一般是什么套路呢? python coroutines? or some
|
d*******r 发帖数: 3299 | 16 我看 gevent 好像用着挺简洁的, 而且刚刚出了1.0, 很想用用
【在 m**k 的大作中提到】 : python threading 虽然有GIL的问题,还是可以放心使用的。 : 不推荐twisted或者gevent,太复杂了。
|
d*******r 发帖数: 3299 | 17
你是指开一个python process来代替cron管理各个复杂的periodic job吧, 我是这么想
的.
我每个 periodic job 的周期和要管理的事情都不太一样, 写在一个thread貌似很乱.
我又不准备自己实现单 thread 的 event-driven framework. 所以我准备针对每一个
periodic job 开一个 python thread 或者 gevent coroutine.
我现在就是每个 AWS EC2 instance 上开一个metric collecting process,
periodically 搜集一些 metrics, 然后 push 到 Librato server 上看图. 我们现在
不存这些 metrics, 就运维时候实时看看, 所以还比较简单.
【在 m**k 的大作中提到】 : : memory : some : 开一个thread,处理所有的periodic job就可以了。 : cloud service monitoring 有很多设计问题。pull metrics 还是push metrics, 要考 : 虑failover,aggregation, scalability 等等。 : 目前我还没看到有好用的framework。
|
c***C 发帖数: 139 | 18 你开的那个thread死了怎么办?
【在 m**k 的大作中提到】 : : memory : some : 开一个thread,处理所有的periodic job就可以了。 : cloud service monitoring 有很多设计问题。pull metrics 还是push metrics, 要考 : 虑failover,aggregation, scalability 等等。 : 目前我还没看到有好用的framework。
|
c***C 发帖数: 139 | 19 cron无非就是路径和权限要设置,你用shell这些东西也是要设置的,只不过不是每次
手动设置而已
【在 d*******r 的大作中提到】 : 多谢指点。 : 以前在Ubuntu, Debian, OpenWRT 等等 linux 上都跑过cron,一不小心环境变量设置 : 有问题,就出问题. : 反正我能不用 shell+cmd 的东西,就尽量不用。
|
c***C 发帖数: 139 | 20 matrix的话我们的devops用的是graphite,免费开源,对于我们developers来说比较方
便,只需要push data via socket。数据可以是json或者是pickled。
.
个
【在 d*******r 的大作中提到】 : : 你是指开一个python process来代替cron管理各个复杂的periodic job吧, 我是这么想 : 的. : 我每个 periodic job 的周期和要管理的事情都不太一样, 写在一个thread貌似很乱. : 我又不准备自己实现单 thread 的 event-driven framework. 所以我准备针对每一个 : periodic job 开一个 python thread 或者 gevent coroutine. : 我现在就是每个 AWS EC2 instance 上开一个metric collecting process, : periodically 搜集一些 metrics, 然后 push 到 Librato server 上看图. 我们现在 : 不存这些 metrics, 就运维时候实时看看, 所以还比较简单.
|
|
|
d*******r 发帖数: 3299 | 21 supervisord 有自动重启 dead process 的功能.
"""
难道我不能自己开个 python process, 设置一堆 timer,然后再复杂的定时工作都能
搞吗。我准备用 supervisord监控自己的python processes, 然后只用 cron job 定期
监控这一个 supervisord process ... 好像看着 stackoverflow 上有人这么搞: http://serverfault.com/questions/433477/supervisor-vs-cronjob
"""
【在 c***C 的大作中提到】 : 你开的那个thread死了怎么办?
|
m**k 发帖数: 290 | 22
gevent 的核心是 greenlet。greenlet 是一个 hack,需要操作 cpython的stack,所
以我不是很喜欢。
Guido好像要推出一个新的event framework,不知道怎么样了。
【在 d*******r 的大作中提到】 : 我看 gevent 好像用着挺简洁的, 而且刚刚出了1.0, 很想用用
|
m**k 发帖数: 290 | 23
.
大部分timer的实现都是单thread. 并不是很复杂。当然如果你的periodic job之间不
共享状态的话,开多个thread也没什么。
【在 d*******r 的大作中提到】 : supervisord 有自动重启 dead process 的功能. : """ : 难道我不能自己开个 python process, 设置一堆 timer,然后再复杂的定时工作都能 : 搞吗。我准备用 supervisord监控自己的python processes, 然后只用 cron job 定期 : 监控这一个 supervisord process ... 好像看着 stackoverflow 上有人这么搞: http://serverfault.com/questions/433477/supervisor-vs-cronjob : """
|
m**k 发帖数: 290 | 24
理想情况下daemon 要catch所有exception,并作适当的处理。
现实中要有一些failover, auto-restart
【在 c***C 的大作中提到】 : 你开的那个thread死了怎么办?
|
d*******r 发帖数: 3299 | 25 这个也有道理, 因为我现在做这个也不太care performance. Python 本身的 thread
应该也更可靠.
【在 m**k 的大作中提到】 : : 理想情况下daemon 要catch所有exception,并作适当的处理。 : 现实中要有一些failover, auto-restart
|