添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

近期评论

归档

  • 2023年9月
  • 2022年5月
  • 2019年3月
  • 2018年11月
  • 2018年9月
  • 2018年6月
  • 2018年4月
  • 2018年3月
  • 2017年10月
  • 2017年9月
  • 2017年8月
  • 2017年7月
  • 2017年5月
  • 2017年4月
  • 2017年3月
  • 2017年2月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 一、ELK工作原理

    本文主要用的是filebeat+logstatsh+elasticsearch+kibana来展示mongo慢日志,如果mongo服务器较多、可用redis做一层缓存,此处不讨论redis。

    mongo慢日志切割日志效果

    二、搭建ELK

    2.1准备工作

    1)系统层修改

    > vi /etc/sysctl.conf

    vm.max_map_count = 655360

    > vi /etc/security/limits.conf

    * soft nofile 65536

    * hard nofile 131072

    * soft nproc 2048

    * hard nproc 4096

    > vi /etc/security/limits.d/90-nproc.conf

    * soft nproc 2048

    2)uname -r 保证内核版本高于3.5

    升级内核参考的是http://xjsunjie.blog.51cto.com/999372/1812602,也可以使用yum方式升级内核,yum方式时间最短,也能支持ELK。

    Step 1 安装需要的环境

    > yum install grouplist ncurses-devel qt-devel hmaccalc zlib-devel binutils-devel elfutils-libelf-devel

    > yum groupinstall “Development Tools”

    Step 2 编译内核

    > wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.28.tar.xz

    > tar -xf linux-3.10.28.tar.xz -C /usr/src/

    > cd /usr/src/linux-3.10.28/

    > cp /boot/config-2.6.32-431.11.22.el6.ucloud.x86_64 .config

    > sh -c ‘yes “” | make oldconfig’

    3)JDK 1.8以上版本安装

    Logstash需要jdk环境,最好是1.8以上版本

    Jdk8下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    Step 1 卸载之前的jdk,如果没有安装过则跳过此步骤

    首先查看系统原有JDK信息
    > rpm -qa | grep java
    > rpm -qa|grep java|xargs rpm -e –nodeps

    > echo $JAVA_HOME

    /usr/java/jdk1.7.0_80

    > rm -rf  /usr/java/jdk1.7.0_80

    Step 2 安装jdk

    > cp -arpf  /data/servers/data/elk/jdk1.8.0_121* /usr/java/

    > /usr/java/jdk1.8.0_121/bin/java -version 进行验证

    验证无误就修改/etc/profile的环境变量

    > vi /etc/profile #下面添加如下信息

    export JAVA_HOME=/usr/java/jdk1.8.0_121

    export JRE_HOME=${JAVA_HOME}/jre

    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

    > source /etc/profile #使得环境变量生效

    2.2 安装

    1)安装elasticsearch-5.0.1

    Step 1 解压安装包

    > cd /data/servers/app/elk #软件所在目录

    > tar zxvf elasticsearch-5.0.1.tar.gz -C /data/servers/app/ #解压到/data/servers/app/目录下

    > mkdir -p /data/servers/data/elasticsearch/data #es数据存放目录

    > mkdir -p /data/servers/data/elasticsearch/logs #es日志存放目录

    > useradd es #创建启动es的用户;不能使用root,否则无法启动

    Step 2 编辑elasticsearch参数文件

    > vi /data/servers/app/elasticsearch-5.0.1/conf/elasticsearch.yml

    transport.host: 10.9.195.171

    transport.tcp.port: 9300

    http.port: 9200

    network.host: 10.9.195.171

    cluster.name: my_elastic_cluster

    node.name: “EL1_NODE”

    path.logs: /data/servers/data/elasticsearch/logs

    path.data: /data/servers/data/elasticsearch/data

    Step 3 启动elasticsearch

    使用es用户启动es5

    > chown -R es.es /data/servers/app/elasticsearch-5.0.1/

    > chown -R es.es /data/servers/data/elasticsearch/

    > su – es

    es > nohup /data/servers/app/elasticsearch-5.0.1/bin/elasticsearch & #启动命令

    Step 4 校验es启动是否成功

    登录http://10.9.195.171:9200/,9200端口号是上面文件定义的http.port,能看到下面信息说明安装成功,如果异常请及时解决,否则后面的软件启动会提示找不到该进程。

    “name” : “EL1_NODE”,

    “cluster_name” : “my_elastic_cluster”,

    “cluster_uuid” : “WivdRQNmQyeW0K4ySJhIEw”,

    “version” : {

    “number” : “5.0.1”,

    “build_hash” : “080bb47”,

    “build_date” : “2016-11-11T22:08:49.812Z”,

    “build_snapshot” : false,

    “lucene_version” : “6.2.1”

    “tagline” : “You Know, for Search”

    2)安装logstash5.0.1

    Step 1 解压安装包

    > cd /data/servers/app/elk #软件所在目录

    > tar zxvf logstash-5.0.1.tar.gz -C /data/servers/app/ #解压到/data/servers/app/目录下

    Step 2 编辑logstash文件,按照具体日志格式进行切割

    > vi /data/servers/app/logstash-5.0.1/config/logstash.conf

    logstash

    上面的logstash为超链接,其为作者环境的logstash参数文件,仅供参考。

    1)不需要展示的键值,请使用remove_field => [ “timestamp” ],多多利用这个remove_field否则会将数据重复展示,不利于存储和展示

    2)不想切割的日志使用drop {} ,这个使用场景:作者切割慢日志部分,其余没有切割

    3)想将展示的部分内容替换成其他内容,可以使用mutate {gsub =>[]},这个使用场景:作者将查询的语句传参替换成空格,方便TOP 慢查询报表统计

    Step 3 启动logstash

    启动logstash,详情日志见/data/servers/app/logstash-5.0.1/log

    > nohup /data/servers/app/logstash-5.0.1/bin/logstash -f /data/servers/app/logstash-5.0.1/config/logstash.conf -l /data/servers/app/logstash-5.0.1/log&

    显示[2017-03-30T15:34:14,987][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600} 表示运行成功

    3)kibana5.0.1安装

    Step 1 解压软件

    > cd /data/servers/app/elk #软件所在目录

    > tar zxvf kibana-5.0.1-linux-x86_64.tar.gz -C /data/servers/app/ #解压到/data/servers/app/目录下

    > mkdir -p /data/servers/app/kibana-5.0.1-linux-x86_64/run/ #创建pid存放的目录

    Step 2 编辑kibana参数文件

    > vi /data/servers/app/kibana-5.0.1-linux-x86_64/config/kibana.conf

    server.port: 5601

    server.host: “10.9.195.171”

    server.name: “mongo”

    elasticsearch.url: “http://10.9.195.171:9200” #这里指定的是从elasticsearch相关的服务http读取数据

    pid.file: /data/servers/app/kibana-5.0.1-linux-x86_64/run/kibana.pid #pid存放的信息

    Step 3 启动kibana

    > /data/servers/app/kibana-5.0.1-linux-x86_64/bin/kibana -c /data/servers/app/kibana-5.0.1-linux-x86_64/config/kibana.conf &

    4)filebeat安装

    fliebeat部署在需要分析日志的mongo所在服务器上,类似于tail -f命令,影响很小

    Step 1 解压软件

    > cd /data/servers/app/elk #软件所在目录

    > tar zxvf filebeat-5.0.1-linux-x86_64.tar.gz -C /data/servers/app/ #解压到/data/servers/app/目录下

    > mkdir -p /data/servers/app/filebeat-5.0.1-linux-x86_64/logs/ #创建日志存放目录

    Step 2 编译filebeat文件

    > vi /data/servers/app/filebeat-5.0.1-linux-x86_64/filebeat.yml

    – input_type: log

    document_type: mongodblog

    paths:

    – /data/servers/data/mongo/logs/*.log #定义日志的监控目录

    output.logstash:

    # The Logstash hosts

    hosts: [“10.9.195.171:5044”]

    Step 3 启动filebeat

    > nohup /data/servers/app/filebeat-5.0.1-linux-x86_64/filebeat -e -c /data/servers/app/filebeat-5.0.1-linux-x86_64/filebeat.yml -d “Publish” &

    5)安装5.0版本的elasticsearch-head

    这个插件主要用于查看和管理索引。elk升级部署到elasticsearch5.0后,安装elasticsearch-head是通过npm管理配置。

    Step 1 编译安装nodejs

    > cd /data/servers/app/elk

    > wget https://nodejs.org/dist/v6.9.2/node-v6.9.2-linux-x64.tar.xz

    > xz -d node-v6.9.2-linux-x64.tar.xz

    > tar -xvf node-v6.9.2-linux-x64.tar

    > cp -rp node-v6.9.2-linux-x64 /usr/local/node

    > vi /etc/profile.d/node.sh

    export nodePATH=/usr/local/node

    export PATH=$PATH:$nodePATH/bin

    export nodePATH PATH

    > node -v查看版本

    Step 2 配置elasticsearch-head插件

    > yum install git -y

    > git clone git://github.com/mobz/elasticsearch-head.git

    > chown -R root:es elasticsearch-head/

    > chmod 775 elastic-search-head/ -R

    Step 3 安装grunt

    5.0里的head插件就是通过grunt启动

    > npm install -g grunt–registry=https://registry.npm.taobao.org

    > npm install -g grunt-cli

    > su -es

    es> npm install

    es> cd ./elasticsearch-head/_site/

    es> cp app.js app.js.bak

    es> vi app.js #添加如下信息

    this.config.base_uri ||this.prefs.get(“app-base_uri”) ||”http://10.9.195.171:9200″;

    > cd /data/servers/app/elk/elasticsearch-head/

    > grunt server & #root用户启动

    > /data/servers/app/elk/elasticsearch-head/node_modules/grunt/bin/grunt —force & #root 用户启动es

    三、kibana配置

    3.1 添加索引

    需要添加索引才能正式按照logstash定义的切分规则进行展示!!!

    登录 http://10.9.195.171:5601/

    Step 1 进入索引管理界面

    四、修改索引

    kibana上面显示的时间spend_time是字符串类型,无法排序,为了让日志执行时间能排序,故而将spend_time改成数字形式的,这个是通过索引来实现

    4.1 修改索引属性

    > curl -XPUT 10.9.195.171:9200/mongodblog_test2?pretty -d ‘{“mappings”:{“_default_”:{“properties”:{“spend_time”:{“type”:”long”}}}}}’

    curl -XPUT 是固定命令,后面的地址是写logstash地址,mongodblog_test2是索引的名字,不能跟已有的冲突;后面意思是设置spend_time为number格式,要注意是long,要定义多个,就写多个其他的。

    修改索引后会使得之前的kibana无法展示;再将logstatsh添加索引名字改成mongodblog_test2;然后再kibana的创建这个索引,刷新该索引

    4.2 删除之前的索引

    > curl -XDELETE ‘10.9.195.171:9200/mongodblog_index’

    > curl http://10.9.195.171:9200/_cat/indices?v