设为首页 收藏本站
查看: 2508|回复: 1

[经验分享] Linux下开源实时日志分析elk部署详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-5-30 09:25:05 | 显示全部楼层 |阅读模式
前言:
Elk主要就是3个软件的组合,主要是elasticsearch搜索引擎,Logstash是一个日志收集日志,kibana实时分析进行展示。
[关于日志搜集的软件,如:scribe,flume,heka,logstash,chukwa,fluentd,当然rsyslog rsyslog-ng都可以搜集。
关于日志手机后存储软件,如:HDFS,Cassandra mongodb, redis,elasticsearch。
关于日志分析软件比如要用HDFS就可以写mapreduce分析,如果需要实时分析就是用Kibana进行展示。]
112.74.76.115  #安装logstash agent、nginx
115.29.150.217  #安装logstash index、elasticsearch、redis、nginx
一.Redis安装配置(115.29.150.217)
1,下载安装:
#wget https://github.com/antirez/redis/archive/2.8.20.tar.gz
# tar xf 2.8.20.tar.gz
# cd redis-2.8.20/  && make
Make之后会在/usr/local/redis-2.8.20/src 目录生成响应的执行文件
2,然后在创建redis的数据存储,配置文件等目录。
#mkdir /usr/local/redis/{conf,run,db} –pv# cp redis.conf  /usr/local/redis/conf/# cd src
# cp redis-benchmark  redis-check-aof  redis-check-dump redis-cli  redis-server   mkreleasehdr.sh   /usr/local/redis
3,启动redis
# /usr/local/redis/redis-server  /usr/local/redis/conf/redis.conf  &  后台启动redis 6379
二.Elasticsearch安装配置(115.29.150.217)
1,下载安装
#wget https://download.elastic.co/elas ... search-2.3.2.tar.gz
# tar xf elasticsearch-2.3.2.tar.gz
# mv elasticsearch-2.3.2 /usr/local/elk/
# ln -s  /usr/local/elk/elasticsearch-2.3.2/bin/elasticsearch /usr/bin/
2,后台启动
# elasticsearch  start –d
3,测试是否成功
# curl   115.29.150.217:9200
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"status" : 200,
"name" : "Gorgeous George",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "1.4.1",
"build_hash" : "89d3241d670db65f994242c8e8383b169779e2d4",
"build_timestamp" : "2014-11-26T15:49:29Z",
"build_snapshot" : false,
"lucene_version" : "4.10.2"
},
"tagline" : "You Know, for Search"
}



4,yum安装安装[小扩展]
#rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch 导入密钥
# vim /etc/yum.repos.d/CentOS-Base.repo  添加yum
1
2
3
4
5
6
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1



# yum  makecache 更新yum缓存
# yum install elasticsearch –y 安装
#chkconfig --add elasticsearch   添加到系统系统
#service  elasticsearch  start  启动
5,安装插件[小扩展]
# cd /usr/share/elasticsearch/   # ./plugin   -install   mobz/elasticsearch-head && ./bin/plugin -install lukas-vlcek/bigdesk/2.5.0
关于这2个插件更多详情查阅:https://github.com/lukas-vlcek/bigdesk
http://115.29.150.217:9200/_plugin/bigdesk/#nodes
http://115.29.150.217:9200/_plugin/head/    查看relasticsearch  cluster信息及监控情况
[kibana安装参考官网文档http://kibana.logstash.es/content/kibana/v4/setup.html ]
三.Logstash安装(112.74.76.115)
1,下载解压
#wget https://download.elastic.co/logs ... gstash-1.5.3.tar.gz
#tar xf logstash-1.5.3.tar.gz  -C /usr/local/
#mkdir /usr/local/logstash-1.5.3/etc
四.yum安装logstash(115.29.150.217)
# rpm --import https://packages.elasticsearch.org/GPG-KEY-elasticsearch
# vi /etc/yum.repos.d/CentOS-Base.repo
1
2
3
4
5
6
[logstash-1.5]
name=Logstash repository for 1.5.x packages
baseurl=http://packages.elasticsearch.org/logstash/1.5/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1



测试logstash:
在115.29.150.217上测试logstash
#cd /opt/logstash/bin
#./logstash  -e  'input{stdin{}}output{stdout{codec=>rubydebug}}'
1
2
3
4
5
6
7
8
hello
Logstash startup completed
{
       "message" => "hello",
      "@version" => "1",
    "@timestamp" => "2016-05-26T11:01:44.039Z",
          "host" => "iZ947d960cbZ"
}




也可以通过curl测试:
# curl 'http://115.29.150.217:9200/_search?pretty'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 0,
    "successful" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : 0.0,
    "hits" : [ ]
  }
}




