V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
knownsec200
V2EX  ›  奇思妙想

ELK 初探

  •  
  •   knownsec200 · 2018-07-02 15:34:28 +08:00 · 3076 次点击
    这是一个创建于 2341 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求背景:

    业务发展越来越大,服务器越来越多,各种访问日志,应用日志,错误日志也越来越多,开发人员排查问题,需要上服务器查,不方便,运营人员需要一些数据,也需要运维人员上服务器分子日志。 Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。 Logstash 是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。 kibana 也是一个开源和免费的工具,他 Kibana 可以为 Logstash 和 Elastic Search 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

    一、准备工作

    三台服务器环境: 192.168.153.13 (主节点) cnetos7 192.168.153.14 (数据节点) centos7 192.168.153.15 (数据节点) centos7 角色划分: 3 台全部安装 elasticsearch 主节点上安装 kibana 其中一个( 192.168.153.15 )数据节点上安装 logstash

    二、部署工作:

    1、三台机器上都安装 jdk yum install -y java-1.8.0-openjdk 2、安装 elasticsearch 下载 6.3 版本的 在一台机器上执行 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.rpm 用 scp 同步到另外两台机器上 然后分别在三台机器上执行: rpm -ivh elasticsearch-6.3.0.rpm 3、配置 es 在主节点上配置如下信息: vim /etc/elasticsearch/elasticsearch.yml cluster.name: test node.name: test-01 node.master: true node.data: false path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch network.host: 192.168.153.13 http.port: 9200 discovery.zen.ping.unicast.hosts: ["192.168.153.13","192.168.153.14", "192.168.153.15"] 配置完保存,分别拷贝到其他两个节点上 在一个从节点: vim /etc/elasticsearch/elasticsearch.yml #修改以下 4 行数据 node.name: test-14 node.master: false node.data: true network.host: 192.168.153.14 在另一个从节点也是同样的修改(注意 ip 和 node.name 不一样) 4、启动 es 顺序:主,从,从 systemctl start elasticsearch #curl '192.168.153.13:9200/_cluster/health?pretty' 查看集群节点有没有问题

    5、安装 kibana (主机器上) wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.0-x86_64.rpm rpm -ivh kibana-6.3.0-x86_64.rpm vim /etc/kibana/kibana.yml #配置 kibana server.port: 5601 server.host: 192.168.153.13 elasticsearch.url: "http://192.168.153.13:9200" 启动: systemctl start kibana 查看进程,端口,检查服务是否启动起来 浏览器访问:192.168.153.13:5601,可以访问到说明成功了 6、安装 logstash 在 192.168.153.15 机器上安装 wget https://artifacts.elastic.co/downloads/logstash/logstash-6.3.0.rpm rpm -ivh logstash-6.3.0.rpm 配置 logstash vim /etc/logstash/conf.d/syslog.conf #以收集系统日志为例 input{ syslog{ type => "syslog-syslog" port => 10514 } } output{ stdout{ codec => rubydebug } } 检查配置文件是否有错: cd /usr/share/logstash/bin ./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf --config.te st_and_exit 显示 Configuration OK,说明可以启动了 注:启动之前要做一件事,检查 10514 端口是否打开,没有打开,那么配置一下 vim /etc/rsyslog.conf 在#### RULES #### 下面添加一行 .@@192.168.153.15:10514 启动: ./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf 注:此处一个小实验 执行了./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf,终端页面不会退出,在新打开一个终端页面,执行 systemctl restart rsyslog,然后反过去看之前的终端页面,会出现日志信息(图略)


    三、配置 logstash 收集信息展示在 kibana 上 1、配置并启动 logstash vim /etc/logstash/conf.d/syslog.conf input{ syslog{ type => "syslog-syslog" port => 10514 } } output{ elasticsearch{ hosts => ["192.168.153.13:9200"] index => "system-syslog-%{+YYYY.MM}" } } 检查配置: /usr/share/logstash/bin/logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf --config.te st_and_exit 为对 logstash 的日志和数据目录授权: chown -R logstash /var/lib/logstash/ chown -R logstash /log/lib/logstash/ 启动: systemctl restart logstash 稍等查看端口 9600 是否启动起来

    2、kibana 上看日志 配置 logstash 监听 192.168.153.15 这个 ip vim /etc/logstash/logstash.yml http.host: "192.168.153.15" systemctl restart logstash

    web 页面打开 kibana 并配置索引; 索引可以执行:curl '192.168.153.13:9200/_cat/indices?v' 来获取

    然后下一步,create ; 回到首页 discover,可以看到

    3、实验: 终端窗口关闭 192.168.153.15 这个页面,再重新连接,会看到 /var/log/messages 下会生成新的日志; 刷新 kibana 页面,可以看到新生成的日志

    10 条回复    2018-07-05 17:30:59 +08:00
    FYK
        1
    FYK  
       2018-07-02 17:06:25 +08:00
    ballshapesdsd
        2
    ballshapesdsd  
       2018-07-02 17:10:16 +08:00
    @FYK #1
    artandlol
        3
    artandlol  
       2018-07-02 22:28:30 +08:00 via iPhone
    docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -e ES_MIN_MEM=128m  -e ES_MAX_MEM=1024m -it --name elk sebp/elk:es220_l222_k441
    service logstash stop
    /opt/logstash/bin/logstash -e 'input { stdin { } } output { elasticsearch { hosts => ["localhost"] } }'
    service logstash start
    artandlol
        4
    artandlol  
       2018-07-02 22:31:04 +08:00 via iPhone
    mingyun
        5
    mingyun  
       2018-07-02 22:52:02 +08:00
    有更好的排版吗
    yanaraika
        6
    yanaraika  
       2018-07-02 22:57:50 +08:00
    docker-compose 一键启动就行了……
    vencent
        7
    vencent  
       2018-07-02 23:53:17 +08:00
    排版有点难受噢
    fireapp
        8
    fireapp  
       2018-07-03 09:53:12 +08:00 via iPhone
    v2 都成了 helloworld 的个人 blogs 了
    FYK
        9
    FYK  
       2018-07-03 11:23:24 +08:00
    @ballshapesdsd #2 这是为啥啊
    jasonslyvia
        10
    jasonslyvia  
       2018-07-05 17:30:59 +08:00
    好歹排个版
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1042 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:39 · PVG 04:39 · LAX 12:39 · JFK 15:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.