(。・∀・)ノ゙嗨

接下来折腾啥好呢?

使用 logstash 采集来自腾讯云 tke 的日志

前提 好久没有给博客除草了,正好最近折腾了下 logstash,记录一下。 为啥要用 logstash 呢,其实是因为在测试环境上面腾讯云 tke 的日志没有开启日志收集,所以在排查问题的时候会十分的痛苦,正好有空了就想着将日志抽出来放进 es 里面,方便以后排查问题,正好看到腾讯云的日志规则是允许将 pod 的 stdout 日志进行采集之后投递到 kafka 的,就小试了一下。 部署 logstash logstash 我选择使用 docker-compose 来进行快速的部署。 以下是部署流程,参考自 deviantony/docker-elk 项目 创建目录 mkdir logstash/config logstash/pipeline -p 创建环境变量 路径 .env ELASTIC_VERSION=8.7.1 LOGSTASH_INTERNAL_PASSWORD='changeme' 创建 Dockerfile 路径 logstasg/Dockerfile ARG ELASTIC_VERSION # https://www.docker.elastic.co/ FROM docker.elastic.co/logstash/logstash:${ELASTIC_VERSION} 配置文件 路径 logstash/config/logstash.yml --- ## Default Logstash configuration from Logstash base image. ## https://github.com/elastic/logstash/blob/main/docker/data/logstash/config/logstash-full.yml # http.host: 0.0.0.0 node.name: logstash 路径 logstash/pipeline/logstash.conf input { beats { port => 5044 } tcp { port => 50000 } } ## Add your filters / logstash plugins configuration here output { elasticsearch { hosts => "elasticsearch:9200" user => "logstash_internal" password => "${LOGSTASH_INTERNAL_PASSWORD}" index => "logstash-%{+YYYY-MM-dd}" } } 启动服务 version: '3....

2023-05-15 10:34:44 · 6 min · 1200 words · johnpoint

2022 年度总结

来了来了,晚到了几天的年度总结,但是总算是没有鸽掉 ~ ...

2022-12-29 10:00:00 · 1 min · 92 words · johnpoint

使用 headscale 异地组网

很久之前看过柠檬大佬的使用 N2N 进行异地组网的文章,大受震撼,但是 N2N 的部署体验很难说得上令人愉悦。 然后就听说了 wireguard 被加入 linux 内核,以下是 wireguard 的介绍: WireGuard是由Jason A. Donenfeld开发的开放源代码VPN程序及协议[1],基于Linux内核实现,利用Curve25519进行密钥交换,ChaCha20用于加密,Poly1305用于数据认证,BLAKE2用于散列函数运算[1],支持IPv4和IPv6的第3层。[2]WireGuard旨在获得比IPsec和OpenVPN更好的性能[3]。 确实,wireguard 性能十分不错,但是配置实在是过于繁琐了,如果要往 wireguard 网络中加入一台设备,则需要修改几乎所有连入网络设备的配置文件,实在是太麻烦了,好在现在已经有了 tailscale 这个服务提供商提供了基于 wireguard 的 0 配置的 VPN 组网方案。 而 headscale 就是 tailscale 中控服务端的开源版本,开源版本支持自己部署,同时没有连入设备的数量限制,于是我花了一点时间将 headscale 部署了一下。 使用到的项目 Github:juanfont/headscale Github:gurucomputing/headscale-ui 部署 headscale 这里我使用 docker-componse 进行部署 version: '3.5' services: headscale: image: headscale/headscale:latest-alpine container_name: headscale volumes: - ./container-config:/etc/headscale - ./container-data/data:/var/lib/headscale ports: - 27896:8080 command: headscale serve restart: unless-stopped headscale-ui: image: ghcr.io/gurucomputing/headscale-ui:latest restart: unless-stopped container_name: headscale-ui ports: - 9443:443 同时我还使用了nginx来进行反向代理,将 headscale-ui 和 headscale 分别部署在了不同的域名下面,因此要做一些 CORS 的处理,Nginx 配置文件参考如下...