五.Logstash配置
2016052701.jpg
1,设置nginx的日志格式,在两台服务器都要修改
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log  logs/test.access.log  logstash; 设置access日志,有访问时候自动写入该文件
#/usr/local/nginx/sbin/nginx -s reload  重加载nginx
2,开启logstash agent
Logstash agent 负责手信息传送到redis队列上,
[root@112.74.76.115 logstash-1.5.3]#vim etc/logstash_agent.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
input {
        file {
                type => "nginx access log"
                path => ["/usr/local/nginx/logs/test.access.log"]  
        }
}
output {
        redis {
                host => "115.29.150.217" #redis server
                data_type => "list"
                key => "logstash:redis"
        }
}




#nohup  /usr/local/logstash-1.5.3/bin/logstash -f /usr/local/logstash-1.5.3/etc/logstash_agent.conf &  把日志推送到217服务器上面。
[root@115.29.150.217]vim /etc/logstash/logstash_agent.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
input {
        file {
                type => "nginx access log"
                path => ["/usr/local/nginx/logs/test.access.log"]  
        }
}
output {
        redis {
                host => "115.29.150.217" #redis server
                data_type => "list"
                key => "logstash:redis"
        }
}




# /opt/logstash/bin/logstash -f /etc/logstash/logstash_agent.conf & 在217上也把日志推送到队列。如果要添加多台,方法一样,先把安装logstash,然后再用logstash把搜集的日志推送过去。
#ps -ef |grep  logstash  可以查看后台运行的进程  确保redis运行,否则会提示:Failed to send event to Redis
出现:表示成功推送。
[1460] 26 May 19:53:01.066 * 10 changes in 300 seconds. Saving...
[1460] 26 May 19:53:01.067 * Background saving started by pid 1577
[1577] 26 May 19:53:01.104 * DB saved on disk
[1577] 26 May 19:53:01.104 * RDB: 0 MB of memory used by copy-on-write
[1460] 26 May 19:53:01.167 * Background saving terminated with success
3,开启logstash indexer (115.29.150.217)
# vim /etc/logstash/logstash_indexer.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
input {
        redis {
                host => "115.29.150.217"
                data_type => "list"
                key => "logstash:redis"
                type => "redis-input"
        }
}
filter {
        grok {
                type => "nginx_access"
                match => [
                        "message", "%{IPORHOST:http_host} %{IPORHOST:client_ip} \[%{HTTPDA
TE:timestamp}\] \"(?:%{WORD:http_verb} %{NOTSPACE:http_request}(?: HTTP/%{NUMBER:http_vers
ion})?|%{DATA:raw_http_request})\"
%{NUMBER:http_status_code} (?:%{NUMBER:bytes_read}|-) %{QS:referrer}
%{QS:agent} %{NUMBER:time_duration:float}
%{NUMBER:time_backend_response:float}",
                        "message",
"%{IPORHOST:http_host} %{IPORHOST:client_ip} \[%{HTTPDATE:timestamp}\]
\"(?:%{WORD:http_verb} %{NOTSPACE:http_request}(?:
HTTP/%{NUMBER:http_version})?|%{DA
TA:raw_http_request})\"
%{NUMBER:http_status_code} (?:%{NUMBER:bytes_read}|-) %{QS:referrer}
%{QS:agent} %{NUMBER:time_duration:float}"
                ]
        }
}
output {
        elasticsearch {
                embedded => false
                protocol => "http"
                host => "localhost"
                port => "9200"
        }
}




