从3.8.0版开始,RabbitMQ附带了内置的Prometheus&Grafana支持。3.8之前的RabbitMQ版本可以使用单独的插件 prometheus_rabbitmq_exporter
来向Prometheus公开指标。
只需开启rabbitmq_prometheus
插件,就可以启用prometheus的metrics接口,默认端口为15692
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.ustc.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce bash-completion
cp /usr/share/bash-completion/completions/docker /etc/bash_completion.d/
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 64000,
"Soft": 64000
}
},
"live-restore": true,
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 10,
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
],
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn/"
]
}
EOF
systemctl enable --now docker
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
AMQP,即Advanced message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
官网: https://www.rabbitmq.com
RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。 AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。 RabbitMQ 最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。具体特点包括:
如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor 为构建如下的 SaaS 应用提供了方法论:
这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。
本文的贡献者参与过数以百计的应用程序的开发和部署,并通过 Heroku 平台间接见证了数十万应用程序的开发,运作以及扩展的过程。
本文综合了我们关于 SaaS 应用几乎所有的经验和智慧,是开发此类应用的理想实践标准,并特别关注于应用程序如何保持良性成长,开发者之间如何进行有效的代码协作,以及如何 避免软件污染 。
我们的初衷是分享在现代软件开发过程中发现的一些系统性问题,并加深对这些问题的认识。我们提供了讨论这些问题时所需的共享词汇,同时使用相关术语给出一套针对这些问题的广义解决方案。本文格式的灵感来自于 Martin Fowler 的书籍: Patterns of Enterprise Application Architecture , Refactoring 。
任何 SaaS 应用的开发人员。部署和管理此类应用的运维工程师。
作为一名苦逼运维,写软件部署文档时必不可少的一件事情,可以说:文档的好坏决定了运维能力的高低。
那我们在写部署文档的时候,要做哪些事情,要写关于软件的哪些步骤呢,本人结合自己常用的一些流程,整理了下列的模板,仅供大家参考!
作为一个苦逼运维人,在学习一门新软件的时候,要经历过哪些阶段,或者说要做哪些事情,才能算真的了解这个软件呢?下面就个人经历而言整理了一些步骤。
系统包
管理方式部署源码包
编译方式部署docker
容器部署docker-compose
方式部署kubernetes
方式部署单机
部署集群
部署centos
debian
安装软件
的存放目录软件日志
的存放目录软件数据
的存放目录软件进程
管理方式(service
,systemd
,supervistor
)软件日志
的切割方式shell
方式进行自动化部署ansible
方式进行自动化部署监控指标
数据收集zabbix
传统方式监控,并制定监控报警模板prometheus
方式监控,并制定监控报警模板grafana
展示监控面板短信
邮件
部署规模
,分别进行备份软件的数据故障场景
,对备份数据进行恢复
平滑
升级停机
升级部署方式
,分别进行升级版本操作宿主机
,分别进行升级版本操作宿主机
,分别进行相关优化操作部署规模
,分别进行相关优化操作学习途径的话
可通过下列方式去寻找软件相关的知识,帮助各位快速学习。
google.com
搜索软件的一切信息,如 pdf
,ppt
,cookebook
,awesome
,cheatsheet
,install
,gitbook
,问题
, Bug
亚马逊
京东
/当当
/闲鱼二手
商城购买实体书微信读书
技术名称 + cookbook
/ ebook
google
/baidu
/微信公众号
/个人博客
等等。https://www.slideshare.net/ | https://myslide.cn/ 中分享的ppt |
github
github.com
中搜索软件的awesome
,其整理了软件相关的知识点及工具清单。github.com
中搜索软件的cheatsheet
,其整理了软件相关的常用命令。github.com
中搜索软件的issues
,其整理了用户使用的问题以及软件的bug。写在最后
当然你大可不必将上面的每一种情况都操作一遍
,但是你一定要将上列的步骤都要做一遍
。
这真是最后了
最后,好记性不如烂笔头,统统都要记笔记,无论你记在哪里。都要记笔记。
这个要切记,不要怕麻烦!
最后,好记性不如烂笔头,统统都要记笔记,无论你记在哪里。都要记笔记。
这个要切记,不要怕麻烦!
最后,好记性不如烂笔头,统统都要记笔记,无论你记在哪里。都要记笔记。
这个要切记,不要怕麻烦!
鲁棒性
鲁棒是Robust的音译,也就是健壮和强壮的意思。它也是在异常和危险情况下系统生存的能力。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。
稳定系统
当一个实际的系统处于一个平衡的状态时(就相当于小球在木块上放置的状态一样)如果受到外来作用的影响时(相当于上例中对小球施加的力),系统经过一个过渡过程仍然能够回到原来的平衡状态,我们称这个系统就是稳定的,否则称系统不稳定。一个控制系统要想能够实现所要求的控制功能就必须是稳定系统。
在使用 supervisor 管理应用进程的时候,我希望有个程序或者脚本来检测这些应用是否正常运行(虽然supervisor可以根据错误重启进程,但有些时候,程序假死,程序占用资源过多的场景下,supervisor是没办法的),类似 k8s 中的存活检测,在检测到不正常的时候,会触发一些动作,类似于故障治愈的功能。
要求