自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IMJCW的博客

小孩子的心思像星空,看的见却看不懂。

  • 博客(58)
  • 收藏
  • 关注

原创 GitHub Action构建并推送DockerHub

偶尔会构建一些自己用的容器,之前一直用的是提供的构建服务,然而开始收费了,那只能另寻他法。之所以不本地构建推送,是因为构建的时候经常因为网络问题,访问不了一些资源,所以就依赖外网的服务。之前知道可以做到这个事情,由于官方提供了相关服务,我对于实时性的需求不高,所以一般就将推送到就了事了。如下图操作:这里使用了手动构建,文件变更之后不会自动构建。

2022-10-31 10:31:43 601 1

原创 配置一个 Github Actions 定时任务

项目中,偶尔会需要用到工作日和休假相关的数据信息。而这个数据是根据国家发布的信息来确定的,每年都不一样。故想写个脚本,生成来年的节假日信息。然而,想要长期执行,需要有个稳定的服务来维持。服务器成本较高,本地不稳定。于是想到了。快去玩耍吧,你值得拥有。httpshttpshttpshttpshttpshttpshttpshttps。.........

2022-07-19 10:47:49 3860

原创 Windows10远程桌面异常记录

管理员已结束会话、建立连接时发生错误、出现网络问题打开编辑组策略计算机配置->管理模板->Windows组件->远程桌面服务->远程桌面会话主机->远程会话环境右侧找到“为远程桌面连接使用WDDM图形显示程序”,右键编辑为已禁用,保存重启电脑未启用对服务器的远程访问、远程计算机已关闭、远程计算机再网络上不可用打开远程桌面设置打开远程桌面您的凭据不工作 之前用于连接到******的凭据无法工作。请输入新凭据的问题检索凭据管理器2. W

2022-03-14 11:38:19 1210

原创 Jira统计工时

背景随着公司流程越来越正规,也越来越卷了。为了统计项目的输入输出,公司要求要知道每个人在项目上花费的时间,用于统计输入。环境JiraRestApi使用官方的API解决这个问题。接口: /rest/api/latest/search请求方式: GET参数:keytypedemojqlstringworklogAuthor%20%3D%20你的用户名%20AND%20worklogDate%20%3E%3D%20%22开始时间%22%20AND%20worklo

2022-03-04 10:31:16 4558

原创 Nginx+LUA实现动态反向代理

前言作者本人使用的是远程开发的模式,所以会用到DNS解析服务,和LUA脚本本地通过 Hyper-V 安装了一个 Ubuntu 虚拟机,并在虚拟机中安装了一些 Docker 服务。然后通过路由转发将容器路由转发到宿主机,相当于是将容器做成了一个个服务器。然而,尴尬的是,为了能够提升服务效率,我将代码都放在了虚拟机中。开发的方式也是远程开发,但这个时候,调试的时候出错了。因为 PHP 是通过端口传递 DEBUG 内容的。虚拟机中监听了 9000 端口,宿主机通过访问了容器服务,容器发现宿主机的 9

2022-01-30 13:30:32 3531

原创 Docker设置DNS

前言之前将 Docker 中的路由转发到了宿主机,相当于每个容器都变成了一个小型服务器。然而各个服务之间都会可能会通过自定义域名进行交互,这个时候,我们需要在容器中的 etc/hosts 中写入所依赖的服务IP及其域名。为了能够更好的解决这个问题,再次之前自建了 DNS 服务,这个时候,只需要指定一下 Docker 的 DNS 配置即可。配置Linux这里以 Ubuntu20.04 为例编辑 Docker 的 daemon.jsonsudo vim /etc/docker/daemon.

2022-01-30 10:31:52 4658

原创 Ubuntu使用dnsmasq自建dns服务

前言 服务上自定义了一些域名,当有用户在局域网中能够通过自定义域名访问到这些服务。

2022-01-30 10:23:25 2996

