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

[经验分享] 搭建elk server通过rsyslog展示nginx和php日志

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-1-25 08:30:55 | 显示全部楼层 |阅读模式
一、系统和所需软件版本介绍
系统版本:centos 6.5 64位
软件版本:jdk-8u60-linux-x64.tar.gz、elasticsearch-2.4.2.tar.gz、logstash-2.4.1.tar.gz、kibana-4.6.3-linux-x86_64.tar.gz
二、安装java环境
1)解压jdk软件压缩包。
1
tar -zxvf jdk-8u60-linux-x64.tar.gz



2)在/etc/profile文件的最后边,添加下边这几行,设置一下环境变量。
1
2
3
4
5
export JAVA_HOME=/data/elk/jdk1.8.0_60
export JAVA_BIN=/data/elk/jdk1.8.0_60/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH



3)然后加载一下环境变量,查看下java环境是否安装成功。
1
2
3
4
5
[iyunv@elk]# source /etc/profile
[iyunv@elk]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)



三、安装elasticsearch.
1)从官网现在相应版本的elasticsearch软件包,这里下载的是elasticsearch-2.4.2.tar.gz,下载完成后解压。
1
2
wget https://download.elastic.co/elas ... search-2.4.2.tar.gz
tar -zxvf elasticsearch-2.4.2.tar.gz



2)2.4版本启动elasticsearch的时候需要切换到普通用户,这里就使用已经创建好的elasticsearch启动了,需要把elasticsearch目录的属主和属组修改成elasticsearch.
1
chown -R elasticsearch.elasticsearch elasticsearch



3)需要修改一下elasticsearch/config/elasticsearch.yml这个文件的两行配置信息,默认是用#注释的,在elasticsearch.yml的第55和58行。
1
2
3
grep -v "#" elasticsearch/config/elasticsearch.yml| grep -v "^$"
network.host: 0.0.0.0
http.port: 9200



4)安装elasticsearch常用的两个插件,分别是bigdesk和head。
bigdesk: 它是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等.
head: elasticsearch-head是一个界面化的集群操作和管理工具,可以对集群进行傻瓜式操作。你可以通过插件把它集成到es(首选方式),也可以安装成一个独立webapp。安装插件的时候需要进入到elasticsearch的bin目录,要用到一个plugin的命令。
1
2
3
4
5
cd /date/elk/elasticsearch/bin
ls
elasticsearch      elasticsearch.in.bat  elasticsearch-service-mgr.exe     elasticsearch-service-x86.exe  plugin.bat  elasticsearch.bat  elasticsearch.in.sh elasticsearch-service-x64.exe  plugin   service.bat
./plugin install mobz/elasticsearch-head        #安装elasticsearch-head插件
./bin/plugin install lukas-vlcek/bigdesk/2.4.0  #安装bigdesk插件



5)启动elasticsearch.

1
2
3
[playcrab@iZbp1brwi55d51j9rfs9uyZ ~]$ ps -ef | grep elasticsearch
    playcrab 29513 29473  0 11:05 pts/0    00:00:00 grep elasticsearch
    playcrab 30161     1  6 Jan09 ?        01:20:03 /data/elk/jdk1.8.0_60/bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/data/elk/elasticsearch -cp /data/elk/elasticsearch/lib/elasticsearch-2.4.2.jar:/data/elk/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch start



6)测试是否可以正常访问,如果用浏览器访问,界面出现类似下边的显示,说明elasticsearch启动成功。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
curl 127.0.0.1:9200
{
  "name" : "Bast",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "V-dptv6pQo-wBiAUwH80Sw",
  "version" : {
    "number" : "2.4.2",
    "build_hash" : "161c65a337d4b422ac0c805f284565cf2014bb84",
    "build_timestamp" : "2016-11-17T11:51:03Z",
    "build_snapshot" : false,
    "lucene_version" : "5.5.2"
  },
  "tagline" : "You Know, for Search"
}



四、安装logstash.

1).从官网下载logstash-2.4.1.tar.gz,并且解压。       
wget https://download.elastic.co/logs ... gstash-2.4.1.tar.gz
tar -zxvf logstash-2.4.1.tar.gz         
2).配置logstash文件,nginx类型的日志使用udp514端口,php类型的日志使用udp515端口,向本地的elasticsearch数据库传输。   
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
cd /data/elk/logstash
touch conf
cd conf
cat test.conf
    input {
       udp {
        port => 514
        type => nginx
      }
       udp {
        port => 515
        type => php
      }
          }

    output {
      if [type] == "nginx" {
        elasticsearch {
          hosts => "localhost:9200"
          index => "%{+YYYY.MM.dd}_nginx_log"
        }
      }

      if [type] == "php" {
        elasticsearch {
          hosts => "localhost:9200"
          index => "%{+YYYY.MM.dd}_php_error_log"
        }
      }
        stdout {codec => rubydebug}
      }
    }



  五、安装kibana,实现界面展示。
          1).从官网下载kibana-4.6.3-linux-x86_64.tar.gz,并且解压。         
wget https://download.elastic.co/kiba ... linux-x86_64.tar.gz
tar -zxvf kibana-4.6.3-linux-x86_64.tar.gz
   2).修改kibana的配置文件kibana.yml。
