Sensu 入门文档
标签(空格分隔): Sensu 监控
注:该文档是基于 0.15 版本。翻译自官方文档。
简介
Sensu 主要由两部分组成,一部分运行 Sensu 的所有组件,一部分仅仅运行 Sensu 客户端,这两部分分别是 “monitor” 和 “agent”。
Monitor
- RabbitMQ
- Redis
- Sensu server
- Sensu client
- Sensu API
Agent
- Sensu client
安装 Sensu 服务依赖项
生成 SSL 证书
在 monitor 系统,为 Sensu 生成 SSL 证书,使用以下指令。
确定 OpenSSL 是否安装。
which openssl
openssl version
使用以下指令创建一个授权证书,生成的证书有效期是 1825 天,或者是 5 年。
cd /tmp
wget http://sensuapp.org/docs/0.15/tools/ssl_certs.tar
tar -xvf ssl_certs.tar
cd ssl_certs
./ssl_certs.sh generate
具体的详细请看 Generating SSL certificates
安装 RabbitMQ
在 monitor 系统上安装 RabbitMQ。
在 CentOS(RHEL) 上安装 RabbitMQ
-
安装 erlang
CentOS 5重要提示 - 安装两个 EPEL-5 和 epel-erlang yum repositories,EPEL-5 yum repository 包含了 Erlang 的 R12B 老版本,该版本能同 RabbitMQ 工作的很好,除了既不能使用 SSL 访问以及没有 web 管理插件之外。因此,我们将从 epel-erlang repository 安装一个新版本的 Erlang ,它为 CentOS 5 提供了 R14B。
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm wget -O /etc/yum.repos.d/epel-erlang.repo http://repos.fedorapeople.org/repos/peter/erlang/epel-erlang.repo
CentOS 6
安装 EPEL-6 yum repository,其包含 Erlang R14B。
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
安装 erlang。
yum install erlang
-
安装 RabbitMQ
基于官方的安装指南:http://www.rabbitmq.com/install-rpm.html
rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc rpm -Uvh http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.1/rabbitmq-server-3.2.1-1.noarch.rpm
启动 RabbitMQ 服务
对于 Ubuntu:
update-rc.d rabbitmq-server defaults
/etc/init.d/rabbitmq-server start
对于 CentOS:
chkconfig rabbitmq-server on
/etc/init.d/rabbitmq-server start
配置 SSL
主要提示 - 由于在 Erlang 和 Erlang-SSL 模块中 flux 的状态,我们一直无法让 RabbitMQ 和 SSL 工作在 Ubuntu platforms < 11.10 和 Debian 6.x。
你必须已经生成了一个 SSL certificate authority 和 certificates。否则,在开始之前,请遵循在 SSL certificates 的指令。
-
安装 RabbitMQ certificate authority 和 certificates
在 RabbitMQ 服务器上创建一个 SSL 目录。
mkdir -p /etc/rabbitmq/ssl
拷贝以下生成的 SSL 文件到 RabbitMQ 服务器最新创建的 SSL 目录。这些文件被遵循自签名的 SSL certificates 指令创建。
- sensu_ca/cacert.pem
- server/cert.pem
- server/key.pem
你将会得到一个目录列表:
$ ls /etc/rabbitmq/ssl cacert.pem cert.pem key.pem
-
配置 RabbitMQ SSL listener
编辑或创建
/etc/rabbitmq/rabbitmq.config
。配置 RabbitMQ 来监听在 5671 端口上的 SSL 连接,并使用生成的 certificate authority 和 server certificate。[ {rabbit, [ {ssl_listeners, [5671]}, {ssl_options, [{cacertfile,"/etc/rabbitmq/ssl/cacert.pem"}, {certfile,"/etc/rabbitmq/ssl/cert.pem"}, {keyfile,"/etc/rabbitmq/ssl/key.pem"}, {verify,verify_peer}, {fail_if_no_peer_cert,true}]} ]} ].
重起 RabbitMQ。
/etc/init.d/rabbitmq-server restart
创建 credentials
-
为 Sensu 创建 一个 RabbitMQ vhost
rabbitmqctl add_vhost /sensu
-
为 Sensu vhost 创建一个授权的 RabbitMQ 用户
确保改变
mypass
使得一些事情保密。rabbitmqctl add_user sensu mypass rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"
可选项
开启 RabbitMQ web 管理控制台
rabbitmq-plugins enable rabbitmq_management
安装 Redis
一些 Sensu 组件要求访问 Redis 实例,为了存储持久化数据。
在 Debian 和 Ubuntu 上安装 Redis
Debian 6.x
添加 Debian backports 到 APT 源:
echo "deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free" >> /etc/apt/sources.list
从 Debian backports 安装 Redis:
apt-get update
apt-get -t squeeze-backports install redis-server
Ubuntu <= 10.04
你将需要从这些发行版的源下载和安装 Redis 2.0+。
Ubuntu > 10.04
apt-get update
apt-get install redis-server
CentOS (RHEL)上安装 Redis
-
安装 EPEL
CentOS 5
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
CentOS 6
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
- 安装 Redis
yum install redis
设置 Redis 开机自启动,并启动它。
/sbin/chkconfig redis on /etc/init.d/redis start
安装 Sensu
在两个系统上,使用以下指令安装 Sensu。
Sensu 包
Sensu 工程提供了综合包,其包含了所有的 Sensu 组件,并且没有任何依赖。这些包是自包含的,有 Sensu 需要运行的任何东西,除了 RabbitMQ 和 Redis 之外。这确保安装过程最简化,提升了安装的一致性,以及预防了 Sensu 影响其他应用。在 Linux 平台,包安装在 /opt/sensu
,sysvinit 脚本在 /etc/init.d
。
包格式:
- deb
- rpm
- msi
每个包格式有它自己的 main 和 unstable repository。unstable repositories 是用于实验性构建。
选择 main 或 unstable 其中的一个,不要两个都使用。
使用 APT 在 Debian 和 Ubuntu 安装 Sensu
已经测试的平台:
- Ubuntu 10.04, 11.04, 11.10, 12.04, 13.04, 13.10
- Debian 6
-
安装 repository 的公钥
为了使用 Sensu repositories,首先我们需要在我们的主机上安装 repository 公钥。
wget -q http://repos.sensuapp.org/apt/pubkey.gpg -O- | sudo apt-key add -
-
添加 repository
Main repository (stable)。
echo "deb http://repos.sensuapp.org/apt sensu main" > /etc/apt/sources.list.d/sensu.list
或者是 unstable repository。
echo "deb http://repos.sensuapp.org/apt sensu unstable" > /etc/apt/sources.list.d/sensu.list
-
安装 Sensu
apt-get update apt-get install sensu
使用 Yum 在 CentOS (RHEL)上安装 Sensu
已经测试的平台:
- CentOS (RHEL) 5, 6
- Fedora 15, 16, 17
-
添加 repository
把以下内容写入
/etc/yum.repos.d/sensu.repo
。Main repository (stable)。
[sensu] name=sensu-main baseurl=http://repos.sensuapp.org/yum/el/$releasever/$basearch/ gpgcheck=0 enabled=1
unstable repository。
[sensu-unstable] name=sensu-unstable baseurl=http://repos.sensuapp.org/yum-unstable/el/$releasever/$basearch/ gpgcheck=0 enabled=1
校验
$releasever
的值是5
和6
。如果你得到一个
404
(比如如果你的$releasever
展开为5Server
),硬编码该值为5
或6
。重要提示 - Fedora 系统需要硬编码 $releasver 变量。
-
安装 Sensu
yum install sensu
使用 MSI 在 Windows 上安装 Sensu
已经测试的平台:
- Windows 2008 R2
-
下载和安装 MSI 包
在 msi 目录找到它:http://repos.sensuapp.org/index.html
配置 Sensu 连接
两个系统运行 Sensu 组件都需要告知 RabbitMQ,因此我们将提供 Sensu 连接信息。
早先,你为 Sensu 在 monitor 生成了 SSL certificates,当配置 RabbitMQ 时使用它们。Sensu 组件将使用生成的客户端证书。
在两个系统中,为 Sensu 组件创建一个 SSL 目录。
mkdir -p /etc/sensu/ssl
拷贝以下生成的 SSL 文件到新近创建的 SSL 目录。
- client/cert.pem
- client/key.pem
在两个系统中,创建或编辑 /etc/sensu/conf.d/rabbitmq.json
。你将需要添加以下值:
{
"rabbitmq": {
"ssl": {
"cert_chain_file": "/etc/sensu/ssl/cert.pem",
"private_key_file": "/etc/sensu/ssl/key.pem"
},
"host": "SUBSTITUTE_ME",
"port": 5671,
"vhost": "/sensu",
"user": "sensu",
"password": "SUBSTITUTE_ME"
}
}
monitor 系统运行 Sensu 服务端和 API,需要告知 Redis,因此我们提供 给 Sensu 连接信息。
在 monitor 系统,创建或编辑 /etc/sensu/conf.d/redis.json
。
{
"redis": {
"host": "localhost",
"port": 6379
}
}
配置 Sensu API
monitor 系统运行 Sensu API,因此我们需要配置它们。
在 monitor 系统上,创建或编辑 /etc/sensu/conf.d/api.json
。
{
"api": {
"host": "localhost",
"port": 4567,
"user": "admin",
"password": "secret"
}
}
配置 Sensu clients
在两个系统上,配置 Sensu 客户端,提供关于它们自己的连接信息。
Sensu 客户端名字通常是系统的主机名,或者是另外的唯一标识(比如一个 VM ID)。
在两个系统上,创建或编辑 /etc/sensu/conf.d/client.json
。
{
"client": {
"name": "SUBSTITUTE_ME",
"address": "SUBSTITUTE_ME",
"subscriptions": [ "all" ]
}
}
开启 Sensu 服务
Sensu 包安装 sysvinit (init.d) 脚本到 /etc/init.d/
。默认所有的服务是停止的。
Monitor 系统
在 monitor 系统,开启所有的 Sensu 组件。
Debian and Ubuntu
update-rc.d sensu-server defaults
update-rc.d sensu-client defaults
update-rc.d sensu-api defaults
CentOS (RHEL)
chkconfig sensu-server on
chkconfig sensu-client on
chkconfig sensu-api on
Agent 系统
在 agent 系统,开启所有的 Sensu 客户端。
Debian 和 Ubuntu
update-rc.d sensu-client defaults
CentOS (RHEL)
chkconfig sensu-client on
启动 Sensu 服务
Monitor 系统
在 monitor 系统,启动所有的 Sensu 组件。
/etc/init.d/sensu-server start
/etc/init.d/sensu-client start
/etc/init.d/sensu-api start
Agent 系统
在 agent 系统,启动 Sensu 客户端。
/etc/init.d/sensu-client start
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。