Elasticsearch 消息过期(TTL)

Graylog2 可以使用 ES 作为 message 的 index,通过 ES 的 TTL 功能,可以定期的删除过期的 log 信息,有点类似 logrotate。默认情况下,_ttl 是关闭的,
# curl -XGET http://111.111.152.147:9200/graylog2/message/_mapping?pretty=true
{
  "message" : {
    "dynamic_templates" : [ {
      "store_generic" : {
        "mapping" : {
          "index" : "not_analyzed"
        },
        "match" : "*"
      }
    } ],
    "properties" : {
      "created_at" : {
        "type" : "double",
        "ignore_malformed" : false
      },
      "facility" : {
        "type" : "string",
        "index" : "not_analyzed"
      },
      "full_message" : {
        "type" : "string",
        "analyzer" : "whitespace"
      },
      "host" : {
        "type" : "string",
        "index" : "not_analyzed"
      },
      "level" : {
        "type" : "long",
        "ignore_malformed" : false
      },
      "line" : {
        "type" : "long",
        "ignore_malformed" : false
      },
      "message" : {
        "type" : "string",
        "analyzer" : "whitespace"
      }
    }
  }
}
Continue reading

graylog2 使用中遇到的问题

graylog2 从 0.9.6 开始支持内置的 shell

graylog2-web-interface 中有个 quickfilter 选项,可以进行快速的过滤,支持如下的语法:

1.常规搜索
2.wildcard 搜索
注意:首字母不能使 wildcard
3.模糊搜索
4.最近搜索
5.boolean 操作
默认的都是 OR 操作,需要通过 AND (&&), OR (||) or NOT (!) 来操作,记住要大写
6.转义

web 的话内置的是 rails,建议换成 Passenger/Apache2,debug 可以开启 config/environments/production.rb 里面的 config.log_level 为 :debug。全部的 log 在 log/production.log 文件里面。

由于传统的 syslog 的 message 只支持 1024 byte 的长度,并且对应用曾的日志支持的不是很好,因此有了 Graylog Extended Log Format (GELF) 这个扩展。FELF 使用的是 UDP 协议,有丢包的可能,不过正常情况下,出问题的 log 不会只出一次,因此这个不必要太担心。

北京的医保

不想看过程的请直接跳到最后的总结。

前段时间身体不大舒服,想去医院看看。
之前由于工作原因,经常要路过和睦家和明德这两家比较高端的私立医院,再 g 了下全国最大的外来人口集散地的公立医院的医疗状况,结合这两家私立医院做了个对比,最终还是选择去了明德。
想象一下,如果去了一个号称专家云集实力雄厚资源丰富的三甲,从进医院开始,要拨开一群一群的老弱病残,忍受着一坨一坨的烟雾,看着满地的废纸、痰、烟头,到排队挂号,面对那一张张死气沉沉的黄脸婆,听着周围那群吊儿郎当黄牛的哀嚎,到最后见到了医生活人,你花了一个多小时排了个队,结果那些砖家叫兽要么不管三七二十一让你先花钱去做一堆的检查,要么花三分钟不到就把你给打发走了。事实证明,大部分的医院确实就是上面这个样子,比如离我比较近的这几家(1, 2, 3)。

前天晚上电话预约了下,第二天下午过去,不管是前台接待人员、医生还是最后的收银,其态度、专业技能、服务都可圈可点。最后付费,由于是私立医院,不可以使用医保卡,再加上没有这类的医疗保险,所以只好自己垫付。以上这些去之前都有调查过,所以也没什么吃惊的。如果按照上面三家医院的"水准",最后的价格应该不会比明德低到哪里去。

接着买药,自己住的小区就有药店,去的时候还特意带上了医保卡,心想这下终于有用了,不过高兴的太早。当年入职的时候,我就强烈要求(想象一下国务院新闻发言人的口吻)不要所谓的五险一金,不过了,据说这玩意儿是国家"法律"规定的,可惜了,经过这么多年的发展,大陆的《宪法》如今是这样的:
-rwxr-xr–
开个玩笑,继续正题。进去了之后,药也选好了,结账的时候收银员竟然告诉我不可以使用社保卡,无奈只要现金付款。后来在推特上问了下,原来绝大多数的北京药店都是不支持社保卡的,到目前为止,网上看可以查到的支持社保卡的药店也才不到 100 家,全北京有多少家药店,最少 2000。

北京,这个全国最大的外来人口集散地,其医保就是一张废纸,从看病到买药。如果你有足够多的时间,愿意冒着被挤怀孕或者人流风险,可以选择去公立医院,医保卡或许有那么点用(貌似要超过 1800 的部分?)。
把话题扩大一些,大陆的社保就是张废纸。之前都是纸上谈兵,这次是实践出真知。

ElasticSearch-0.19.9 部署

起初下的是 0.18.7 版本,但是在使用 service wrapper 的时候,出现这样的错误,应该是个 bug,升级到 0.19.9 就没问题了。

# wget https://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-0.19.9.tar.gz
# tar zxvf elasticsearch-0.19.9.tar.gz
# mv elasticsearch-0.19.9 elasticsearch
# rm elasticsearch*.tar.gz

# curl -L http://github.com/elasticsearch/elasticsearch-servicewrapper/tarball/master | tar -xz
# mv *servicewrapper*/service elasticsearch/bin/
# rm -Rf *servicewrapper*                

编辑 elasticsearch/config/elasticsearch.yml 文件,给 cluster 一个名字,这可以阻止该 cluster 跟该网段的其他 ElasticSearch cluster 通信:
cluster.name: graylog2

默认情况下,ElasticSearch 监听 0.0.0.0,对于 HTTP 的流量走 [9200-9300] 端口,对于 node-to-node 的通信走 [9300-9400] 端口,端口是一个范围,这意味着如果某个端口被占用,可以自动切换到下一个端口:
network.bind_host: 192.168.0.1
Continue reading

graylog2 基本安装

把下面的通过 pp 走一遍就成自动化了 :-)

1. mongodb install
# apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
# echo -e "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen\n" >> /etc/apt/sources.list
# apt-get update
# apt-get install mongodb-10gen

2. sun jdk install
# "deb http://ppa.launchpad.net/sun-java-community-team/sun-java6/ubuntu lucid main" >> /etc/apt/sources.list
# apt-get update
# apt-get install sun-java6-jdk

3. download and install graylog2
# mkdir /opt/graylog2
# cd /opt/graylog2
# wget https://github.com/downloads/Graylog2/graylog2-server/graylog2-server-0.9.6.tar.gz
# tar -xvf graylog2-server-0.9.6.tar.gz
# cp /opt/graylog2/graylog2-server-0.9.6/graylog2.conf.example /etc/graylog2.conf

Continue reading

channel-misconfig (STP) 分析防范

Errdisable 是 cisco 设备的一种机制,该机制会在设备出现 looping、psecure-violation 等情况下 shutdown 或者 suspend 出现问题的端口,同时端口也会的 LED 也会变成橙色。

某台二层设备跟三层连接时,发现做 EC 的某个端口出现了 err-disable 的状态,下面几种方式都可以查看到 error:
#show int G1/0/23 status
Port      Name               Status       Vlan       Duplex  Speed Type
Gi1/0/23                     err-disabled trunk      a-full a-1000 10/100/1000BaseTX

#show int G1/0/23
GigabitEthernet1/0/23 is down, line protocol is down (err-disabled)
正常的应该是:
GigabitEthernet1/0/23 is down, line protocol is down (notconnect)

#show interfaces status err-disabled
Port      Name               Status       Reason
Gi1/0/23               err-disabled channel-misconfig (STP)
Continue reading