[iyunv@iZbp1brwi55d51j9rfs9uyZ config]# grep -v "#" kibana.yml|grep -v "^$"
server.port: 8000
server.host: "0.0.0.0"
elasticsearch.url: "http://127.0.0.1:9200"
   3).因为kibana进程时常无缘无故挂掉,所以这里我就写一个启动,关闭的shell脚本。
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
touch /etc/init.d/kibana  
chmod +x /etc/init.d/kibana
[iyunv@iZbp1brwi55d51j9rfs9uyZ config]# cat /etc/init.d/kibana
    #!/bin/bash
    ### BEGIN INIT INFO
    # Provides:          kibana
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Runs kibana daemon
    # Description: Runs the kibana daemon as a non-root user
    ### END INIT INFO

    # Process name
    NAME=kibana
    DESC="Kibana4"
    PROG="/etc/init.d/kibana"

    # Source function library.
    . /etc/rc.d/init.d/functions

    # Configure location of Kibana bin
    KIBANA_BIN=/data/home/user00/playcrab/elk/kibana/bin

    # PID Info
    PID_FOLDER=/var/run/kibana/
    PID_FILE=/var/run/kibana/$NAME.pid
    LOCK_FILE=/var/lock/subsys/$NAME
    PATH=/bin:/usr/bin:/sbin:/usr/sbin:$KIBANA_BIN
    DAEMON=$KIBANA_BIN/$NAME

    # Configure User to run daemon process
    DAEMON_USER=root
    # Configure logging location
    KIBANA_LOG=/var/log/kibana.log

    # Begin Script
    RETVAL=0

    if [ `id -u` -ne 0 ]; then
            echo "You need root privileges to run this script"
            exit 1
    fi

    start() {
            echo -n "Starting $DESC : "

    pid=`pidofproc -p $PID_FILE kibana`
            if [ -n "$pid" ] ; then
                    echo "Already running."
                    exit 0
            else
            # Start Daemon
    if [ ! -d "$PID_FOLDER" ] ; then
                            mkdir $PID_FOLDER
                    fi
    daemon --user=$DAEMON_USER --pidfile=$PID_FILE $DAEMON 1>"$KIBANA_LOG" 2>&1 &
                    sleep 2
                    pidofproc node > $PID_FILE
                    RETVAL=$?
                    [[ $? -eq 0 ]] && success || failure
    echo
                    [ $RETVAL = 0 ] && touch $LOCK_FILE
                    return $RETVAL
            fi
    }

    reload()
    {
        echo "Reload command is not implemented for this service."
        return $RETVAL
    }

    stop() {
            echo -n "Stopping $DESC : "
            killproc -p $PID_FILE $DAEMON
            RETVAL=$?
    echo
            [ $RETVAL = 0 ] && rm -f $PID_FILE $LOCK_FILE
    }

    case "$1" in
      start)
            start
    ;;
      stop)
            stop
            ;;
      status)
            status -p $PID_FILE $DAEMON
            RETVAL=$?
            ;;
      restart)
            stop
            start
            ;;
      reload)
    reload
    ;;
      *)
    # Invalid Arguments, print the following message.
            echo "Usage: $0 {start|stop|status|restart}" >&2
    exit 2
            ;;
    esac



  到这里已经安装好了elk server端的环境了,但是还需要在日志服务器上配置rsyslog,因为咱们是使用rsyslog来发送日志服务器的log,然后elk接收到之后,经过logstash过滤之后,存储到elasticsearch,最终通过kibana展示出来。
{ rsyslog } →→ { logstash →→ elasticsearch →→ kibana }

日志服务器的配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[iyunv@iZ23r24v08eZ ~]# cd /etc/rsyslog.d/
    [iyunv@iZ23r24v08eZ rsyslog.d]# cat test.com.conf
    $ModLoad imfile                                #im代表输入模块(input Modules)
    $InputFileName      /data/usr/logs/nginx/test.com.error.log                    #读取日志文件
    $InputFileTag    test_nginx_error:      #定义的NAME必须唯一,同一台主机上不同的应用应当使用不同的NAME,否则会导致新定义的TAG不生效;
    $InputFileStateFile test_nginx_error #定义记录偏移量数据文件名,定义的StateFile必须唯一,它被rsyslog用于记录文件上传进度,否则会导致混乱;   $InputRunFileMonitor                          #
    $InputFileName      /data/usr/logs/nginx/test.com.access.log
    $InputFileTag      test_nginx_access:
    $InputFileStateFile    test_nginx_access
    $InputRunFileMonitor
    $InputFilePollInterval 10                     #等待十秒钟发送一次
    if $programname == 'test_nginx_error' then @10.23.0.24:514  把日志传输到制定的elk server上,@表示使用udp传输,@@表示使用tcp传输
    if $programname == 'test_nginx_error' then ~
    if $programname == 'test_nginx_access' then @10.23.0.24:514
    if $programname == 'test_nginx_access' then ~




1
2
3
4
5
6
7
8
9
[iyunv@iZ23r24v08eZ rsyslog.d]# cat php.error.log.conf
    $ModLoad imfile
    $InputFileName /data/usr/logs/php-fpm/php-fpm.log
    $InputFileTag php-fpm_log:
    $InputFileStateFile state-php-fpm_log
    $InputRunFileMonitor
    $InputFilePollInterval 10
    if $programname == 'php-fpm_log' then @10.23.0.24:515
    if $programname == 'php-fpm_log' then ~




                配置完后,需要重新启动rsyslog.
                /etc/init.d/rsyslog restart

除了重启rsyslog服务之外,还需要看下elk server的防火墙,如果是用的云主机还有安全组,需要把udp的514和515端口放开,允许日志服务器可以访问elk server的udp514和515端口。       



运维网声明 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-333079-1-1.html 上篇帖子: Elasticsearch安装篇 下篇帖子: ELK5.0的elk-stack-guide-cn.pdf server
累计签到:109 天
连续签到:1 天
发表于 2017-1-29 01:18:48 | 显示全部楼层
多谢分享成果。最近在研究这个

运维网声明 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

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