归档
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
近期评论