现在使用钉钉办公的企业越来越多,尤其是互联网企业。钉钉的功能还是蛮强大的,我们今天就讲一下使用钉钉群机器人实现系统监控告警功能。
钉钉群机器人相关文档请直接前往下面的链接:
https://open-doc.dingtalk.com/microapp/serverapi2/nr29om
钉钉配置Webhook机器人
登录钉钉PC客户端(请升级至最新版),操作入口:
- 窗口右上角点击【头像】,进入”机器人管理“, 可对所有机器人进行统一管理。
- 进入一个钉钉群,在群的顶部功能栏中,点击【群设置】,进入菜单可以看到【群机器人】的入口,点击进入“群机器人”的管理面板后,可以进行添加、编辑和删除群机器人的操作。
- 选择【自定义】(Webhook的方式),给机器人取个可爱的名字,点击【完成】,复制Webhook的地址备用
上面的配置是PC版,移动版的操作也很简单:
登录钉钉手机端(请升级至最新版),进入一个钉钉群,点击右上角的群设置进入群设置页面,可看到群机器人的入口,点击进入群机器人的管理页面后,可以进行添加、编辑和删除群机器人的操作。
Webhook的地址如下,后面的“xxx”是access_token,每个机器人唯一:
https://oapi.dingtalk.com/robot/send?access_token=xxx
使用okhttp发送群告警
引入依赖
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.4.1</version>
</dependency>
发送钉钉的完整代码如下:
package cn.lovecto.promotion.ding;
import org.junit.Test;
import com.alibaba.fastjson.JSONObject;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.Request.Builder;
public class DingTest {
private static OkHttpClient client = new OkHttpClient();
@Test
public void test(){
sendToDingDing("test", "test", "https://oapi.dingtalk.com/robot/send?access_token=xxx");
}
/**
* 发送钉钉消息
* @param title 标题
* @param message 消息内容
* @param webhook 钉钉自定义机器人webhook
* @return
*/
public static boolean sendToDingDing(String title, String message, String webhook) {
try {
JSONObject text = new JSONObject();
text.put("text", message);
text.put("title", title);
JSONObject json = new JSONObject();
json.put("msgtype", "markdown");
json.put("markdown", text);
String jsonString = json.toJSONString();
String type = "application/json; charset=utf-8";
RequestBody body = RequestBody.create(MediaType.parse(type), jsonString);
Builder builder = new Request.Builder().url(webhook);
builder.addHeader("Content-Type", type).post(body);
Request request = builder.build();
Response response = client.newCall(request).execute();
String string = response.body().string();
System.out.println(String.format("send ding message:%s", string));
//logger.info("send ding message:{}", string);
JSONObject res = JSONObject.parseObject(string);
return res.getIntValue("errcode") == 0;
} catch (Exception e) {
e.printStackTrace();
//logger.error("发送钉钉消息错误! ", e);
return false;
}
}
}
运行测试,钉钉群收到了“test”消息,接下来就只需要在需要监控的地方调用上面的sendToDingDing方法就可以实现钉钉群告警啦。