2023年5月

今天线上出现了一个很奇怪的问题,简单讲就是某个比较通用的服务反序列化 JSON 的时候,发现有些 int64 的 ID 解开之后不是预期的数字。

废话不多说!直接上代码!不看答案,你能知道输出什么吗?

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "sync"
    "time"
)

type Msg struct {
    DrId int `json:"drid"`
}

type Data struct {
    Msg interface{} `json:"msg"`
}

func main() {
    msg := Msg{DrId: 21041079142844926}
    data := Data{Msg: msg}
    str2, _ := json.Marshal(data)
    // 1. {"msg":{"drid":21041079142844926}}
    fmt.Println(string(str2))
    var data2 Data
    _ = json.Unmarshal(str2, &data2)
    // fmt.Println(data2)
    str3, _ := json.Marshal(data2)
    // 2. ?
    fmt.Println(string(str3))
}

阅读全文

日常工作中,总会遇到有些 MySQL 实例我们自己访问不到的情况!

不过我们可以另辟蹊径,因为开发环境的容器可以连接到目标数据库!

而由于安全问题公司禁止使用 ssh 跳板,

这个时候只能在容器内部安装 mysql-client MySQL 客户端,这样也可以达到访问数据的目的。

命令如下:

rpm -ivh https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm && \
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 && \
yum install mysql-community-client.x86_64 -y

特此记录下来,下次遇到就直接粘贴上去!

对了,这个是 CentOS 7 适用,其他系统应该是不能用的。

五一长假,大家都出去玩了。

独自一人在家闲着没事,心血来潮开撸日志查询系统——Gobana(Gobana = Golang + Kibana)!

是的,它使用 Go 语言开发,我希望可以替代日常使用的 Kibana!

Kibana 其实有挺多缺点,简单的日志查询写语句还是比较简单的,但是对于更多关键词,你需要写括号 (),或者是逻辑运算符 ANDOR

仔细想想,它其实并不是必须的:

因为,大部分情况下,我们查日志

都是需要命中某些关键词,或者是排除某些关键词

所以如果提供输入框,约定好查询的格式,我想就可以节省很多时间了!

欢迎参观,我会抽空开发,项目地址:https://github.com/Lofanmi/gobana/

6 月啦,补充一张图片上来~

Gobana

规划中的功能:

  • 支持 Elasticsearch
  • 支持阿里云 SLS 查询
  • 支持 Kibana-Proxy 工作模式(如果运维同学没有 Elasticsearch 地址,只提供 Kibana 的权限的话)【首创!!!】
  • 支持图表展示
  • 按照业务归类常用的查询语句
  • 内嵌 Lua 解析引擎,理论上支持任意类型的日志!【首创!!!】

预计 6 月份发初版,敬请期待吧。