Elasticsearch学习篇第五章(附):使用ELK实现数据收集

基本信息介绍

三台es集群:

192.168.225.138 es  master  filebeat  head

192.168.225.139 es  logstash

192.168.225.140 es  kibana

备注:安装我之前文件安装es并组装成集群,由于es是安装集群name来实现集群的,只要搭建好就应该很容易组建好集群,这里就不多讲了。

我的组建方法就是先搭建一台,然后将虚拟机copy三份,刚开始也是识别不了,最后清理掉配置中data、logs中的内容之后就可以顺利完成集群了,也分享哈我集群的配置文件,不保证权威,自己瞎摸索的...

elasticsearch.yml

cluster.name: myCluster
node.name: node-1
node.data: true
path.data: /opt/els/els_data
path.logs: /opt/els/els_logs
bootstrap.memory_lock: true
network.host: 192.168.225.138
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
discovery.zen.ping.unicast.hosts: ["192.168.225.138:9300","192.168.225.139:9300"]
discovery.zen.minimum_master_nodes: 2
action.destructive_requires_name: true
# 增加参数,使head插件可以访问es  
http.cors.enabled: true
http.cors.allow-origin: "*"

因为需要子用户启动,涉及到文件使用权限问题,这里列下,因为要频繁设置

# els01 是用户名,后面的els01不是密码
chown -R els01:els01 /usr/local/filebeat
chmod -R 755 /usr/local/filebeat

filebeat配置

1.两个组件构成,分别是inputs(输入)和harvesters(收集器)
2.input负责管理harvesters和寻找所有来源读取
3.input将查找驱动器上与定义的路径匹配的所有文件,并为每个文件启动一个harvester
4.harvester负责打开和关闭文件

filebeat何如保证至少一次数据消费

1.每个事件的传递状态存储在注册表文件中
2.输出被阻止且未确认所有事件的情况下,Filebeat将继续尝试发送事件,直到输出确认已接收到事件为止
3.Filebeat运行时,每个输入的状态信息也保存在内存中
4.对于每个文件,Filebeat存储唯一的标识符
5.Filebeat重新启动时,来自注册表文件的数据用于重建状态,Filebeat在最后一个已知位置继续每个harvester
6.设置shutdown_timeout选项,可以将Filebeat配置为在关机前等待特定时间

filebeat.yml

# 输入位置
filebeat.inputs:
  - type: log
  enabled: true
  paths:
     - /var/logs/*.log
     
# 输出位置    
output.logstash:
  # The Logstash hosts
  hosts: ["192.168.225.139:5044"]
  loadbalance: true

logstash配置

1.inputs(必须的)→ filters(可选的)→ outputs(必须的)
2.inputs生成事件
3.filters对其事件进行过滤和处理
4.outputs输出到输出端或者决定其存储在哪些组件里

inputs和outputs支持编码和解码

如下是目前logstash7.7.0支持的inputs、outputs、filters

inputs:

azure_event_hubs,beats,cloudwatch,couchdb_changes,dead_letter_queue,elasticsearch,exec,file,ganglia,gelf,generator,github,google_cloud_storage,google_pubsub,graphite,heartbeat,http,http_poller,imap,irc,java_generator,java_stdin,jdbc,jms,jmx,kafka,kinesis,log4j,lumberjack,meetup,pipe,puppet_facter,rabbitmq,redis,relp,rss,s3,s3-sns-sqs,salesforce,snmp,snmptrap,sqlite,sqs,stdin,stomp,syslog,tcp,twitter,udp,unix,varnishlog,websocket,wmi,xmpp

outputs:

boundary, circonus, cloudwatch, csv, datadog, datadog_metrics, elastic_app_search, elasticsearch, email, exec, file, ganglia, gelf, google_bigquery, google_cloud_storage, google_pubsub, graphite, graphtastic, http, influxdb, irc, sink, java_stdout, juggernaut, kafka, librato, loggly, lumberjack, metriccatcher, mongodb, nagios, nagios_nsca, opentsdb, pagerduty, pipe, rabbitmq,redis, redmine, riak, riemann, s3, sns, solr_http, sqs, statsd, stdout, stomp, syslog, tcp, timber, udp, webhdfs, websocket, xmpp,zabbix

filters:

aggregate, alter, bytes, cidr, cipher, clone, csv, date, de_dot, dissect, dns, drop, elapsed, elasticsearch, environment, extractnumbers, fingerprint, geoip, grok, http, i18n, java_uuid, jdbc_static, jdbc_streaming, json, json_encode, kv, memcached, metricize, metrics, mutate, prune, range, ruby, sleep, split, syslog_pri, threats_classifier, throttle, tld, translate, truncate, urldecode,useragent, uuid, xml

logstash.conf

input {
  beats {
    port => 5044
  }
}

# 输出到es中
output {
  elasticsearch {
    hosts => ["http://192.168.225.138:9200"]
    # 名字格式
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

启动,带上配置文件

nohup ./bin/logstash -f config/logstash.conf &

展示

  1. 我在192.168.225.138的/var/logs中增加2.log文件,里面的内容乱加的

  2. filebeat扫描/var/logs文件夹里面的文件后将数据发送到logstash中

  3. logstash将数据发送到es中,最后在es中的真的找到内容了

kibana配置

kibana.yml

server.port: 5601
server.host: "0.0.0.0"
server.name: "my-kibana"
elasticsearch.hosts: ["http://192.168.225.138:9200","http://192.168.225.139:9200","http://192.168.225.140:9200"]
elasticsearch.preserveHost: true
kibana.index: ".kibana"
elasticsearch.username: "elastic"
elasticsearch.password: "password"   #或者使用keystore的保存的密码"${ES_PWD}"
i18n.locale: "zh-CN"  # 中文

启动

./bin/kibana
# 访问
http://192.168.225.140:5601/

推荐阅读更多精彩内容