├── .gitignore ├── Dockerfile ├── LICENSE.txt ├── README.md └── files ├── config.json ├── rabbitmq.config ├── sensu.repo ├── supervisord.conf └── uchiwa.json /.gitignore: -------------------------------------------------------------------------------- 1 | *.tar 2 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM centos:centos6 2 | 3 | MAINTAINER Hiroaki Sano 4 | 5 | # Basic packages 6 | RUN rpm -Uvh http://download.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm \ 7 | && yum -y install passwd sudo git wget openssl openssh openssh-server openssh-clients jq 8 | 9 | # Create user 10 | RUN useradd hiroakis \ 11 | && echo "hiroakis" | passwd hiroakis --stdin \ 12 | && sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config \ 13 | && sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config \ 14 | && echo "hiroakis ALL=(ALL) ALL" >> /etc/sudoers.d/hiroakis 15 | 16 | # Redis 17 | RUN yum install -y redis 18 | 19 | # RabbitMQ 20 | RUN yum install -y socat \ 21 | && rpm -Uvh https://github.com/rabbitmq/erlang-rpm/releases/download/v20.1.7/erlang-20.1.7-1.el6.x86_64.rpm \ 22 | && rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc \ 23 | && rpm -Uvh https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.0/rabbitmq-server-3.7.0-1.el6.noarch.rpm \ 24 | && git clone git://github.com/joemiller/joemiller.me-intro-to-sensu.git \ 25 | && cd joemiller.me-intro-to-sensu/; ./ssl_certs.sh clean && ./ssl_certs.sh generate \ 26 | && mkdir /etc/rabbitmq/ssl \ 27 | && cp /joemiller.me-intro-to-sensu/server_cert.pem /etc/rabbitmq/ssl/cert.pem \ 28 | && cp /joemiller.me-intro-to-sensu/server_key.pem /etc/rabbitmq/ssl/key.pem \ 29 | && cp /joemiller.me-intro-to-sensu/testca/cacert.pem /etc/rabbitmq/ssl/ 30 | ADD ./files/rabbitmq.config /etc/rabbitmq/ 31 | RUN rabbitmq-plugins enable rabbitmq_management 32 | 33 | # Sensu server 34 | ADD ./files/sensu.repo /etc/yum.repos.d/ 35 | RUN yum install -y sensu 36 | ADD ./files/config.json /etc/sensu/ 37 | RUN mkdir -p /etc/sensu/ssl \ 38 | && cp /joemiller.me-intro-to-sensu/client_cert.pem /etc/sensu/ssl/cert.pem \ 39 | && cp /joemiller.me-intro-to-sensu/client_key.pem /etc/sensu/ssl/key.pem 40 | 41 | # uchiwa 42 | RUN yum install -y uchiwa 43 | ADD ./files/uchiwa.json /etc/sensu/ 44 | 45 | # supervisord 46 | RUN wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py \ 47 | && pip install supervisor 48 | 49 | ADD files/supervisord.conf /etc/supervisord.conf 50 | 51 | RUN /etc/init.d/sshd start && /etc/init.d/sshd stop 52 | 53 | EXPOSE 22 3000 4567 5671 15672 54 | 55 | CMD ["/usr/bin/supervisord"] 56 | 57 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Hiroaki Sano 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # docker-sensu-server 2 | 3 | CentOS and sensu. 4 | It runs redis, rabbitmq-server, uchiwa, sensu-api, sensu-server and ssh processes. 5 | 6 | ## Installation 7 | 8 | Install from docker index or build from Dockerfile 9 | 10 | ``` 11 | docker pull hiroakis/docker-sensu-server 12 | ``` 13 | 14 | or 15 | 16 | ``` 17 | git clone https://github.com/hiroakis/docker-sensu-server.git 18 | cd docker-sensu-server 19 | docker build -t yourname/docker-sensu-server . 20 | ``` 21 | 22 | ## Run 23 | 24 | ``` 25 | docker run -d -p 10022:22 -p 3000:3000 -p 4567:4567 -p 5671:5671 -p 15672:15672 hiroakis/docker-sensu-server 26 | ``` 27 | 28 | ## How to access via browser and sensu-client 29 | 30 | ### rabbitmq console 31 | 32 | * http://your-server:15672/ 33 | * id/pwd : sensu/password 34 | 35 | ### uchiwa 36 | 37 | * http://your-server:3000/ 38 | 39 | ### sensu-client 40 | 41 | To run sensu-client, create client.json (see example below), then just run sensu-client process. 42 | 43 | These are examples of sensu-client configuration. 44 | 45 | * /etc/sensu/config.json 46 | 47 | ``` 48 | { 49 | "rabbitmq": { 50 | "host": "sensu-server-ipaddr", 51 | "port": 5671, 52 | "vhost": "/sensu", 53 | "user": "sensu", 54 | "password": "password", 55 | "ssl": { 56 | "cert_chain_file": "/etc/sensu/ssl/cert.pem", 57 | "private_key_file": "/etc/sensu/ssl/key.pem" 58 | } 59 | } 60 | } 61 | ``` 62 | 63 | * /etc/sensu/conf.d/client.json 64 | 65 | ``` 66 | { 67 | "client": { 68 | "name": "sensu-client-node-hostname", 69 | "address": "sensu-client-node-ipaddr", 70 | "subscriptions": [ 71 | "common", 72 | "web" 73 | ] 74 | }, 75 | "keepalive": { 76 | "thresholds": { 77 | "critical": 60 78 | }, 79 | "refresh": 300 80 | } 81 | } 82 | ``` 83 | 84 | ## ssh login 85 | 86 | ``` 87 | ssh hiroakis@localhost -p 10022 88 | password: hiroakis 89 | ``` 90 | 91 | ## License 92 | 93 | MIT 94 | -------------------------------------------------------------------------------- /files/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "rabbitmq": { 3 | "host": "localhost", 4 | "port": 5671, 5 | "vhost": "/sensu", 6 | "user": "sensu", 7 | "password": "password", 8 | "ssl": { 9 | "cert_chain_file": "/etc/sensu/ssl/cert.pem", 10 | "private_key_file": "/etc/sensu/ssl/key.pem" 11 | } 12 | }, 13 | "redis": { 14 | "host": "localhost", 15 | "port": 6379 16 | }, 17 | "api": { 18 | "host": "localhost", 19 | "bind": "0.0.0.0", 20 | "port": 4567 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /files/rabbitmq.config: -------------------------------------------------------------------------------- 1 | [ 2 | {kernel, [ 3 | 4 | ]}, 5 | {rabbit, [ 6 | {ssl_listeners, [5671]}, 7 | {ssl_options, [{cacertfile,"/etc/rabbitmq/ssl/cacert.pem"}, 8 | {certfile,"/etc/rabbitmq/ssl/cert.pem"}, 9 | {keyfile,"/etc/rabbitmq/ssl/key.pem"}, 10 | {verify,verify_none}, 11 | {fail_if_no_peer_cert,false}]}, 12 | {tcp_listen_options, [binary, {packet,raw}, 13 | {reuseaddr,true}, 14 | {backlog,128}, 15 | {nodelay,true}, 16 | {exit_on_close,false}, 17 | {keepalive,false}]}, 18 | {default_user, <<"sensu">>}, 19 | {default_pass, <<"password">>}, 20 | {default_vhost, <<"/sensu">>}, 21 | {default_permissions, [<<".*">>, <<".*">>, <<".*">>]} 22 | ]} 23 | ]. 24 | -------------------------------------------------------------------------------- /files/sensu.repo: -------------------------------------------------------------------------------- 1 | [sensu] 2 | name=sensu 3 | baseurl=https://sensu.global.ssl.fastly.net/yum/$releasever/$basearch/ 4 | gpgcheck=0 5 | enabled=1 6 | -------------------------------------------------------------------------------- /files/supervisord.conf: -------------------------------------------------------------------------------- 1 | [supervisord] 2 | nodaemon=true 3 | 4 | [program:sshd] 5 | command=/usr/sbin/sshd -D 6 | 7 | [program:redis] 8 | command=/usr/bin/redis-server 9 | 10 | [program:rabbitmq-server] 11 | command=sh -c "chown rabbitmq /var/lib/rabbitmq/.erlang.cookie;/etc/init.d/rabbitmq-server start" 12 | 13 | [program:sensu-server] 14 | command=/etc/init.d/sensu-server start 15 | 16 | [program:uchiwa] 17 | command=/bin/sh -c "sleep 10s;/etc/init.d/uchiwa start" 18 | 19 | [program:sensu-api] 20 | command=/etc/init.d/sensu-api start 21 | -------------------------------------------------------------------------------- /files/uchiwa.json: -------------------------------------------------------------------------------- 1 | { 2 | "sensu": [ 3 | { 4 | "name": "Sensu", 5 | "host": "127.0.0.1", 6 | "ssl": false, 7 | "port": 4567, 8 | "user": "", 9 | "pass": "", 10 | "path": "", 11 | "timeout": 5000 12 | } 13 | ], 14 | "uchiwa": { 15 | "user": "", 16 | "pass": "", 17 | "port": 3000, 18 | "stats": 10, 19 | "refresh": 10000 20 | } 21 | } 22 | --------------------------------------------------------------------------------