zabbix docker 配置openmas云平台短信接口

作者:神秘网友 发布时间:2020-10-15 22:35:19

zabbix docker 配置openmas云平台短信接口

zabbix docker 配置openmas云平台短信接口

zabbix docker配置openmas云平台短信接口

1、系统环境

  • CentOS Linux release 7.2.1511 x86_64(Core)
  • Docker version 17.03.0-ce, build 3a232c8
  • zabbix:alpine-5.0-latest

zabbix采用docker容器方式部署

openmas云平台是移动公司提供的一个云上短信发送平台,支持http接口,接受post方式提交请求。原本打算用python写短信发送脚本,后来发现alpine镜像中配置python环境比较麻烦,查阅多方资料后,决定用shell编写脚本。

2、镜像改造

1、修改/bin/sh链接以支持数组处理,以下引用A0小何

通过alpine作为基础镜像构建容器镜像已经成为默许的标准,因为它体积小,而且有非常好用的保管理工具,当然,在alpine下也有许多坑需要填,最近在制作镜像时,又遇到了新问题,在脚本中使用数组a=(1,2,3)时提示如下错误:syntax error: unexpected “(”

导致出现如上提示错误是alpine下的sh脚本不支持(1,2,3)格式的数组表达方式(还有其他的问题,会在后续文章中分享),而bash版shell支持,因此不能直接使用。前面也提到了alpine的优势,最好是能够改造一下,使其也支持1,2,3)格式的数组表达方式

在网上查找了些资料,有了一些眉目,只给了报错的原因,没说怎么解决,下面将给出原因以及解决的办法

首先登录到容器内,查看sh的版本,(通常有ash、bash、sh等),

bash-4.3# ls -l /bin/*sh lrwxrwxrwx 1 root root 12 Jun 17 2017 /bin/ash ->/bin/busybox -rwxr-xr-x 1 root root 682128 Apr 20 2017 /bin/bash lrwxrwxrwx 1 root root 12 Jun 17 2017 /bin/fdflush->/bin/busybox lrwxrwxrwx 1 root root 12 Jun 17 2017 /bin/sh ->/bin/busybox

发现alpine中的sh使用的是bin/busybox(命令展示结果最后一行),因此需要将sh切换到/bin/bash下

下面给出解决思路:

1.删除原有链接;

2.新建一个软链接指向/bin/bash,

脚本实现如下:

cd /bin && rm -f sh && ln -s /bin/bash sh

最后再执行脚本,能正常运行,问题解决,当然可以将其写入到容器构建中,做成新的镜像,以后使用该镜像创建出来的容器都不会再出现这类问题了。

2、安装curl以支持http方式调用

原生alpine镜像中没有安装curl,需要手动安装。离线安装方式:
1)查看镜像系统版本

docker exec -it zabbix-server-mysql /bin/sh

sh-5.0$ cat /etc/issue
Welcome to Alpine Linux 3.12
Kernel \r on an \m (\l)

2)下载对应的curl包并安装

下载地址: http://mirrors.ustc.edu.cn/alpine/v3.12/main/x86_64/curl-7.69.1-r1.apk
上传到镜像绑定的任意宿主机路径下,例如/usr/lib/zabbix/alertscripts/
用root用户登陆镜像执行安装

docker exec -it -u root zabbix-server-mysql /bin/sh
sh-5.0# apk add --no-cache /usr/lib/zabbix/alertscripts/curl-7.69.1-r1.apk
sh-5.0# curl --version
curl 7.69.1 (x86_64-alpine-linux-musl) libcurl/7.69.1 OpenSSL/1.1.1g zlib/1.2.11 nghttp2/1.41.0
Release-Date: 2020-03-11

3、短信接口脚本

将脚本上传至alertscripts文件夹内,添加执行权限
chmod +x sms.py

#!/bin/sh

timestr=$(date "+%Y%m%d%H%M%S")
# split phonenumber,seperated by ","
arr=(${1//,/ })
# translate arr into a json list string like ["1234","1232",]
lst="["
for var in ${arr[@]}
do
   lst="${lst}\"${var}\","
done
lst="${lst%?}]"
content=$2

send_result=$(curl -H "Content-Type: application/json; charset=utf-8" -s -X POST -d '{"applicationId":"APP_KEY","password":"APP_SECRET","requestTime":"'"${timestr}"'","funCode":"1002","mobiles":'${lst}',"content":"'"${content}"'"}' http://112.13.167.146/yunmas_api/smsApi/batchSendMessage)
cat >> /usr/lib/zabbix/alertscripts/sms.log <<EOF
`date`   sendto: $lst
result: $send_result
----------------------------------------------------
EOF

参考:shell调用curl使用post方式提交json参数含变量的写法

4、zabbix配置报警媒介(略)

zabbix docker 配置openmas云平台短信接口

zabbix docker 配置openmas云平台短信接口相关教程

  1. docker image

    docker image Docker p_w_picpath 详细介绍 使用和管理本地主机上的 p_w_picpaths 创建一个基础的p_w_picpath 上传p_w_picpaths到docker hub(公共p_w_picpaths仓库) (1) 使用 docker p_w_picpaths显示本机上的p_w_picpaths 在列出信息中, REPOSITORY:

  2. PIC32MZ0512EFF相关的CAN配置

    PIC32MZ0512EFF相关的CAN配置 PIC32MZ0512EFF相关的CAN配置(学习记录) 鉴于PIC相关资料较少,我在这记录分享一下自己经过一段时间的学习试验以后对PIC32系列的CAN的理解。记录不仅仅是分享,同样也是整理归纳查漏补缺的过程。在这个过程中大家互相学习,共

  3. log4j2的配置文件作业

    log4j2的配置文件作业 昨天老师布置了一个作业,就是关于log4j2的,作业是将每一种隔离级别都分开来然后打包。昨天我在官网找了半天还是感觉不大会,我感觉我还是太菜了。 今天是看了同学了,感觉又学到了许多。 作业的核心就是自定义的过滤器。 但是如果是写

  4. Apache的优化配置

    Apache的优化配置 一、 硬件方面 apache所运行的硬件环境都是对性能影响最大的因素,即使不能对硬件进行升级,也最好给 apache 一个单独的主机以免受到其他应用的干扰。 内存 ,对性能影响最大。对于静态内容(图片、 javascript 文件、 css 文件等),它决

  5. 如何获取有关在Docker中运行容器和映像的信息?

    如何获取有关在Docker中运行容器和映像的信息? Docker provides different tools to monitor the containers. In a busy environment there will be a lot of images and containers hard to remember. We can use information sub-commands provided by doc

  6. Apollo灰度配置

    Apollo灰度配置 Apollo灰度作用: 1. 对于一些对程序有比较大影响的配置,可以先在一个或者多个实例生效,观察一段时间没问题后再全量发布 配置。 2. 对于一些需要调优的配置参数,可以通过灰度发布功能来实现A/B测试。可以在不同的机器上应用不同的配 置,

  7. windows命令行快捷键_Windows配置工具命令行快捷方式

    windows命令行快捷键_Windows配置工具命令行快捷方式 windows命令行快捷键 Windows have a lot of tools to manage the operating system and user related configuration. As windows mainly used through GUI accessing some tools needs a lot of navigati

  8. NPS内网穿透安装配置

    NPS内网穿透安装配置 NPS 内网穿透安装配置文档 一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带