zoukankan      html  css  js  c++  java
  • K linux 部署手机 centos6.5

    ELK平台搭建
    系统环境
    System: Centos release 6.7 (Final)
    ElasticSearch: 2.3.3
    Logstash: 2.1.1
    Kibana: 4.3.0
    Java: openjdk version "1.8.0_65"
    Eelasticsearch
    ============elasticsearch 安装
    cd /usr/local
    mkdir elk ### 把安装包上传到这个目录
    tar -zxvf elasticsearch-2.1.0.tar.gz
    cd elasticsearch-2.1.0
    mv elasticsearch-2.1.0 elasticsearch
    可视化ela-head组件安装
    cd elasticsearch
    ./bin/plugin install mobz/elasticsearch-head
    Paramedic工具 es监控插件
    ./bin/plugin install karmi/elasticsearch-paramedic
    查询 Elasticsearch 中的数据工具 同ela-head
    ./bin/plugin install lmenezes/elasticsearch-kopf
    vim config/elasticsearch.yml
    -----------------修改配置文件
    cluster.name: es_cluster
    node.name: node0
    path.data: /tmp/elasticsearch/data
    path.logs: /tmp/elasticsearch/logs
    #当前hostname或IP,我这里是centos2 #原文博客说的 host或者ip,但是我写本机的ip的话,除了服务器本机可以正常访问9200以外,其他电脑无法访问,网上说改成0.0.0.0,试了好用。
    network.host: 0.0.0.0
    network.port: 9200
     
    这时候执行 ./bin/elasticsearch 报错
    查看错误信息,大概说是,不能以root用户的身份执行,那好吧。。添加用户,分配权限
     
    ----------------新增elsearch用户和组`
    创建elsearch用户组及elsearch用户
    groupadd elsearch
    useradd elsearch -g elsearch -p elasticsearch
    passwd 设置密码 这里是123456
    更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch
    chown -R elsearch:elsearch elasticsearch
    -------------切换到新用户
    su elsearch
    123456
    --------------运行
    ./bin/elasticsearch & 或
    ./bin/elasticsearch -d
     
    这时候会报错如下:
     
    好吧。目测是 elasticsearch.yml里的data和log的目录权限没有给elsearch,那么接着。。
     
    首先 切换到root用户,
    su root
    123456
     
    然后增加文件夹的权限chown -R elsearch:elsearch /tmp/elasticsearc
     
    然后再切换到elsearch用户
    执行 ./bin/elasticsearch 然后访问 ip:9200 ,访问ok
    这里有一点需要说明:执行 ./bin/elasticsearch 之后,你会发现压根退不出去有没有。。
    其实 :这就是 ./bin/elasticsearch 和 ./bin/elasticsearch -d 的区别,执行./bin/elasticsearch -d,你会发现,命名窗口是不输出 东西的
     
    由此。其实我开启了两个elasticsearch
    netstat -tnlp
     
    这时候需要 kill -9 PID 杀掉多余的,一般是保留 9200
     
    重点:ElasticSearch安装ik分词插件
     
    IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从3.0版本开 始,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。在2012版本中,IK实现了简单的分词 歧义排除算法,标志着IK分词器从单纯的词典分词向模拟语义分词衍化。
     
     
    注意:ik分词插件的版本与ElasticSearch的版本是有对应关系的,笔者第一次安装用的是ElasticSearch2.1.0 ,IK 1.9.1 结果报错,大概的意思1.9.1是在ElasticSearch2.3.1的版本上开发的,需要下载匹配版本,所以后来我把版本换成了ElasticSearch 2.3.3,IK 1.9.3,可以查看地址https://github.com/medcl/elasticsearch-analysis-ik/releases?after=v1.10.0,这里有完整的对应关系。
     
    关于IK的安装,笔者主要是对照git的安装步骤说明来的,官网的步骤是:
    通过git clone https://github.com/medcl/elasticsearch-analysis-ik,下载分词器源码,然后进入下载目录,执行命令:mvn clean package 打包生成 zip包,zip包的生成u目录是 target/releases/elasticsearch-analysis-ik-{version}.zip ,然后再 elasticsearch的plugins下新建ik文件夹,将 target/releases/elasticsearch-analysis-ik-{version}.zip 拷贝被 elasticsearch/plugins/ik 目录下,执行unzip 解压缩即可。
    推荐:笔者发现了一个简单的方式,不需要安装maven 执行打包的过程,直接到 https://github.com/medcl/elasticsearch-analysis-ik/releases 找对应版本的zip文件,然后上传即可。
    另外:按理说 ik组件的 安装也可以 参照 ela-head组件的安装方式安装,
    ./bin/plugin install mobz/elasticsearch-head 红色部分与 红框对应,但是报错,
    plugin-descriptor.properties 找不到。。。所以这种方式pass了,但是要会看。
     
    ctrl z 暂停当前切换到控制
    bg 后台执行
    fg 前台
     
     
    Logstash
     
    关于这部分请先查看:【转】Logstash的安装部署 文章,其实主要还是参照了上面的博客。
     
    我的实际配置Logstash:
    tar -zxvf logstash-2.1.1.tar.gz cd logstash-2.1.1
    编写配置文件(名字和位置可以随意,这里我放在config目录下,取名为log4j_to_es.conf):
     
    mkdir config vi config/log4j_to_es.conf # Set: https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html input { redis{ host => "127.0.0.1" port => 6379 type => "weds-pay-api" data_type => "list" key => "weds-pay-api" } } filter { date { match => ["addtime", "yyyy-MM-dd HH:mm:ss"] target => "@timestamp" } } output{ stdout { codec => rubydebug } elasticsearch { index => "%{type}-%{+YYYY.MM}" hosts => "192.168.30.129:9200" workers => 5 } }
     
    启动方式:./bin/logstash agent -f config/log4j_to_es.conf &
    加了&是后台启动,不加是直接启动
     
    解释:配置连接reids,项目程序将请求的日志信息写入到redis,然后logstash监听redis的list,redis里list的key为weds-pay-api,logstash会监听redis的list,当发现数据以后就会批量的通过logstash写入到elasticsearch。
     
    附java代码的实现 重写Appender
     
    package com.weds.framework.utils.elk; import java.util.Map; import java.util.concurrent.CompletableFuture; import org.apache.log4j.AppenderSkeleton; import org.apache.log4j.spi.LocationInfo; import org.apache.log4j.spi.LoggingEvent; import com.weds.framework.core.utils.JsonUtil; import com.weds.framework.core.utils.redis.RedisService; /** * * <p>Title: ApiAppender</p> * <p>Description: 重写Appender 调用log4就时,将记录存入redis</p> * <p>Company: Leyou(China) Chain Store Co.,Ltd</p> * <p>版权所有: Copyright?1999-2016 leyou.com. All Rights Reserved</p> * @author Illidan * @date 2016年5月19日 上午10:25:59 * @version V1.0 */ public class ApiAppender extends AppenderSkeleton{ /** * Jredis连接redis的client */ private RedisService redisService; /** * 记录接口方法调用次数日志需要先写入redis中,redis的key不能为空,这个key需要同步在logstash配置文件中配置 */ private String writeLogKey; @Override public void close() { // TODO Auto-generated method stub } @Override public boolean requiresLayout() { // TODO Auto-generated method stub return false; } /** * 重写日志输出输出 */ @Override protected void append(LoggingEvent event) { LocationInfo locationInfo = event.getLocationInformation(); Map<String,Object> map =(Map<String,Object>)event.getMessage(); map.put("levl", event.getLevel().toString()); writeLogAsync(writeLogKey,map); } /** * 异步记录日志 * @param key 记录到redis的中key,key需要同步在logstash配置文件中配置 * @param value 日志的值,Map格式 */ public void writeLogAsync(String key,Map<String,Object> map){ CompletableFuture.runAsync(() -> { writeLog(key,map); }); } /** * * @Title: writeLogAsync * @Description: 异步存储日志 * @param * @return void 返回类型 * @throws * @author Illidan * @date 2016年5月18日 下午1:51:56 */ public void writeLogAsync(String key,String value){ CompletableFuture.runAsync(() -> { writeLog(key,value); }); } /** *记录日志到redis的List集合中,值为Map集合方式 * @param key 记录redis的key,key需要同步在logstash配置文件中配置 * @param map value为Map值 */ public void writeLog(String key,Map<String,Object> map){ String value = JsonUtil.obj2string(map); writeLog(key, value); } /** * 记录日志到redis的List集合中 * @param key 记录redis的key,key需要同步在logstash配置文件中配置 * @param value 记录的值 */ public void writeLog(String key, String value) { if(key != null){ redisService =(RedisService)SpringContextUtil.getBean("redisService",RedisService.class); redisService.setList(key, value); } } public RedisService getRedisService() { return redisService; } public void setRedisService(RedisService redisService) { this.redisService = redisService; } public String getWriteLogKey() { return writeLogKey; } public void setWriteLogKey(String writeLogKey) { this.writeLogKey = writeLogKey; } }
     
    log4j.properties 增加配置:
    log4j.logger.weds-pay-Log=INFO,aip log4j.appender.aip=com.weds.framework.utils.elk.ApiAppender log4j.appender.aip.writeLogKey=weds-pay-api log4j.appender.aip.layout=org.apache.log4j.PatternLayout log4j.appender.aip.layout.ConversionPattern=%d %p [%c] - %m%n
     
    注意:这里 log4j_to_es.conf 中 redis的key 与 log4j.properties 的log4j.appender.aip.writeLogKey以及ApiAppender 的writeLogKey 属性有对象关系。
     
    java代码的使用
    protected static final Logger log = Logger.getLogger("weds-pay-Log"); log.info(map);//记录日志到 elk日志中心
    注意:这里的weds-pay-Log与 log4j.properties的log4j.logger.weds-pay-Log是有关系的。
     
    Kibana
    这部分基本的参照文章顶部的连接即可:
    ===========================安装kibana
    tar -zxvf kibana-4.3.0-linux-x86.tar.gz
    cd kibana-4.3.0-linux-x86
    vim config/kibana.yml
    -------修改配置
    server.port: 5601
    server.host: "192.168.30.129"
    elasticsearch.url: "http://192.168.30.129:9200"
    kibana.index: ".kibana"
    -------运行
    ./bin/kibana &
     
    加了&是后台启动,不加是直接启动
  • 相关阅读:
    windows7系统下升级到IE11时无法使用F12开发人员工具的解决办法
    微信公众号在线编辑器
    solr安装使用笔记
    在windows资源管理器添加进入当前目录dos窗口的快捷菜单
    spring mvc返回jsonp内容
    oracle最大连接数相关
    redis可视化管理工具Redis Desktop Manager
    Struts2远程代码执行漏洞预警
    postman请求数据库方法(Omysql)
    Selenium+java
  • 原文地址:https://www.cnblogs.com/caoheyang911016/p/6214645.html
Copyright © 2011-2022 走看看