首页 > 其他分享 >go flag的常用设置

go flag的常用设置

时间:2024-09-24 11:23:31浏览次数:8  
标签:常用 err url fmt flag go 告警 JsonPrometheusAlertMessage

package main

import (
"bytes"
"encoding/json"
"flag"
"fmt"
"io/ioutil"
"net/http"
"os"
)

var ZabbixTarget, ZabbixMessage, ZabbixType, PrometheusAlertUrl string
var help bool

func init() {
//zabbix传入参数发送目标,告警消息,目标类型
flag.StringVar(&ZabbixTarget, "t", "", "指定告警消息的接收目标的`手机号/钉钉url/微信url/飞书url/百度Hi(如流)url`")
flag.StringVar(&ZabbixMessage, "m", "zabbix告警测试", "需要发送的`告警消息内容`")
flag.StringVar(&ZabbixType, "type", "dd", "告警消息的目标类型,支持`txdx(腾讯云短信)、txdh(腾讯云电话)、alydx(阿里云短信)、alydh(阿里云电话)、hwdx(华为云短信)、bddx(百度云短信)、rlydh(荣联云电话)、7moordx(七陌短信)、7moordh(七陌电话)、dd(钉钉)、wx(微信)、fs(飞书)、tg(Telegram)、rl(百度Hi(如流))、workwechat(企业微信应用) `")
flag.StringVar(&PrometheusAlertUrl, "d", "http://127.0.0.1:8080/zabbix", "`PrometheusAlert的地址`")
flag.BoolVar(&help, "h", false, "显示帮助")
flag.Usage = usage
}
func usage() {
fmt.Fprintf(os.Stderr, `Version 1.4 If you need help contact [email protected] or visit https://github.com/feiyu563/PrometheusAlert
Usage: zabbixclient [-h] [-t SendTarget] [-m SendMessage] [-type SendType] [-d PrometheusAlertUrl]
Example(发送告警到钉钉):zabbixclent -t https://oapi.dingtalk.com/robot/send?access_token=xxxxx -m zabbix告警测试 -type dd -d http://127.0.0.1:8080/zabbix

Options:
`)
flag.PrintDefaults()
}
func main() {
flag.Parse()
if help {
flag.Usage()
return
}

JsonPrometheusAlertMessage := make(map[string]interface{})
JsonPrometheusAlertMessage["zabbixtarget"] = ZabbixTarget
JsonPrometheusAlertMessage["zabbixmessage"] = ZabbixMessage
JsonPrometheusAlertMessage["zabbixtype"] = ZabbixType
PostMessage, err := json.Marshal(JsonPrometheusAlertMessage)
if err != nil {
fmt.Println(err.Error())
return
}

Post(PrometheusAlertUrl, PostMessage)
}

func Post(url string, message []byte) {
reader := bytes.NewReader(message)
//reader := strings.NewReader(string(message))
resp, err := http.Post(url, "application/json", reader)
if err != nil {
fmt.Printf("消息发送失败:%s", err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Printf("消息发送失败:%s", err)
}
fmt.Printf("消息发送完成,服务器返回内容:%s", string(body))
}

标签:常用,err,url,fmt,flag,go,告警,JsonPrometheusAlertMessage
From: https://www.cnblogs.com/cheyunhua/p/18428825

相关文章

  • go基础-16.文件操作
    文件读取一次性读取byteData,_:=os.ReadFile("go_study/hello.txt")fmt.Println(string(byteData))获取当前go文件的路径可以通过获取当前go文件的路径,然后用相对于当前go文件的路径去打开文件//GetCurrentFilePath获取当前文件路径funcGetCurrentFilePath()string......
  • go基础-19.网络编程
    TCP传输控制协议(TCP,TransmissionControlProtocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议如何保证连接可靠呢?(面试常考题)三次握手四次挥手服务端packagemainimport("fmt""io""net")funcmain(){//创建tcp的监听地址tcpAddr,_:=......
  • go基础-18.反射
    类型判断判断一个变量是否是结构体,切片,mappackagemainimport("fmt""reflect")funcrefType(objany){typeObj:=reflect.TypeOf(obj)fmt.Println(typeObj,typeObj.Kind())//去判断具体的类型switchtypeObj.Kind(){casereflect.Slice:fm......
  • go基础-20.部署
    go项目的部署特别简单,编写完成之后,只需要执行gobuild即可打包为可执行文件注意,这个操作是不同平台不一样的windows下打包就是exe文件,linux下打包就是二进制文件打包命令gobuild打当前目录下的main包,注意,只能有一个main函数的包gobuildxxx.go打当前目录下,xxx.go的......
  • go基础-3.基本数据类型
    go语言的基本数据类型有整数形浮点型复数布尔字符串整数型go语言的整数类型,具体细分有很多varn1uint8=2varn2uint16=2varn3uint32=2varn4uint64=2varn5uint=2varn6int8=2varn7int16=2varn8int32=2varn9int64=2va......
  • go基础-2.变量定义与输入输出
    变量定义标准的变量定义packagemainimport"fmt"funcmain(){//先定义,再赋值varnamestringname="枫枫"fmt.Println(name)//var变量名类型="变量值"varuserNamestring="枫枫"fmt.Println(userName)}如果一个变量定义了......
  • go基础-5.判断语句
    if语句以年龄为例,输入的年龄在某一个区间,就输出对应的提示信息<=0未出生1-18未成年18-35青年>=35中年很明显,这是一个多选一的情况我们有很多中方式来实现中断式packagemainimport"fmt"funcmain(){fmt.Println("请输入你的年龄:")varagei......
  • go基础-4.数组、切片、map
    数组数组(Array)是一种非常常见的数据类型,几乎所有的计算机编程语言中都会用到它数组里的元素必须全部为同一类型,要嘛全部是字符串,要嘛全部是整数声明数组时,必须指定其长度或者大小packagemainimport"fmt"funcmain(){vararray[3]int=[3]int{1,2,3}fmt.Pr......
  • go基础-7.函数和指针
    函数是一段封装了特定功能的可重用代码块,用于执行特定的任务或计算函数接受输入(参数)并产生输出(返回值)函数定义packagemainimport"fmt"//使用func关键字定义一个函数funcsayHello(){fmt.Println("hello")}funcmain(){//函数()调用函数sayHello()}......
  • go基础-6.for循环
    任何编程语言,都会有for循环,它的一般写法是for初始化;条件;操作{}例如求1+2+...+100的和packagemainimport"fmt"funcmain(){varsum=0fori:=0;i<=100;i++{sum+=i}fmt.Println(sum)}for循环的五种变体传统for循环如上死循环每......