阿小信大人的头像
Life is short (You need Python) Bruce Eckel

lua 获取 nginx get 请求中的数组参数的坑2021-05-13 18:41

lua 在 nginx 里面获取 http get 请求的 url 数组参数时有个小坑需要特别注意。

线上的 get 请求传数组参数的形式让人眼花缭乱:

:::url
?p=v1&p;=v2
?p[]=v1&p;[]=v2
?p[0]=v1&p;[1]=v2

三种形式都有,然后 lua 的坑在于获取没有数组下标的数组参数的时候,数据格式可能不一样...导致程序异常。

lua 在 nginx 里面获取到的是:

:::text
raw: ?p=v1&p;=v2 -> {"p":["v1","v2"]}

......
#Linux/Mac#   #nginx 评论[0]阅读全文[889]

php-fpm 超时原因分析 2021-05-13 18:36

## 背景

线上PHP服务,同一台机器上部有AB两个服务,A接收外部请求后再通过本地nginx请求部署在本地的B服务获取数据,同时也有大量的请求直接请求B服务获取数据,偶发会在一段时间内Nginx大量返回504请求超时和少量502连接被断开。

超时期间机器的CPU、内存、IO等负载都正常,请求量相对有增加但QPS不到100,比起高峰时间的请求量(QPS差不多2800)这点起伏几乎可以忽略不计,高峰时期服务却没有任何异常。通过日志中的requestid分析,发现从A服务到B服务之间的日志打印时间间隔很长,请求链路从A服务的最后一条日志到B服务的第一条日志之间间隔有10多秒之长。

......
#Linux/Mac#   评论[0]阅读全文[770]

filebeat使用elasticsearch的pipeline处理日志内容2018-07-10 11:32

以前使用Logstash时,都是通过logstash来对日志内容做过滤解析等操作,现在6.3.0版本中,可以通过filebeat直接写数据到es中,要对日志内容做处理的话设置对应的pipeline就可以。

以gunicorn的access日志内容为例:

[10/Jul/2018:11:13:55 +0800] 10.242.169.166 "-" "Jakarta Commons-HttpClient/3.0" "POST /message/entry HTTP/1.0" 200 <13968> 0.061638

有以上内容的日志,记录请求发生的时间,发起请求的i

......
#Linux/Mac#   #elk 评论[1]阅读全文[11286]

搭建filebeat-elasticsearch-kibana(V6.3.0)日志监控2018-07-05 12:52

上次使用ELK还是两年前,现在使用当时的方法发现不行了。

在ELK Stack最新的6.3.0版本,使用filebeat进行日志收集,统一存储到elasticsearch并用kibana展示。

filebeat \

filebeat - elasticsearch - kibana - browser

filebeat /

在统一日志存放的机器上安装elasticsearch和kibana

kibana可以使用rpm包直接安装:

rpm -ivh kibana-6.3.0-x86_64.rpm

默认配置文件在

......
#Linux/Mac#   #elk 评论[0]阅读全文[2033]

Prometheus使用笔记2018-04-03 18:34

#### 环境说明

IP1上以容器的方式运行织云服务,自监控方案采用Prometheus监控 IP1 ,监控host和织云服务容器两个层次的数据。

使用Prometheus官方Node Exporter收集host硬件和操作系统数据,使用Google的cAdvisor收集容器数据,并使用Grafana进行展示。

在IP2上运行Prometheus Server和Grafana,在host上运行Node Exporter和cAdvisor。

#### 安装程序

- 安装Node Exporter

这里采用下载二进制文件安装运行在IP1的9100端口

......
#Linux/Mac#   评论[0]阅读全文[3466]

模拟netflow2018-03-05 20:52

#### 数据源

使用[NetFlow-Generator](https://github.com/mshindo/NetFlow-Generator)模拟生成netflow v5数据并发送到指定的collector

克隆NetFlow-Generator后,在其目录执行`make`即可生成一个`flowgen`可执行文件

启动flowgen产生netflow数据并上报的指定地址

./flowgen -h
Usage: flowgen [options] [flowrec-options]
options:
-n, --c

......
#Linux/Mac#   评论[0]阅读全文[2632]

创建支持ssh登录和模拟网络设备的CentOS镜像2018-03-02 11:37

#### 主机安装docker

安装docker

yum install docker
docker version # 1.12.6

移动docker的数据目录到较大磁盘下

mv /var/lib/docker/ /data/docker
ln -sb /data/docker /var/lib/docker

设置docker OPTIONS:`/etc/sysconfig/docker`

# 添加如下配置 (存在就更新),docker.oa.com 是内网docker镜像地址
# 机器不支持NAT

......
#Linux/Mac#   #docker 评论[0]阅读全文[1916]

docker 1.12.6 安装使用笔记2018-02-28 20:04

#### 安装docker

安装docker

yum install docker
docker version

-----------------------------------------------------------------

#### 启动docker

移动docker的数据目录到较大磁盘下

mv /var/lib/docker/ /data/docker
ln -sb /data/docker /var/lib/docker

添加docker的镜像存储库

vim /etc/sys

......
#Linux/Mac#   #docker 评论[1]阅读全文[2340]