原创 Docker容器IP访问容器服务

前言 使用 Docker 搭建了一些服务,每一次新增服务,都需要在 nginx 的容器做一些操作。 于是乎,就探究探究能不能直接通过 容器IP+端口 来访问容器中的服务。

2022-01-30 10:16:28 4692 1

原创 Hyper-V固定虚拟机IP

前言 前段时间体验了一下 Docker for Windows,整体体验不是很好,偶现启动失败的异常情况。这种情况在更换成SSD之后,明显减少。 同时,也体验了 Win10 的 Linux 子系统。不知为何,wsl 相对稳定,且启动较快,就是访问宿主机文件着实比较慢,再加上公司安全政策,安装了一些软件,影响文件 IO。wsl2 在电脑重新启动之后,就再也启动不了,着实让人头疼。而且,wsl 和 Hyper-V 模式的切换也是个问题。

2022-01-30 10:05:21 3584

原创 阿里云DKMS对接记录

背景因公司安全基线需求,需要对一些落库值进行加密处理。在之前项目的方案里,是通过 AES256 做了一些自定义处理,对值进行加密,其中密钥和偏移量都是由运维同事维护的。为了更加安全,公司层面直接使用了阿里云的 KMS 服务。跟阿里云业务人员沟通之后,最终决定使用企业版KMS:DKMS。然而,官方只有 Java 版本的 SDK。SDK实现传送门参考了官方 KMS 的 SDK 之后,使用了其一些类库,实现了 PHP 版本的 DKMS SDK。TIPS:仅实现了 encrypt 和 decryp

2022-01-12 15:23:18 443

原创 Gitlab+Jenkins+SonarQube实现代码质量扫描自动化

背景按照安全基线的要求,需要对上线前的代码进行扫描。此前,测试已经搭建过一个扫描服务,sonarqube。流程定义大致的流程如下:开发提交代码在 Gitlab 上提交MRJenkins 接收到创建MR的通知,检查是否符合规则若符合规则,则执行扫描扫描结束后,执行 Python 脚本,获取扫描状态根据扫描结果,设置临时环境变量评论MR基础环境GitLabJenkinsSonarqubeSonarqube配置安装多分支扩展(开发版路过)传送门生成访问令牌配置路

2021-09-10 16:33:11 3940 1

原创 基于Git WebHook+Docker的自动化部署

前言很久之前,有个云服务器,上面挂着自己的 Blog,每次发布代码的时候,都需要手动到服务器上 pull 代码,很是麻烦。于是,折腾了一下 Gitee 的 Hook,实现了自动部署的功能。一些答复为什么不用比较成熟的工具?比如:Jenkins、CI/CD。1、资源问题,本身就一台小服务器,没那么多资源搞这个。2、自己搞个简单的,免费,香。是否会停服?会有短暂停服,如果不像停服,需要改造一下策略。是否支持多副本?不支持,因为作者的需求比较简单,未实现多副本的方案。环境DockerP

2021-09-03 14:18:47 593

原创 在Colaboratory上运行Go程序

前言有一次,在逛 youtube 时,看到有个播主直接在文档上运行代码片段。这把我一下子整蒙了,这是什么神操作?一番搜索之后,知道了这是 Google 的一个服务 Colaboratory。Colaboratory先附上地址:传送门。主要用于机器学习方面,可以直接运行 Python 代码。当然,我们也可以用于编写教程。想想,边分享,边执行代码是多么爽(装逼)的事情。运行Go程序言归正传,并不是所有人都会或都需要写 Python,那我们可以安装自己需要的语言,当然,写法上还是有一些变通的。

2021-08-25 17:44:24 293

原创 Golang定义包版本

背景上文《go.mod 使用私有依赖》的问题解决之后,遇到了包版本问题。环境gitlabGolang v1.16.3解决方案Golang 的包版本是通过 git tag 来管理的。我们只需要对我们的项目打一个 tag 就行,格式:v1.0.0。包版本只支持 3 位版本号,定义时需要注意。注意点虽然打过 tag 的内容可以修改,但对于已经引用过当前包的项目来说,构建时会默认使用本地缓存,而不是使用修改过后的内容。...

