grafana dashboard django bug修复

grafana的官方有很多用户提供的dashboard样本,其中关于django的有

https://grafana.com/grafana/dashboards/9528

对应的django-metric是https://github.com/korfuri/django-prometheus/

但是这个dashboard的页面是有问题的。页面的选择器选择的label是app,但是prometheus采集到的metric label是service和job。所以我们需要把dashboard json做一下修改。
继续阅读“grafana dashboard django bug修复”

Ant design pro删除BasicLayout国际化/帮助/顶部搜索

最近学了下react那一套东西,从react的官方文档和官方示例开始看起,感觉官方文档写得相当详实漂亮,由浅入深让人很容易接受。但想着国内可是有antd这么牛逼的轮子,作为react的UI组可是世界第二的存在(star数),肯定要支持一下学学啦,然后开始了极让人自闭的ant design之旅。
继续阅读“Ant design pro删除BasicLayout国际化/帮助/顶部搜索”

kubernetes集群中服务的负载均衡和外部发现

传统的负载均衡策略一般是:

客户端 -> dns -> 4层库在均衡(HA) -> 7层负载均衡 -> 具体的后端服务

这种方式处理服务发现和动态配置比较难搞,比如后端服务动态扩缩容什么的。
一开始的做法肯定是OP人工维护7层负载均衡集群配置,以nginx为例,用git仓库之类的做人工服务发现和变更。这样很显然是不科学的。然后就会开始希望用种种自动化的手段去处理服务发现,比如微博的nginx-upsync-module,比如nginx-lua,比如openresty,比如etcd+confd等种种手段实现服务发现和自动化配置,但还是有很多瑕疵,比如etcd+confd每次修改upstream的服务后端就要reload nginx,nginx的策略会新开x个worker,容易造成性能问题甚至机器顶不住。而且vm服务机器的逻辑和upstream挂钩也有问题,总之,麻烦的很。

而kubernetes处理这一套服务发现和负载均衡的方法就挺好用的,比如接下来会实践的这一套nginx-ingress+externalIP+dns的方式就很直观而且方便自动化流程,大致策略如下:

客户端 -> dns -> k8s-nginx-ingress-service(in ExternalIP) -> ingress-obj -> service -> pod

继续阅读“kubernetes集群中服务的负载均衡和外部发现”

WireGuard突破BeiJing GreatWall

有好几个月没有写blog了,原因也挺多的。首先过年嘛,一直有点懒散,然后整天写业务代码又无聊又忙,实际可记录的东西本来也不多,又懒的记。一些新工具啥的,感觉记了也没什么意义,反正都记脑子里了。最近读了一些经典框架源码,学了一些源码课程,也挺有一些收获,不过这样的东西更喜欢记实体笔记一些。综上,总而言之挺久没记blog了。

最近Beijing的伟大长城也是越来越狠了,我的ss从一开始的稳定,居然变得不能用了。每次都是刚开始能有连接信息,然后一小会之后,直接telnet都不通了,包括22和ss的端口都断了。换了几十个ip也不管用,port换了无数个,也不管用。

特别是这几周因为贫穷的原因被迫搬家,租到了一个鸟不拉屎的地方,连联通都没得办,非得办啥长城宽带,一听这名字就不是啥好鸟,果然,有了the great wall,你想探头出去看看,不可能的。

但平时下班和周末休息的时候没法翻墙实在是太痛苦了,我尝试了很多种办法之后,找到了一个相对好的方式解决了这个问题,那就是这篇blog的主题了,WireGuard VPN。
继续阅读“WireGuard突破BeiJing GreatWall”

myip.calmkart.com获取自己的出口ip

最近在学陶辉的Nginx核心知识100讲,听到postread阶段的时候,顺手用realip模块弄了个小东西,用来获取自己的出口ip.

地址myip.calmkart.com

# curl或访问myip.calmkart.com即可,将返回你的出口ip
curl myip.calmkart.com

类似ifconfig.me,不细说了,小东西,留个存根。