美文网首页
ELK-简陋笔记

ELK-简陋笔记

作者: 小浪崇礼 | 来源:发表于2020-04-18 15:37 被阅读0次

    ES环境准备

    yum install ntpdate -y ; iptabls -F ; 禁用selinux,保持每个时间得时区都是一样得

    1台测试得WEB,3台ES,1台Logstash,1台kibana

    Index  -- Database

    Type  -- Table

    Document -- Row

    Field    -- Column

    安装Elasticsearch,可以通过二进制的方式安装,也可以通过rpm的方式安装,推荐使用rpm的方式安装,所以找到ES的官方网站然后倒入对应的yum源,导入key

    版本6.2

    安装前,需要在当前操作系统安装开源你的java环境

    yum install java-1.8.0-openjdk -y

    rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

    vim /etc/yum.repos.d/elastic.repo

    [elastic-6.x]

    name=Elastic repository for 6.x packages

    baseurl=https://artifacts.elastic.co/packages/6.x/yum

    gpgcheck=1

    gpgkey=https:/artifacts.elastic.co/GPG-KEY-elasticsearch

    enabled=1

    autorefresh=1

    type=rpm-md

    开始安装

    yum install elasticsearch -y

    安装完成之后开始配置ES

    vim /etc/elasticsearch/elasticsearch.yml

    cluster.name: elk-cluster

    node.name: node-1

    path.data: /var/lib/elasticsearch

    path.logs: /var/log/elasticsearch

    network.host: 192.168.0.212 (ES自己的IP地址)

    http.port: 9200

    discovery.zen.ping.unicast.hosts: ["192.168.0.212","192.168.0.213","192.168.0.214"]

    discovery.zen.minimum_master_nodes: 2

    启动ES

    systemctl start elasticsearch

    查看对应的日志,确认没有我呢提

    确认集群是否正常

    curl -X GET "192.168.0.212:9200/_cat/health?v"

    curl -X GET "192.168.0.212:9200/_cat/node?v"

    Elasticsearch  数据操作

    RestFul API 格式

    curl -X<verb> '<protocol>://<host>:<port>/<path>?<query_string>' -d '<body>'

    verb -- HTTP方法 : GET POST PUT HEAD DELETE

    host -- ES集群中的任意节点主机名

    port -- ES HTTP服务端口,默认9200

    path -- 索引路径

    query_string  可选的查询请求参数,例如?pretty参数将格式化输出json数据

    -d 里面放一个GET的json格式请求主体

    body 写进去的json格式的请求主体

    列出所有的索引

    curl -X GET "192.168.0.212:9200/_cat/indices?v"

    创建索引

    curl -X PUT "192.168.0.212:9200/log-cntf-202004"

    Elasticsearch  常用的查询

    match_all; from,size; match; bool; range;

    Elasticsearch -- head插件

    此插件可方便各种ES查询和其他各种常见的操作是图像界面操作

    wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz

    tar -zxvf node-v4.4.7-linux-x64.tar.gz

    mv node-v4.4.7 /usr/local/node-v4.4.7

    # vim /etc/profile

    NODE_HOME=/usr/local/node-v4.4

    PATH=$NODE_HOME/bin:$PATH

    export NODE_HOME PATH

    # source /etc/profile

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

    cd elasticsearch-head

    npm install

    npm run start

    Logstash

    配置好Logstash的yum源,然后直接使用yum安装rpm包

    yum install logstash -y 注意装的时候跟ES版本一样

    条件判断

    输入(Input)插件

    Stdin(标准输入)

    input {

    stdin{

    }

    }

    filter {

    }

    output {

    stdout{

    codec => rubydebug

    }

    }

    File(文件)

    input {

    file {

    path => "/var/log/messages"

    tags => "cntf"

    type => "syslog"

    }

    }

    filter {

    }

    output {

    stdout {

    codec => rubdebug

    }

    }

    Tcp

    input {

    tcp {

    port => 34567

    type => "nc"

    }

    }

    filter {

    }

    output {

    stdout {

    codec => rubdebug

    }

    }

    Beats

    input {

    beats {

    port => 6088

    }

    }

    filter {

    }

    output {

    stdout {

    codec => rubydebug

    }

    }

    /usr/share/logstash/bin/logstash -t -f /etc/logstash/conf.d/cntf.conf

    上述是测试配置文件是否正确

    /usr/share/logstash/bin/logstash -r -f /etc/logstash/conf.d/cntf.conf

    启动logstash

    Logstash -- 编码插件

    input {

    stdin {

    codec =>json {

    charset =>["utf-8"]

    }

    }

    }

    filter{

    }

    output {

    stdout {

    codec => rubdebug

    }

    }

    下面是通过正则匹配一些特定的内容,进行输出到一行,经常用到情景是java异常日志输出的格式

    input {

    stdin {

    codec =>multiline {

    pattern => "^\s"

    what => "previous"

    }

    }

    }

    filter{

    }

    output {

    stdout {

    codec => rubdebug

    }

    }

    Logstash  -- 过滤器(Filter) 插件

    input {

    stdin {

    }

    }

    filter {

    json {

    source => "message"

    target => "content"

    }

    }

    output {

    stdout {

    codec => rubdebug

    }

    }

    kv的形式 key-value

    input {

    stdin {

    }

    }

    filter {

    kv {

    field_split => "&?"

    }

    }

    output {

    stdout {

    codec => rubdebug

    }

    }

    input {

    stdin {

    }

    }

    filter {

    kv {

    field_split_pattern => ":+"

    }

    }

    output {

    stdout {

    codec => rubdebug

    }

    }

    Logstash - 过滤器(Filter) Grok插件

    grok在线解析

    grokdebug.herokuapp.com

    Kibana 安装

    yum install kibana -y

    安装好kibana之后,然后通过配置kibana的配置文件,收集Elasticsearch所拿到的日志

    Kibana 组件X-Pack但是是收费的

    为了安全,通过nginx提供http的基础认证

    nginx配置认证的配置文件

    location / {

    proxy_pass http://192.168.0.212:5601;

    auth_basic "Please input your user&pasword";

    auth_basic_user_file /usr/local/nginx/conf/passwd.db;

    }

    openssl passwd -crypt 123456 将生成的加密密码写入到下面的文件

    vim /usr/local/nginx/conf/passwd.db

    cntf:faHgR3x/qNehA

    加入redis

    安装redis,记得使用epel安装源

    file -> logstash shipper -> redis -> logstash indexer -> elasticsearch -> kibana

    加入Filebeat

    filebeat也是个收集日志的组件

    安装filebeat

    yum install filebeat -y

    file -> filebeat -> redis -> logstash -> elasticsearch -> kibana

    生产如何上线ELK

    1.日志分类

    系统日志 rsyslog  logstash syslog插件

    访问日志 nginx    logstash codec json

    错误日志 file    logstash file+ mulitline

    运行日志 file    logstash codec json

    设备日志 syslog  logstash syslog 插件

    debug日志 file    logstash json or mulitline

    2.日志标准化

    路径  固定

    格式  json

    3.系统日志--错误日志--运行日志--访问日志

    相关文章

      网友评论

          本文标题:ELK-简陋笔记

          本文链接:https://www.haomeiwen.com/subject/wdebvhtx.html