2021-08-20 12:08:45 826

原创 go.mod 使用私有依赖

背景启动了一个新项目,做一个运维小工具,准备尝试一下 Golang。因需要对接内部的 RABC 系统,索性封装了一个 SDK,也方便之后新项目的对接使用。那么,怎么能够使用 go.mod 来使用私有的依赖呢?环境gitlab(私有)golang v1.16.3解决方案我们需要对 Golang 做一些简单的配置。1、使用 go modulego env -w GO111MODULE="on"2、配置 GOPRIVATE,当使用 go get 时,指定的域名会直接通过 git 拉取.

2021-08-20 11:37:52 957

原创 MySQL事务嵌套

前言MySQL 在开始某个事务的时候,会隐式提交上一个事务。所以 MySQL 本身是不支持事务嵌套的。但 MySQL 也给我们提供了一个 SAVEPOINT 来做出类似事务嵌套的动作,我们将运用 SAVEPOINT 来帮助我们实现事务嵌套。MySQL示例准备一张表,用于测试。CREATE TABLE `demo_transaction` ( `id` int(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=u

2021-04-12 17:09:35 2338

原创 Golang学习笔记之使用Redis

前言Redis包包:github.com/go-redis/redis文档:传送门Demopackage mainimport ( "context" "fmt" "time" "github.com/go-redis/redis")var ctx = context.Background()func main() { client := getRedis() // get value, err := client.Get(

2021-04-09 16:14:00 226

原创 Github镜像站

前言最近 VPN 被各种封禁,Github 也上不了了,能否上去看缘分。于是搜了下,是否有镜像站。站点站点比较慢,拉取速度还可以。hub.fastgit.orgTIPS:出于安全考虑,不建议登录账户信息使用方式将 github.com/xx/xx 替换为 hub.fastgit.org/xx/xx。比如:github.com/XiaoMi/Gaea 可以使用 hub.fastgit.org/XiaoMi/Gaea 访问。TIPS:有些项目比较冷门,站点不会缓存,需要刷新等待。最后

2021-03-23 09:33:03 2134

原创 INSERT INTO vs REPLACE INTO vs INSERT IGNORE INTO

前言在看某块功能的代码的时候,看到了比较有意思的 SQL 语句,如下:INSERT IGNORE INTO ...INSERT INTO用的最多的插入语句了,直接插入一条数据,如果主键冲突,会报错。REPLACE INTO替换数据,SQL 语句中必须存在主键或者唯一键,如果存在,则更新,否则插入。单个 INSERT INTO 语句插入多个值时,InnoDB 表中,会认为这是单个事务,要么都成功,要么都失败。如果用了 INSERT IGNORE INTO 语句插入多个值时,InnoDB 表中

2021-03-16 14:59:29 202

原创 Element-ui获取上传的Excel并预览

前言之前写了一篇《SheetJS生成/解析Excel》,并在实际项目中使用了,因为项目使用的是 Element-UI 写的,其中,用了 upload 组件。实践直接上代码(这里借用了之前的解析代码):<el-upload ref="upload" limit="1" action="" :auto-upload="false" :on-change="parseExcel"></el-upload>export default {

2021-03-10 13:44:30 1883 7

原创 SheetJS生成/解析Excel

前言新公司的后台经常有一些数据导出的功能,而不少情况是导出筛选出来的数据(没有分页的那种)。这个时候,再让后端去跑一遍逻辑,有点浪费,如果前端可以自己做完就完美了。SheetJS(js-xlsx)项目地址:sheetjs因为需求比较简单,只是导入导出,目前还没遇到什么问题。官方有 Pro 版,看到有人说过,有很多版本,具体报价还是看诉求。兼容性使用方式官方的 README.md 已经介绍的很详细了,下面简单介绍一下。使用CDN<script src="https://unpkg

2021-03-08 10:42:50 7251 3

原创 PHP 限制定时任务进程数量

前言现在的工作中,经常要写一些脚本做一些异步的操作。一般是大量的数据修改,或者解决部分并发问题。为了能够稳定的做好数据处理,一般情况下会用定时脚本的方式。那么问题来了。可能存在的问题当我们处理大量数据的时候,脚本的执行时间可能很长,或者重复处理某条数据(写错的情况下)。为了避免数据的重复处理、运行脚本过多导致服务器压力过大等问题,我们需要限制脚本的运行数量。如何做思路一查询某种标识的进程数量,如果超过一定数量,则直接退出,不处理。思路二记录每次的PID,可以使用 文件、redis、m

2021-03-02 16:26:31 274

原创 wkhtmltopdf服务

前言之前写过一篇 《Lumen生成PDF》 的文章,当时在生成 PDF 的时候,遇到了一些问题,并加以解决了。前段时间,项目组中的小伙伴发现了一个好项目 wkhtmltopdf/wkhtmltopdf。可以直接将 HTML 转换成 PDF,这跟我们之前的诉求一致。Docker版KnpLabs/snappy 是基于 wkhtmltopdf/wkhtmltopdf 扩展而来的 PHP 项目。我们通过加工,将其做成一个服务。环境信息PHP7.4+swoolecomposersupervis

2021-02-22 17:38:44 899

原创 ELKF日志学习(十四)Kibana基于Sentinl实现钉钉告警

前言最好先学习一下 sentinl 的使用,以及 Elasticsearch 的语法。代码仓库talk-lucky/elkf-study配置流程如果不熟悉的话,建议先使用 Wizard 来配置一些东西,再转换成 Advanced。一般分四部分,分别是:输入、条件、行为、其它。输入这个一般是指定 index,配置一些筛选条件,比如(这是 Advanced 的示例):{ "search":{ "request":{ "index":[

2021-01-11 09:19:45 895

原创 ELKF日志学习(十三)Kibana安装Sentinl插件

前言低版本的 Kibana 中,想要实现钉钉告警,只能通过第三方插件来实现。这也就是为什么我们需要使用 Kibana:6.5.4 和 Kibana:7.6.1 来介绍了。除了第三方插件,Elasticsearch 也可以实现钉钉告警,但是 6.5.4 的版本中,Elasticsearch 不支持 webhook,所以就只能使用插件了。还有一个用第三方插件的好处就是,免费!免费!免费!Elasticsearch 的白金版才能实现告警,但需要收费。不过,这对于有这方面需求的公司,应该也是能负担的。安

2021-01-11 09:19:27 565

原创 ELKF日志学习(十二)Kibana基础介绍

前言kibana 是数据分析和可视化平台,通常依赖 elasticsearch 。因为 Kibana 的配置相对于其它模块相对较少,这里大部分是类似于使用教程。代码仓库talk-lucky/elkf-study优点&能力还是直接看官网吧,这个懒得截图了。传送门注意点配置方面这里分别提供了两个版本的 Dockerfile 配置。在 Kibana 方面,有点差异。kibana/kibana.yml 文件中。server.name: kibanaserver.host: 0.0.

2021-01-11 09:19:08 124

原创 ELKF日志学习(十一)Logstash实现钉钉告警(莫当真)

前言本来不想写这篇文章的,奈何有人崇尚这个,顺带介绍一下,扩展一下思路。代码仓库talk-lucky/elkf-study弊端比如:当 499(HTTP 状态码) 在半小时内出现了 50 次,需要实现告警。这种情况就不能自定义了,只能说,出现 499 就告警,这个很傻。麻烦一点的解决方案就是统计后,写入某一个日志文件,然后再根据来源来分辨是否发送告警。好像有点傻…毕竟,都已经统计了,直接告警就行,还要写日志,再通过 Logstash 发送告警,有点冗余。至于怎么统计,好像有个 KSQL

2021-01-08 14:20:53 613

原创 ELKF日志学习(十)Logstash解析日志成json

前言之前大致说了一下 Logstash 的能力。关于输入输出并不多做介绍了,这里主要讲解一下日志解析部分。代码仓库talk-lucky/elkf-studyGrok原理很简单,就是 正则。这里有个非常实用的网站 Grok Debugger,可以帮助我们验证调试解日志的正则。(可能需要自备梯子)官方有一部分预定义 grok 的表达式,可以参考,我们也可以编写一些预定义的表达式供后续使用。Kibana 也提供了相应的工具,只不过没那么好用罢了。示例比如,有这么一段日志(nginx/acce

2021-01-08 14:20:37 936

原创 ELKF日志学习(九)Logstash基础介绍

前言Logstash 是数据收集引擎,可以对数据进行过滤、分析、丰富、统一格式等操作,存储到用户指定的位置,包含但不限于文件、 elasticsearch 。配置Logstash 的配置分为 3 部分,输入、过滤器 和 输出。input { # 这里填写输入部分}filter { # 这里填写过滤、解析部分}output { # 这里填写解析部分}输入官方文档传送门相对于 FileBeat,Logstash 的输入类型丰富很多。支持 FileBeat、

2021-01-08 14:20:21 147

原创 ELKF日志学习(八)Filebeat写入Elasticsearch

前言上节将日志存储为 json 格式了,并通过 FileBeat 解析了 json 格式。那我们可以直接将 json 日志写入 Elasticsearch 中了。写入 Elasticsearch官方文档:传送门直接写入为了方便,这里设置了 Elasticsearch 是免密的。output.elasticsearch: hosts: ["elasticsearch:9200"]默认的 index 是 filebeat-* 格式的。我们可以自定义 index。output.elast

2021-01-04 13:48:40 639

原创 ELKF日志学习(七)Filebeat解析json

这是 EKF 的部分,抛去了 Logstash。前言有些时候,我们已经将日志存储成了 json 的格式,而且不需要经过 Logstash 了,我们可以直接将日志写入 Elasticsearch 中。识别 jsonFileBeat 可以解析 json 格式的日志,并将其传递给 Elasticsearch。 比如:filebeat.inputs: - type: log enabled: true fields: source: nginx_access_log .

2020-12-30 12:18:34 1968

原创 ELKF日志学习(六)FileBeat过滤日志

前言在分析日志的时候,是否有遇到过一些无用的日志?这种情况最好是处理好记录日志的情况,如果无法处理,我们只能过滤了。include_lines指定记录包含某些内容的行,比如:filebeat.inputs: - type: log paths: - /var/log/lumen/lumen.log include_lines: ['pro.ERROR', 'pro.WARN']这样 FileBeat 就会收集包含 pro.ERROR、pro.WARN 的日志行。

2020-12-29 11:21:29 5237

原创 ELKF日志学习(五)FileBeat解析多行日志

前言在我们的日常工作中,日志并不像 nginx/access.log 那样整齐,每一行都代表一条日志记录。通常业务日志、错误日志经常出现跨行的情况,最常见的就是栈。[2020-11-26 05:43:31] local.ERROR: Error Processing Request {"exception":"[object] (Exception(code: 1): Error Processing Request at /var/www/html/crm/service/src/app/Http/

2020-12-28 10:34:07 1383

原创 ELKF日志学习(四)FileBeat基础配置

前言在 《ELKF日志学习(一)前言》 中介绍过 FileBeat,是一个轻量级的开源日志文件数据搜集器,负责对服务的日志进行收集。因为 logstash 是 jvm 跑的,资源消耗比较大,所以后来作者又用 golang 写了一个功能较少但是资源消耗也小的轻量级的 logstash-forwarder。不过作者只是一个人,加入 http://elastic.co 公司以后,因为 es 公司本身还收购了另一个开源项目 packetbeat,而这个项目专门就是用 golang 的,有整个团队,所以 es

2020-12-24 09:05:17 245

原创 ELKF日志学习(三)EKF平台搭建 Docker单机

本文和 《ELKF日志学习(二)ELKF平台搭建 Docker单机》 的区别如下:去除了 Logstash 模块。Filebeat 直接写入 Elasticsearch。熟悉者可以直接进入相应目录安装环境。前言本文是基于 hub.docker.com 站点提供的 Docker 容器进行搭建的,且是 单机 ,仅用于学习。代码仓库talk-lucky/elkf-study EKF目录说明为了能够达到更好的学习效果,这里将 Elasticsearch 设置成了无需密码的状态。同时,El.

2020-12-23 16:24:50 353

原创 ELKF日志学习(二)ELKF平台搭建 Docker单机

前言本文是基于 hub.docker.com 站点提供的 Docker 容器进行搭建的,且是 单机 ,仅用于学习。代码仓库talk-lucky/elkf-study ELKF目录说明为了能够达到更好的学习效果,这里将 Elasticsearch 设置成了无需密码的状态。同时,Elasticsearch 也用的是免费版。后期告警部分,会使用 Elasticsearch 白金收费版,默认只有试用 30 天,如果需要更长时间的试用,需要付费购买。镜像版本Docker 镜像版本: 7.6.1。

2020-12-23 16:23:23 507

原创 ELKF日志学习(一)前言

背景随着业务的不断发展,公司也越来越注重产品的质量和其稳定性,主张快速发现问题,快速解决问题。日志分析也就进入了我们必做的环节之一。由于公司目前都是自建的服务,现有的服务是 EKF 的形式,也就基于这个学习了一番。在经过一番了解后,对日志系统有了一定的了解,便以文章记录所学。代码仓库talk-lucky/elkf-study什么是ELKFELKF 是 Elasticsearch 、 Logstash 、 Kibana 、 Filebeat 的简称。下面是对于这些软件作用的简述:名

2020-12-17 13:42:27 465 1

原创 JS数组合并(5种)

前言项目过程中,经常会遇到 JS 数组合并的情况,时常为这个纠结。这里整理一下。简单而实用的for最容易想到的莫过于 for 了。会变更原数组,当然也可以写成生成新数组的形式。let arr = [1, 2]let arr2 = [3, 4]for (let i in arr2) { arr.push(arr2[i])}console.log(arr)// [1, 2, 3, 4]arr.concat(arr2)会生成新的数组。let arr = [1, 2]let

2020-12-03 13:31:53 103758 12

原创 Laravel使用Casts转换类型

本文主要用于记录学习,具体操作建议查看更加详细的官方文档。传送门本文只记录了其中一部分常用的用法。文中 demo 来自官方文档。前言有时候,数据库里取出的数据,需要我们手动处理相应格式。比如,某个字段存储的是 json,那么在 orm 取出数据后,手动再 json_encode,处理成我们可识别的样子。默认的格式类型官方文档中,明确指出了目前已经定义的类型。传送门integerrealfloatdoubledecimal:<digits> 例如:decimal:2.

2020-11-23 09:42:19 3089

原创 Docker ELKF平台搭建 单机

申明本文是基于 hub.docker.com 站点提供的 Docker 容器进行搭建的,且是 单机 ,仅用于学习。简介ELKF 是 Elasticsearch 、 Logstash 、 Kibana 、 Filebeat。filebeat 是轻量级的开源日志文件数据搜集器,负责对服务的日志进行收集。logstash 是数据收集引擎,可以对数据进行过滤、分析、丰富、统一格式等操作,存储到用户指定的位置,包含但不限于文件、 elasticsearch 。elasticsearch 是存储、搜索和分

2020-11-05 16:09:26 672 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除