# nohup   /opt/logstash/bin/logstash -f /etc/logstash/logstash_indexer.conf &
六.kibana安装
Kibana4的新特性介绍:
1)突出标签,按键链接更好用,风格上来支持数据密度和更一致的UI 。
2)一致性查询和过滤布局
3)100%的全新时间范围选择器
4)可过滤的字段列表
5)动态的仪表盘和URL参数等
1,下载解压
# wget https://download.elastic.co/kiba ... .1-linux-x64.tar.gz
# tar xf  kibana-4.1.1-linux-x64.tar.gz
# mv kibana-4.1.1-linux-x64 /usr/local/elk/kibana
2,启动kibana
# pwd
/usr/local/elk/kibana/bin
# ./kibana  &
打开浏览器即可查看 http://115.29.150.217:5601
2016052702.jpg
[小扩展]
kibana3.0版本的安装:
#wget  https://download.elasticsearch.org/kibana/kibana/kibana-3.1.2.zip
# tar fxz kibana-3.1.2.zip &&  mv kibana-3.1.2.zip  kibana
# mv kibana  /usr/local/nginx/html/
在nginx配置好kibana.
1
2
3
4
location /kibana/ {
        alias /usr/local/nginx/html/kibana/;
        index index.php  index.html index.htm;
        }




http://115.29.150.217/kibana/index.html  访问
2016052703.jpg
七.添加kibana登录认证
Kibana是nodejs开发的,本身没有任何安全限制,只要浏览url即可访问,如果公网环境不安全,可以通过nginx请求转发增加认证,方法如下:
kibana没有重启,只能通过ps –ef | greo node来查看nodejs进程来结束。
在此处,
1, 修改nginx配置文件添加认证
# vim nginx.conf
1
2
3
4
5
6
7
location /kibana/ {
#alias /usr/local/nginx/html/kibana/;
proxy_pass http://115.29.150.216:5602/;
index index.php  index.html index.htm;
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/db/passwd.db;
}



[安全加固]
为了安全期间我把kibana的默认5601端口修改为5602,不仅要修改kibana的配置文件,还要在nginx配置的反代配置中指向到该端口,否则会无法访问。
# pwd
/usr/local/elk/kibana/config
# vim kibana.yml
port: 5602 修改该段。
host: "0.0.0.0"  若想再提高公网对外的安全性,改成localhost 127.0.0.1,再修改nginx中反代地址即可。
# mkdir -p /usr/local/nginx/db/
2,配置登录用户密码
# yum install -y httpd-tools 安装htpasswd工具
# htpasswd   -c /usr/local/nginx/db/passwd.db elkuser
New password:  输入密码
Re-type new password: 输入密码
Adding password for user elkuser  ok..
重启nginx
访问测试这个是在kibana3版本测试:
2016052704.jpg
Elasticsearch-Logstash-kibana-Redis服务启动关闭:
[Redis]
#/usr/local/redis/redis-server  /usr/local/redis/conf/redis.conf  & 启动
#killall redis-server
[elasticsearch]
#elasticsearch  start  -d 启动
# ps -ef | grep elasticsearch 查看pid并kill掉
[logstash]
#nohup  /usr/local/logstash-1.5.3/bin/logstash -f /usr/local/logstash-1.5.3/etc/logstash_agent.conf &  启动日志推送
# ps -ef | grep logstash查看pid并kill掉
[kibana]
3.0版本直接解压放到web目录即可访问。
4.0版本:
#/usr/local/elk/kibana/bin/kibana & 后台启动
# ps -ef | grep  node  查看node进程并kill掉


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-223721-1-1.html 上篇帖子: Logstash+elasticsearch+elastic+nignx 下篇帖子: ELKstack-Elasticsearch各类安装部署方法 Linux
累计签到:1 天
连续签到:1 天
发表于 2016-6-30 14:51:22 | 显示全部楼层
谢谢楼主的分享,好材料!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表