美文网首页Linux
elk安装配置

elk安装配置

作者: cjlynn | 来源:发表于2021-08-26 16:24 被阅读0次

    简介:本文介绍了elk(elasticsearch、logstash、kibana)的安装,配置,启动,以及创建用户角色,分享指定内容如dashboard的安全使用elk的方法,也是最全的攻略,笔者的遇到的坑都帮你填平了,一篇文章搞定整个elk。

    elk-安装配置使用指南

    1、安装包下载、解压、创建独立用户

    1.1、安装包下载

    cd /opt/elk
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.0-linux-x86_64.tar.gz
    wget https://artifacts.elastic.co/downloads/logstash/logstash-7.14.0.tar.gz
    wget https://artifacts.elastic.co/downloads/kibana/kibana-7.14.0-linux-x86_64.tar.gz
    wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.14.0-linux-x86_64.tar.gz
    

    1.2、解压安装包

    tar -xzf elasticsearch-7.14.0-linux-x86_64.tar.gz
    tar -xzf logstash-7.14.0.tar.gz
    tar -xzf kibana-7.14.0-linux-x86_64.tar.gz
    tar -xzf filebeat-7.14.0-linux-x86_64.tar.gz
    

    1.3、新建用户

    启动elasticsearch和kibana 要求以非root用户启动

    groupadd elk
    useradd elk -g elk
    chown -R elk:elk elasticsearch-7.14.0 
    chown -R elk:elk kibana-7.14.0-linux-x86_64
    

    2、elk各模块配置安装启动

    2.1、elasticsearch部分

    创建数据和日志文件夹,并修改权限

    mkdir -pv /data/elk/{data,logs}
    chown -R elk:elk /data/elk/
    
    2.1.1、修改配置文件config/elasticsearch.yml(单机版加安全验证)

    $ vim elasticsearch-7.14.0/config/elasticsearch.yml

    path.data: /data/elk/data
    path.logs: /data/elk/logs
    
    transport.port: 9301
    node.master: true
    node.name: node-1 # 设置节点名
    network.host: 0.0.0.0 # 允许外部 ip 访问
    #cluster.initial_master_nodes: ["node-1"] # 设置集群初始主节点
    discovery.seed_hosts: ["127.0.0.1:9301"]
    discovery.type: single-node
    
    #http.cors.enabled: true
    #http.cors.allow-origin: "*"
    #http.cors.allow-headers: Authorization,X-Requested-With,Content-Type,Content-Length
    
    #xpack.security.authc.accept_default_password: true
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.verification_mode: certificate
    xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
    xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
    
    ***使用附录一进行账号密码的配置***
    
    保存后重启ES
    进入bin目录,输入”./setup-passwords interactive”初始化密码
    
    内置三个用户:
    elastic:内置超级用户
    kibana_system:仅可用于kibana用来连接elasticsearch并与之通信, 不能用于kibana登录
    logstash_system:用于Logstash在Elasticsearch中存储监控信息时使用
    
    2.1.2、启动
    su elk
    cd elasticsearch-7.14.0
    nohup bin/elasticsearch &
    查看启动日志,看是否有异常,如果有,根据提示修改
    tail -f nohup.out
    
    其他启动方式
    ./bin/elasticsearch
    或者后台启动
    ./bin/elasticsearch -d
    
    2.1.3、测试

    测试,如下证明启动成功

    http://192.168.2.125:9200/
    elastic/123456

    $ curl -u elastic:123456 192.168.2.125:9200
    {
      "name" : "node-1",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "MNe414kdQ3ujgZTQh-LNEw",
      "version" : {
        "number" : "7.14.0",
        "build_flavor" : "default",
        "build_type" : "tar",
        "build_hash" : "dd5a0a2acaa2045ff9624f3729fc8a6f40835aa1",
        "build_date" : "2021-07-29T20:49:32.864135063Z",
        "build_snapshot" : false,
        "lucene_version" : "8.9.0",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }
    

    2.2、logstash

    root下 启动测试案例(测试启动 可以直接看下面正式操作)

    cd logstash-7.14.0/
    cp config/logstash-sample.conf ./
    nohup bin/logstash -f logstash-sample.conf &
    

    root下 配置启动

    启动成功之后,启动springboot服务,通过postman接口,发送测试数据,可以看到在kibana界面中存在日志记录
    
    可以logstash传输到redis,再启动一个logstash从redis读取到elasticsearch
    
    2.2.1、配置
    1、config/logstash.yml配置
    在logstash.yml中配置用户名和密码
    
    xpack.monitoring.enabled: true
    xpack.monitoring.elasticsearch.username: "logstash_system"
    xpack.monitoring.elasticsearch.password: "123456"
    xpack.monitoring.elasticsearch.hosts: ["http://ip:9200"]
    
    2、启动文件配置bin/logstash.conf
    input {
        file {
            path => "/opt/elk/test.log"
            start_position => beginning
        }
    }
    
    filter {
        json{
            source => "message"
            target => "statinfo"
        }
        date {
            match => [ "[statinfo][t]", "yyyy-MM-dd HH:mm:ss"]
            target => "@timestamp"
        }
    }
    
    output {
        elasticsearch {
            hosts => "192.168.2.125:9200"
            index => "statinfo-%{+YYYY.MM.dd}"
            user => "elastic"   #注意这里的和config/logstash.yml配置的用户名不同,需要有写入权限
            password => "123456"
        }
        stdout {
            codec => rubydebug                      # 输出到命令窗口
        }
    }
    

    在kibana中http://192.168.2.125:5601/app/management/kibana/indexPatterns创建索引模式[statinfo-*]

    2.2.2、启动
    root下 启动logstash
    nohup ./bin/logstash -f ./bin/logstash.conf &
    

    2.3、kibana

    1、配置config/kibana.yml
    server.port: 5601
    server.host: "0.0.0.0"
    elasticsearch.hosts: ["http://localhost:9200"]
    i18n.locale: "zh-CN"
    
    elasticsearch.username: "kibana_system"
    elasticsearch.password: "123456"
    
    2、启动
    启动kibana
    cd kibana-7.14.0-linux-x86_64
    su elk
    ./bin/kibana
    或者后台启动
    nohup ./bin/kibana &
    
    3、登录验证
    http://192.168.2.125:5601/app/kibana
    用超管登录elastic/123456
    kibana.yml配置里的kibana/123456无法登录
    
    4、创建用户和角色用于分享dashboard等指定信息
    进入kibana之后 
    创建角色statinfo,指定索引statinfo-*,权限只读
    创建用户statinfo,分配角色statinfo和kibana_dashboard_only_user
    

    2.4、filebeat(没用到可以暂时不用考虑)

    root下

    cd filebeat-7.14.0-linux-x86_64
    
    2.4.1、启动
    nohup  ./filebeat -e -c filebeat.yml &
    

    3、其他相关内容

    系统软硬件配置需求:

    内存最低4G
    
    /etc/security/limits.conf
    # End of file
    * soft     nproc          262144
    * hard     nproc          262144
    * soft     nofile         262144
    * hard     nofile         262144
    root soft     nproc       262144
    root hard     nproc       262144
    root soft     nofile      262144
    root hard     nofile      262144
    

    附录一、安全登录生成证书

    参考https://blog.csdn.net/hhf799954772/article/details/115870012

    一、生成证书:
    ./bin/elasticsearch-certutil ca
    #第一个直接回车   第二个直接回车
    
    二、生成秘钥:
    ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
    #第一个直接回车   第二个直接回车  第三个直接回车
    
    三、将凭证迁移到指定目录
    # 先创建目录
    mkdir ./config/certificates
    # 移动凭证至指定目录下
    mv ./elastic-certificates.p12 ./config/certificates/
    # 赋值权限,不然会出问题
    chmod 777 ./config/certificates/elastic-certificates.p12
    
    四、凭证移动至每一台集群下面
    #elastic-certificates.p12这个文件移动到每一个es安装目录的相同路径下
    
    五、修改配置文件(每一台es都需要添加)
    vim ./config/elasticsearch.yml
    # 输入如下的配置
    
    # 跨域
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    http.cors.allow-headers: Authorization,X-Requested-With,Content-Type,Content-Length
    
    xpack.security.enabled: true
    xpack.security.authc.accept_default_password: true
    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.verification_mode: certificate
    xpack.security.transport.ssl.keystore.path: /opt/elk/elasticsearch-7.14.0/config/elastic-certificates.p12
    xpack.security.transport.ssl.truststore.path: /opt/elk/elasticsearch-7.14.0/config/elastic-certificates.p12
    
    六、在各个节点上添加密码(每一台es都需要操作)
    ./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
    
    七、逐个启动节点
    ./bin/elasticsearch -d
    
    八、设置密码
    ./bin/elasticsearch-setup-passwords  interactive
    # 下面会要输入很多密码,都要自己能记住,以后要用
    # 需要设置 elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user 这些用户的密码
    

    附录二、springboot项目logstash日志配置(选用:logstash指定文件可不需要此配置)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration>
    <configuration>
        <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
            <!--指定logstash ip:监听端口-->
            <destination>192.168.2.125:9601</destination>
            <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
        </appender>
    
        <!--引用springboot默认配置-->
        <include resource="org/springframework/boot/logging/logback/base.xml"/>
        
        <root level="INFO">
            <!--使用上述订阅logstash数据tcp传输 -->
            <appender-ref ref="LOGSTASH" />
            <!--使用springboot默认配置 调试窗口输出-->
            <appender-ref ref="CONSOLE" />
        </root>
    
    </configuration>
    

    附录三、kibana dashboard嵌入到web中的简单做法

    1、嵌入web页面中,定时刷新kibana dashboard嵌入到web中的简单做法
    <!DOCTYPE html>
    <html>
      <style type="text/css">
        html, body { margin: 0; padding 0; width: 100%; height: 100%;}
        iframe { border: 0; width: 100%; height: 99%; }
      </style>
      <script language='javascript' type='text/javascript'>
        Hello World!
      </script>
      <body>
       <iframe src="http://xxxxxxx:5602/app/kibana#/dashboard/c964bfe0-d7f3-11eb-aba4-756408fc1114?embed=true&_g=(refreshInterval%3A(pause%3A!t%2Cvalue%3A0)%2Ctime%3A(from%3Anow-12h%2Cmode%3Aquick%2Cto%3Anow))" height="900" width="1800"></iframe>
      </body>
    </html>
    
    2、kibana内嵌到web中的定制化问题

    参考kibana的dashboard内嵌到web中的定制化问题

    kibana内嵌到web中的定制化问题
    
    2个通用的需求:
    1.去掉AddFilter按钮
    2.自定义传参过滤或者搜索
    
    3、nginx配置(通过nginx配置指定授权的用户)
    创建一个用户专门只能查看dashboard的统计图,因为这个是配置到nginx用来免登录的。
    root@v:/opt/elk# echo -n 'statinfo:123456' | base64               
    c3RhdGluZm86MTIzNDU2
    

    nginx添加配置

    server {
        server_name 192.168.2.125;
        listen 5602;
    
        #listen 443 ssl;
        #ssl on;
        #ssl_certificate ssl.cer;
        #ssl_certificate_key ssl.pem;
    
        location / {
                proxy_set_header Host $proxy_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Authorization "Basic ZWxhc3RpYzoxMjM0NTY="; # base64-encoded username:password to pass in header
                proxy_pass http://192.168.2.125:5601/;
        }
    }
    
    

    相关文章

      网友评论

        本文标题:elk安装配置

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