2022-11-04 10:00:00 · 2 min · 269 words · johnpoint

使用 ssh 密钥签名 git commit

在 Github commit添加verified标识 这篇文章中,配置好了 gpg 密钥签名作为标识 git commit 是否值得信任带凭证,但是载后面使用签名的过程中渐渐感到了一丝丝的麻烦,因为 gpg 密钥在我日常的生活中并没有很多其他的用处。最近 github 支持了显示通过 ssh 密钥签名的 commit 的功能。ssh 密钥在日常用起来要比 gpg 密钥要多得多,所以配置了一下,顺便写个文章记录操作流程。 git config --global gpg.format ssh git config --global user.signingKey ~/.ssh/id_ed25519.pub git config --global commit.gpgsign true git config --global tag.gpgsign true 一般来说,配置好了这几个选项,就可以顺利的把签名加上了,要是 git commit 的时候提示你 ssh是不支持的格式 那么就意味着当前版本的 git 并不支持通过 ssh 密钥签名 commit,这时候就要自己更新下系统上面的 git 了。

2022-10-05 21:30:37 · 1 min · 53 words · johnpoint

使用 docker-compose 搭建 clickhouse 集群

Docker Compose 配置 version: '3' services: clickhouse-server-ck1: restart: on-failure:10 # 退出非0重启,尝试10次 image: yandex/clickhouse-server container_name: ck1 networks: - ck-network ports: - "8124:8123" - "9001:9000" - "9010:9004" volumes: - `pwd`/clickhouse/:/var/lib/clickhouse/ - `pwd`/clickhouse-server/:/etc/clickhouse-server/ - `pwd`/log/clickhouse-server/:/var/log/clickhouse-server/ ulimits: nofile: soft: "262144" hard: "262144" depends_on: - zookeeper-1 clickhouse-server-ck2: restart: on-failure:10 # 退出非0重启,尝试10次 image: yandex/clickhouse-server container_name: ck2 networks: - ck-network ports: - "8125:8123" - "9002:9000" - "9011:9004" volumes: - `pwd`/clickhouse2/:/var/lib/clickhouse/ - `pwd`/clickhouse-server2/:/etc/clickhouse-server/ - `pwd`/log/clickhouse-server2/:/var/log/clickhouse-server/ ulimits: nofile: soft: "262144" hard: "262144" depends_on: - zookeeper-1 clickhouse-server-ck3: restart: on-failure:10 # 退出非0重启,尝试10次 image: yandex/clickhouse-server container_name: ck3 networks: - ck-network ports: - "8126:8123" - "9003:9000" - "9012:9004" volumes: - `pwd`/clickhouse3/:/var/lib/clickhouse/ - `pwd`/clickhouse-server3/:/etc/clickhouse-server/ - `pwd`/log/clickhouse-server3/:/var/log/clickhouse-server/ ulimits: nofile: soft: "262144" hard: "262144" depends_on: - zookeeper-1 zookeeper-1: restart: on-failure:10 # 退出非0重启,尝试10次 image: zookeeper:3....

2022-08-12 17:30:00 · 26 min · 5510 words · johnpoint

Go 实现瑞士轮排列算法

