2012年9月

logstash+ElasticSearch+Kibana VS Splunk

最近帮磊哥移植一套开源的日志管理软件,为了就是替代原来牛B的但是昂贵的Splunk. Splunk是一个功能强大的日志管理工具,它不仅可以用多种方式来添加日志,生产图形化报表,最厉害的是它的搜索功能 - 被称为“Google for IT”。Splunk有免费和收费版,最主要的差别在于每天的索引容量大小(索引是搜索功能的基础),免费版每天最大为500M。在使用免费版时,如果在30天之内,有7天的索引数据量超过500M,那么就不可以再搜索了.

我熟悉了几天logstash,然后用ElasticSearch进行搜索,最后用Kibana来作为漂亮的三方界面,总体上不错!果然是开源的力量.整个搭建的过程比较复杂,东西比较多,有java,有ruby,有python一些列的.先介绍下三个开源项目

Logstash


is very useful and versatile. It's made of JRuby (Java+Ruby). You can specify inputs and outputs as well as filters. It supports various input types. One of them is "Linux Syslog". Which means, you do not have to install logging agent on every server increasing the overall load of the server. Your default rsyslog client will do just fine. Then comes the filtering part, after taking input, you can filter out logs within Logstash itself. It's awesome but it didn't serve any purpose for me as I wanted to index every log. Next is the output part, Logstash can output logs on standard output (why would anyone want that). But as with input, it supports multiple output types too. One of them is Elasticsearch.

Elasticsearch


is a Java based log indexer. You can search through Elasticsearch indices using Lucene search syntax for more complicated query. But, simple wildcard search works too.

Kibana


It provides the web frontend for Elasticsearch, written on Java Script and PHP, requires only one line to be edited for this to work out off the box.

下面是logstash跑出来的效果,具体的搭建还是以后有时间介绍了.Kibana查看端口默认是5601

通过ElasticSearch进行查询

logstash查看端口是9292

git 安装

yum install curl
yum install curl-devel
yum install zlib-devel
yum install openssl-devel
yum install perl
yum install cpio
yum install expat-devel
yum install gettext-devel

wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
tar xzvf git-latest.tar.gz
cd git-2011-11-30 #你的目录可能不是这个
autoconf
./configure
make
sudo make install

git --version

Nginx 权限问题

这两天把何少移植了一个站点,移植上去的时候发现请求URL的时候,界面什么都没有返回,连个报错页面

都没有,折腾了两天才知道。是因为文件权限问题,要把文件所有者和所属组都弄到nginx!诶!太粗心了。

 

Linux下rar和unrar安装

# vi /etc/yum.repos.d/dag.repo

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
gpgkey=http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

# yum -y install rar unrar

Nginx 配置文件详解

nginx.conf 主要配置信息

http{
	server{
#		listen IP:port
#		listen *:IP
		listen 127.0.0.1:80;
		
		server_name _;		#默认匹配
		location / {	#URL访问路径匹配,可以多个location
			index index.php;
			root html;	#nginx 安装路径 相对路径	
		}
		location = / {
				
		}
	}

	server{

		location / {	#URL访问路径匹配,可以多个location
				
		}
	}
}

nginx配置文件主要是Http字段,一个Http字段里面可以有多个字段,一个server字段代表一个虚拟主机。一个server里面可以有多个字段,每个location代表一个URI资源。下面分别介绍基本配置:

==================================================================

location :


location:不同资源请求的路径
location +  [= | ~ | ~* |^~ | @ ]

= : 精确匹配
比如 /bbs
不加 = ,则表示bbs下所有文件目录,包括子目录
加 = ,仅表示bbs下的文件,不包括子目录

^~ :禁止匹配正则表达式

~ : 正则表达式,模式匹配,区分字符大小写
~*:正则表达式,模式匹配,不区分字符大小写

location /  {
         RA : 匹配 / 下面所有文件,包括子目录
}

location = / {
        RB : 只匹配 / 目录本身,不包括子目录
}

location  ^~ /images/ {
        RC
}

location  ~* \.(gif|jpg|jpeg)$  {
       RD
}

1. / ==>> RB
2. /a/b/c ==>> RA
3. /images/gif ==>> RC
4. /documents/1.jpg ==>> RD

==================================================================

root:


root  path
server中:表示全局的,对所有的location都有意义。

location:局部的资源定义

location /a/ {
         root /var/www/;
}

location / 就代表 location 里面的 root,若是location里的 root 未定义,就从 server 里面继承!

/a/1.html = /var/www/a/1.html

==================================================================

alias:


location  ~  ^/images/(.*)$  {
         alias /var/www/files/$1
}

URI: /images/1.txt ==>> /var/www/files/1.txt

location  /i/  {
          alias /var/www/
}

URI : /i/1.html ==>> /var/www/1.html

==================================================================

phpmyadmin 导入大数据库文件

不久前搭建LNMP成功之后,导入数据库文件,提示文件内容太大。

修改了 php.ini 里面的

upload_max_filesize = 30M

post_max_size = 40M

还是没有用。可以通过如下方式解决:

修改phpmyadmin 下面的 config.inc.php 文件

$cfg['UploadDir'] = ‘  ’ ;
$cfg['SaveDir'] = ‘  ’;

修改:

$cfg['UploadDir'] = 'upload';
$cfg['SaveDir'] = 'save';

在 phpmyadmin 下面建立 upload 和 save 目录, 在客户端把数据库文件通过ftp传到服务器上的 upload

目录,然后通过 phpmyadmin 登入进去,导入数据库的时候,就会出现一个上传本地数据库文件的选项。

这时候就能成功导入了!

apache URL 二级域名重写一级域名

将 www.firefoxbug.net 重写成 firefoxbug.net
[cc lang="c"]

DocumentRoot /var/www/firefoxbug
ServerName www.firefoxbug.net
ServerAlias firefoxbug.net
ErrorLog logs/firefoxbug.net-error_log
CustomLog logs/firefoxbug.net-access_log common
RewriteEngine on
rewriteCond %{http_host} ^www.firefoxbug.net [NC]
rewriteRule ^/(.*)$ http://firefoxbug.net/$1 [R=301,L]

[/cc]

RewriteEngine   on
rewriteCond   %{http_host}   ^www.firefoxbug.net  [NC]
rewriteRule   ^/(.*)$  http://firefoxbug.net/$1  [R=301,L]