CentOS 7 elasticsearch 6.1.1 kibana logstash filebeat 安装备忘

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

主要参考 http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html

错误1  max virtual memory areas vm.maxmapcount [65530] is too low

解决1 sudo sysctl -w vm.max_map_count=262144

 

错误2

max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

解决2  vi /etc/security/limit.conf 添加以下2行,然后重新登录 ulimit -n 检查设置是否成功。

* solf nofile 65536
* hard nofile 65536

 

错误3  不能从其他机器访问

解决3  修改 config/elasticsearch.yml文件,去掉network.host的注释,将它的值改成0.0.0.0或者机器的ip,然后重新启动。

 

安装中文分词插件

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.1.1/elasticsearch-analysis-ik-6.1.1.zip

 

elasticsearch 默认提供的英文分词器名称为  analyzer ,上面自己安装的分词器名称为 ik_max_word,创建index的时候,字段如果为中文需要自己指定 分词器。

 

例如:

curl -H 'Content-type':'application/json' -X PUT 'localhost:9200/accounts' -d '
{
  "mappings": {
    "person": {
      "properties": {
        "user": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        },
        "title": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        },
        "desc": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        }
      }
    }
  }
}'

 

上面创建了一个名称为accouts的index ,名称为 person 的type,有三个字段 每个字段类型都为 text 分词器都只重新指定的。 ik_max_work


$ curl -H 'Content-type':'application/json' -X PUT 'localhost:9200/accounts/person/1' -d '
{
  "user": "张三",
  "title": "工程师",
  "desc": "数据库管理"
}'

 

//算了,参考官网,采用 yum在线安装了, 方便。

 

//用mongodb 的 日志来试试,问题来了,  conf 咋写? 没有头绪

用了 filebeat,配置参考

https://www.elastic.co/guide/en/logstash/6.1/advanced-pipeline.html

 

最开始应该先看看能不能连通

input {
  beats {
    port => 5044
  }
}
output {
  stdout {}
}

打算用mongodb的日志来试试

参考这篇,

http://soft.dog/2016/02/15/logstash-mongodb-slow-log/

看来最重要的是 filter 部分,合理的分隔出想要的字段

以下配置勉强能用,但是遇到 mongodb 打印 聚合操作的日志时,又不匹配了。。。,

 

input {
    beats {
        port => 5044
        host => "192.168.0.160"
        client_inactivity_timeout => 300
        type=> mongodblog
    }
}
filter {
    grok {
       match => ["message","%{TIMESTAMP_ISO8601:timestamp}\s+%{MONGO3_SEVERITY:severity}\s+%{MONGO3_COMPONENT:component}\s+(?:\[%{DATA:context}\])?\s+%{GREEDYDATA:body}"]
    }
    if [component] =~ "COMMAND" {
      grok {
        match => ["body","%{WORD:command_type}\s+%{DATA:db_name}\s+\w+\:\s+%{GREEDYDATA:command}%{INT:spend_time}ms$"]
      }
    }
    date {
      match => [ "timestamp", "UNIX", "YYYY-MM-dd HH:mm:ss", "ISO8601"]
      remove_field => [ "timestamp" ]
    }
}
output {
    elasticsearch {
        sniffing => true
        manage_template => false
        template_overwrite => true
        index => "mongodblog"
        hosts => [ "localhost:9200" ]
        document_type => "mongodblog"
   }
}

 

自己不太会写,都是百度的。

转载于:https://my.oschina.net/chen1988/blog/1604506

你可能感兴趣的:(CentOS 7 elasticsearch 6.1.1 kibana logstash filebeat 安装备忘)