工作原因接触到了瑞士轮这种赛制,记录一下瑞士轮比赛对手编排的算法 瑞士轮有两个规则 选择积分相近的对手进行比赛 不会重复比赛 写出来的算法如下: type player struct { Id int64 Score int64 Opponent map[int64]struct{} // 曾经遇到过的对手 } // pickTablePlayer 计算瑞士轮比赛排列 func pickTablePlayer(players []int64, playerOpponentMap map[int64]map[int64]struct{}) ([]int64, bool) { if len(players) < 2 { return players, true } whitePlayer := players[0] opponentMap, _ := playerOpponentMap[whitePlayer] for i := range players { if i != 0 { // 判断是否已经比过 if _, has := opponentMap[players[i]]; !has { // 选中 res := make([]int64, 2) res[0] = whitePlayer res[1] = players[i] // 组装剩下排序的数据 var nextRound []int64 nextRound = append(nextRound, players[1:i]....

2022-07-29 10:00:00 · 2 min · 214 words · johnpoint

Oneplus 8T 刷入 LineageOS

劳动节来给博客除除草! 自从一加手机社区发布了官方公告说 Android 12 正式版本出来了之后我就一直在等系统更新的推送,谁知道从4月12日公告出来到今天我都没有收到推送,再加上一加的在 Android 12 后 HOS 会切换成 ColorOS,类原生的特点就没有了,OOS 虽说还会持续维护,但是我既然都用 OOS 了我为啥不自己刷个更加原生的系统呢?比如说 LineageOS。 前期准备 说干就干,先去官网看下有没有支持,芜湖,有支持而且看了下文档还蛮完善的,备份好微信(这个手机里面唯一没有同步功能的app)的数据就打算开始刷机了。 开刷 刷机的过程官方文档已经非常完善了,在这里不重复赘述。 一些要注意的小问题 GAPPS GAPPS 一定要在首次启动系统之前刷入,不然就要双清,之前辛苦配置的东西都无了 SafetyNet 在刷好系统之后,我自然是想打开 ingress 玩下,然后折腾了半天,一直在提醒 ”ingress 需要安全登录“,一开始还以为是代理的问题,疯狂切换代理都没有用,后来查到这个讨论发现是 SafetyNet 的问题,于是 Magisk 刷入了 MagiskHide Props Config、Universal SafetyNet Fix 两个模块解决了这个问题 Universal SafetyNet Fix 这个模块无需任何配置,直接刷入即可生效 MagiskHide Props Config 这个则需要在shell执行指令 props 按照提示选择即可。 相机 自带的相机 app 太拉了,直接停用,在 Google Camera Port 下载了个最新版本的相机,以及挑了个推荐的配置文件。 使用感受 原生的系统真是舒服啊,没有了一些有的没有的app,动画啥的感觉要比HOS要好。高帧率、AOD、蓝牙HD音频编码、屏下指纹这些都没有啥大问题。 甚至有些之前在HOS上面没有体验过的特性,比如说锁屏音乐可视化 总的来说挺满意的,再看看后续使用的过程中有没有啥坑了,就这样。

2022-05-01 11:51:00 · 1 min · 61 words · johnpoint

博客及相关服务部署更新

部署流程更新 众所周知,之前我的博客以及图片托管的服务是通过硬核的DNS分区域解析来实现流量的就近调度,而多个服务器之间的资源文件我一般使用syncthing来进行同步,这个方法显得比较粗糙,但是还挺有效的。最近折腾了下 cloudflare worker 感觉还不错,于是就把博客以及图片托管迁移到了 cloudflare worker 上来,这样一来可以白嫖到不错的全球加速(除中国大陆),而且使用 workers 进行部署可以省下不少的服务器资源。 这个就是我之前的发布工作流程 在这次部署流程更新后他变成了这样,博客由于是 public 代码仓库,所以我的自动构建直接使用了 github action,只要基于之前的配置改改加上 publish 到 cloudflare workers 的 step 就可以直接用了。 而静态文件托管的我一直是存在自建的 gitea 上面,所以配了个 drone 来执行自动 publish 到 cloudflare workers 的工作,总而言之也是挺香的。 5月1日更新 又更改了下,用上了 vercel 的服务,实测这个服务提供的 cdn 要比 cloudflare 在中国大陆访问的快些。 博客主题更新 博客主题也好久没有更新了,这次更新主要是加上了几个能够改进访问体验的 feature。 添加了首页巨幕以及文章头图图片下面的背景颜色,能够自定义在图片还没有加载出来之前显示的颜色 将博客底部版权信息部分的版本号放进了一个js里面,这样就减少了版本号修改时候需要修改的位置 将原来的文章无头图从几张图片中随机选择一张作为头图改成了随机选择一个颜色作为头图 颜色随机取值这里,是取值RGB都在 110-87之间的值,这里的颜色饱和度比较低,看起来比较舒服

2022-04-17 00:40:00 · 1 min · 49 words · johnpoint