zoukankan      html  css  js  c++  java
  • ELK容器化部署

    centos7容器

              docker pull centos7 启动一个基础容器

              docker cp elastic.tar.gz ab33344ef:/root

              docker exec -ti ab33344ef /bin/bash

    instances:
      - name: 'node1'
        dns: [ 'node1.elastic.test.com' ]
      - name: 'my-kibana'
        dns: [ 'kibana.local' ]
      - name: 'logstash'
        dns: [ 'logstash.local' ]
    instance.yml

            生成CA和服务器证书(Elasticsearch安装完毕之后)

           bin/elasticsearch-certutil cert ca --pem --in ~/tmp/cert_blog/instance.yml --out ~/tmp/cert_blog/certs.zip

           unzip certs.zip -d ./certs

           

         配置elasticsearch.yml

    node.name: node1
    network.host: node1.elastic.test.com
    xpack.security.enabled: true
    xpack.security.http.ssl.enabled: true
    xpack.security.transport.ssl.enabled: true
    xpack.security.http.ssl.key: certs/node1.key
    xpack.security.http.ssl.certificate: certs/node1.crt
    xpack.security.http.ssl.certificate_authorities: certs/ca.crt
    xpack.security.transport.ssl.key: certs/node1.key
    xpack.security.transport.ssl.certificate: certs/node1.crt
    xpack.security.transport.ssl.certificate_authorities: certs/ca.crt
    discovery.seed_hosts: [ "node1.elastic.test.com" ]
    cluster.initial_master_nodes: [ "node1" ]
    elasticsearch.yml

      设置内置用户的密码

             bin/elasticsearch-setup-passwords auto -u "https://node1.elastic.test.com:9200"

         

      启动es

         

           /usr/share/elasticsearch/bin/elasticsearch

           root@siem-cluster-node-09 /]# id elsearch
             uid=1000(elsearch) gid=1000(elsearch) groups=1000(elsearch)

          docker commit 2c7add484489 192.168.30.13/aabb/elastic

          docker push 192.168.30.13/aabb/elastic

    Elastic容器设置

       

         

    Kibana容器设置

          kibana.yml中证书来源于在elasticsearch容器中生成certs和key以及生成的es内置用户账号

    server.name: "my-kibana"
    server.host: "kibana.local"
    server.ssl.enabled: true
    server.ssl.certificate: /etc/kibana/config/certs/my-kibana.crt
    server.ssl.key: /etc/kibana/config/certs/my-kibana.key
    elasticsearch.hosts: ["https://node1.elastic.test.com:9200"]
    elasticsearch.username: "kibana"
    elasticsearch.password: "uFrZj1AW82vwSMeW02Cc"
    elasticsearch.ssl.certificateAuthorities: [ "/etc/kibana/config/certs/ca.crt" ]
    monitoring.enabled: false
    kibana.yml

     可忽略的错误 不影响kibana的使用

     访问kibana

           

           

        示例参考地址

           https://www.elastic.co/cn/blog/configuring-ssl-tls-and-https-to-secure-elasticsearch-kibana-beats-and-logstash#create-ssl 

        问题

           elasticsearch工作负载一旦重新创建 它生成的内置用户账号就会失效  kibana和logstash就会连接不上新启动的es Pod

           所以elasticsearch一旦创建后不能随意进行创建

      替换容器中的环境变量

               sed -i 's/redis_ip="[0-9.]*"/redis_ip="'$redis_ip'"/' config.ini

               docker run -d --restart=always  --ulimit core=-1 --privileged=true  -e redis_ip=$REDIS_IP -e redis_port=$REDIS_PORT 

            

    容器使用环境变量传递动态参数

        1.找到对应容器

         

        2.登录容器

        

       3.创建启动脚本start.sh

           sed -i 's/elasticsearch.password: ".*"/elasticsearch.password: "'$espasswd'"/' /root/kibana-7.8.1-linux-x86_64/config/kibana.yml

           1.动态使用环境变量修改配置文件

           2.启动相关应用

          

       4.保存镜像

            docker commit  1d008b3396f6 192.168.30.11/9999/kibana:v2

            docker push 192.168.30.11/9999/kibana:v2

       5.启动容器时候的设置

         

          

     Logstash容器设置

    node.name: logstash.local
    path.config: /etc/logstash/conf.d/*.conf
    xpack.monitoring.enabled: true
    xpack.monitoring.elasticsearch.username: 'elastic'
    xpack.monitoring.elasticsearch.password: 'AokJY29yc13rvdKuFzsM'
    xpack.monitoring.elasticsearch.hosts: [ 'https://node1.elastic.test.com:9200' ]
    xpack.monitoring.elasticsearch.ssl.certificate_authority: /etc/logstash/config/certs/ca.crt
    logstash.yml
    input {
      beats {
        port => 5044
        ssl => true
        ssl_key => '/etc/logstash/config/certs/logstash.pkcs8.key'
        ssl_certificate => '/etc/logstash/config/certs/logstash.crt'
      }
    }
    output {
      elasticsearch {
        hosts => ["https://node1.elastic.test.com:9200"]
        cacert => '/etc/logstash/config/certs/ca.crt'
        user => 'elastic'
        password => 'AokJY29yc13rvdKuFzsM'
      }
    }
    /etc/logstash/conf.d/example.conf
    vi start.sh 
    
    sed -i 's/xpack.monitoring.elasticsearch.password: ".*"/xpack.monitoring.elasticsearch.password: "'$espasswd'"/' /root/logstash-7.8.1/config/logstash.yml
    
    sed -i 's/password => ".*"/password => "'$espasswd'"/' /etc/logstash/conf.d/example.conf
    
    /root/logstash-7.8.1/bin/logstash
    start.sh

     

       

       

       搭建成功 elk

       elasticsearch的pod重新创建后需要进入es容器重新生成密码 然后给kibana和logstashpod重新设置espasswd的环境变量

    Flink容器安装

          flink容器启动失败 经过分析是因为启动脚本是以后台进程的方式启动的导致脚本一结束容器便自动结束

          flink以前台进程方式启动是需要手动修改start-cluster.sh文件

           

           vi  start-cluster.sh     修改文件内容

              

            

           

            启动shell的方式不同导致结果不同

               正确的启动脚本方式   ./start-cluster.sh

               错误的启动脚本方式   sh start-cluster.sh  会提示语法错误

            jobmanager.sh start 以后台进程方式启动

            jobmanager.sh start-foreground 以前台进程的方式启动

           以docker容器的方式启动主进程必须要以前台的方式运行

    kafka部署

           docker pull kafkamanager/kafka-manager

           docker tag 14a7c1e556f7  192.168.30.113/library/kafka

           docker push 192.168.30.113/library/kafka

           kafka依赖zookeeper 必须先部署zookeeper

           

         kafaka容器设置

         

        kafka成功启动

  • 相关阅读:
    OpenERP Framework API存档
    OpenERP 7 picking order 继承需要注意的地方
    Unity战斗系统之AI自主决策
    简易2D横版RPG游戏制作
    UGUI之Canvas Group
    UGUI之Canvas和EventSystem
    NGUI之scroll view的制作和踩坑总结
    NGUI之Toggle实现单选框
    Unity中对象池的使用
    继承MonoBehaviour类的优缺点和相关报错
  • 原文地址:https://www.cnblogs.com/yxh168/p/13517392.html
Copyright © 2011-2022 走看看