最近一直在弄k8s相关,想起来把zabbix及nagios做一个docker容器出来,以后在新机房时候就可以直接起动docker容器,不用再配置复杂的环境了,也加快部署速度,帮此有了此篇文章 1 安装docker环境就不说了,安装好后用docker pull centos:7 这里以centos:7为例制做,容量也不大,300多M,比起我在docker hub中下载的那个有四五百M轻巧多了

2 下面是Dockerfile:

FROM centos:7
 
RUN useradd nagios
COPY ./yum/ /etc/yum.repos.d/
RUN yum install perl-Net-SNMP php php-gd perl httpd gd gd-devel openssl openssl-devel -y  && yum clean all
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
 
COPY ./script/nagios.conf /etc/httpd/conf.d/nagios.conf
COPY ./script/httpd.conf /etc/httpd/conf/httpd.conf
COPY ./script/nagios /etc/init.d/nagios
ADD ./nagios /usr/local/nagios
 
COPY ./script/check.sh /usr/local/nagios/bin/check.sh
COPY ./script/nagios_check.sh /usr/local/nagios/bin/nagios_check.sh
RUN chown -R nagios:nagios /usr/local/nagios
COPY ./script/startup.sh /etc/init.d/startnagios.sh
CMD /etc/init.d/startnagios.sh

文件中的脚本会在最下面附上的。大家放心,可以根据自己的环境更改,我这里也只是给大家一个思路,希望有更好的方法给我留言

3 接着执行docker build -t nagios:1 .

4 生成镜像后,运行

docker run -d --name nagios -v /opt/hosts.cfg:/usr/local/nagios/etc/conf.d/hosts.cfg -v /opt/services.cfg:/usr/local/nagios/etc/conf.d/services.cfg -p 8099:80 nagios:1 说明:/opt/hosts.cfg及/opt/services.cfg文件根据你自己目录位置更改即可 5 最后在浏览器里输入http://ip:8099/nagios就会出来界面了,默认用户名:nagiosadmin 密码是admin

文章最后说明几点:

1、此次制做的容器支持dingding报警功能,脚本是在/usr/local/nagios/etc/objects目录里,有一个dingding.sh的脚本,大家在制做容器前把其中的xxxx换成你自己的token即可

2、hosts.cfg及services.cfg为监控主机的配置文件,这里网上随便找就有了,这 里就不提供了

3、此容器时间上也更改了,更改了正常的中国时间^_^

4、更新hosts.cfg及services.cfg后,nagios服务会自动重启

5、监控策略是每隔一分钟探测一次,探测三次后失败报警。

6、 k8s的配置我做成了configmap形式的了,也能热更新了,nagios服务也自动更新了

文中软件如下: Dockerfile及nagios脚本请添加链接描述

nagios-k8s文件请添加链接描述

更多请移步到http://www.wangshuying.cn