YULLIN's Blog - Articles in TECH SKILLS category

输出重定向到文件的时效性

在做一个监控脚本时,需要将结果输出到一个文件,然后另外一个脚本来读取该文件的内容作为结果进行判断。
经过测试发现,shell中的命令行重定向功能有个特点,即在命令一开始执行时,就已开始创建了对应的文件,下面举个例子来进行说明:

# test.py > /tmp/test.log

这条命令中,假如该命令执行总共需要30秒,而在该命令一开始执行时,/tmp/test.log就已创建,而不是等到命令执行完成再创建。而这时如果有执行频率较高,在30秒内去检查/tmp/test.log文件内的内容的话,有可能是检查不到正确的内容的。
所以我们在使用重定向功能时需要注意到这点,创建文件的时间是否就是你所设想的时间呢?

Read More

install php5.6 on centos6

本次安装系统环境为Centos6 x86_64

# cd /usr/local/src
# wget http://cn2.php.net/distributions/php-5.6.39.tar.gz
# tar xzf php-5.6.39.tar.xz

安装依赖包

# yum install gcc gcc-c++ bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel libxml2-devel libcurl-devel bzip2-devel readline-devel libedit-devel sqlite-devel

开始编译安装(这里先别急着去执行,先往文章后面看看)

# ./configure \
--prefix=/usr/local/php …

Read More

Nginx反向代理配置

这里主要记录Nginx服务器的反向代理proxy_pass配置方法中容易踩坑的地方,就是经常被提到的url的/问题的相关说明,需要的朋友可以参考下

普通反向代理

Nginx的普通的反向代理配置还是比较简单的,如:

location ~ /*
{
    proxy_pass http://192.168.1.12:8080;
}

或者可以

location /
{
    proxy_pass http://192.168.1.12:8080;
}

如果要配置一个相对复杂的反向代理,比如,将url中以/test/开头的请求转发到后台对应的某台server上
可以在Nginx里设置一个变量,来临时保存/test/后面的路径信息

location ^~ /test/
{
    if ($request_uri ~ /test/(\d+)/(.+))
    {
        set $id $1;
        set $params $2;
    }
    proxy_pass http://backend$id.domain …

Read More

python字典和列表赋值的坑

今天在实际脚本中遇到了一个python的变量赋值的坑,将字典从一个变量a赋值给另外一个变量b之后,修改了原始变量a的值,本意是保持b变量为原始值不动,结果修改a之后发现b的值也随着改变了,经过一番查询以及自己的测试之后,确认原来python中的list和dict数据类型采用的是浅拷贝。

列表的具体测试如下:

>>> a = ['1']
>>> b = a
>>> a.append('2')
>>> a
['1', '2']
>>> b
['1', '2']

可以看到当改变a的值时,b的值也跟着一起改变了。 再看字典的例子:

>>> ar = {'x':'1','y':'2'}
>>> br = ar
>>> br
{'y': '2', 'x': '1'}
>>> ar['x'] = '3'
>>> br
{'y': '2', 'x': '3'}
>>> ar
{'y': '2', 'x': '3'}

其实还可以有更简单的验证方式 …

Read More

curl usage note

CURL可以详细打印出请求过程每一步所消耗的时间,对于我们日常的排查故障非常有用。
下面说一下具体的使用方法:

1.建立一个命令格式文件

\n 
       time_namelookup:  %{time_namelookup}\n
               time_connect:  %{time_connect}\n
            time_appconnect:  %{time_appconnect}\n
           time_pretransfer:  %{time_pretransfer}\n
              time_redirect:  %{time_redirect}\n
         time_starttransfer:  %{time_starttransfer}\n
                            ----------\n
                 time_total:  %{time_total}\n
\n

说明:
time_namelookup:DNS解析域名时间,把域名--->ip的时间
time_connect:TCP连接的时间,三次握手的时间
time_appconnect:SSL|SSH等上层连接建立的时间
time_pretransfer:从请求开始到到响应开始传输的时间
time_redirect:从开始到最后一个请求事务的时间
time_starttransfer:从请求开始到第一个字节将要传输的时间
time_total:总时间

2.命令使用方法 …

Read More

configure elasticsearch logstash kibana

本文主要记录ELK的测试环境的搭建过程

1.环境以及架构

Jumper 系统版本 IP地址 主机名 角色
d1000 CENTOS 7 10.2.8.30 centosT-AutomELK-8030 Kibana
d1000 CENTOS 7 10.2.8.31 centosT-AutomELK-8031 Logstash
d1000 CENTOS 7 10.2.8.32 centosT-AutomELK-8032 ElasticSearch

本次的所有环境均是基于CENTOS7系统进行搭建。
首先是准备环境,安装JAVA运行环境JDK,需要先上传下载好的JDK,这里我下载的是rpm安装包。 由于安全原因,不能直接上传,只能先上传到d1000.intsig.net的FTP服务器上,然后通过wget命令进行下载。

wget http://10.2 …

Read More

install and config openresty

安装配置openresty

  1. 下载源码
cd /usr/local/src
wget https://openresty.org/download/openresty-1.13.6.2.tar.gz
  1. 解压后编译安装
yum install pcre-devel openssl-devel gcc curl  #需要事先准备好需要的依赖包
tar xzf openresty-1.13.6.2.tar.gz
cd openresty-1.13.6.2
 ./configure --prefix=/usr/local/openresty --with-luajit --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-debug
gmake -j2 …

Read More

configure elasticsearch ingest node

在elastic 5.*版本开始支持ingest node功能,他可以在一定程度上替代Logstash的处理功能,只要是熟悉了其支持的格式之后,配置还是比较简单的。

1.测试可以用如下命令

curl -v -H 'Content-Type: application/json' -X POST 'http://10.2.4.34:9200/_ingest/pipeline/_simulate' -d@filebeat.test.json

filebeat.test.json的内容如下:

{
  "pipeline" : {
    "description" : "nginx access log",
    "processors": [
      {
        "grok": {
          "field": "message",
          "patterns": ["%{IP:client_ip} %{TIMESTAMP_ISO8601:iso_time} %{BASE10NUM:timestamp} %{BASE10NUM …

Read More

install php extension imagick

linux下配置imagick的步骤为(以centOS为例):

1. 安装ImageMagick

yum install ImageMagick-devel
/usr/local/imagemagick/bin/convert -sample 25%x25% a.jpg b.jpg #测试语句

2. 安装php的imagick扩展模块 (http://pecl.php.net/package/imagick)

wget http://pecl.php.net/get/imagick-3.1.0RC2.tgz
tar -zxvf imagick-3.1.0RC2.tgz
/usr/local/php/bin/phpize                   #在项目目录下运行phpize …

Read More