ELK = Elasticsearch + Logstash + Kibanajava
ELK架构为数据分布式存储、可视化查询和日志解析建立了一个功能强大的管理链。 三者相互配合,取长补短,共同完成分布式大数据处理工做。node
注意: ELK技术栈有 version check,软件大版本号须要一致,本文以 6.4.0 版本为例。mysql
<!--more-->linux
源码下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearchsql
mkdir /usr/local/elk/es1 wget https://www.elastic.co/cn/downloads/past-releases/elasticsearch-6-4-0
useradd es
tar zxvf elasticsearch-6.4.0.tar.gz chown -R es:es elasticsearch-6.4.0
修改Elasticsearch的配置文件:/usr/local/elk/elasticsearch-6.4.0/config/elasticsearch.ymlshell
cluster.name: elasticsearch node.name: es-1 path.data: /data/elasticsearch/es1/data bootstrap.memory_lock: true network.host: 192.168.167.205 http.port: 9200 transport.tcp.port: 9300 discovery.zen.ping.unicast.hosts: ["node205.data:9300","node205.data:9301","node205.data:9302"] discovery.zen.minimum_master_nodes: 2 gateway.recover_after_nodes: 1 action.destructive_requires_name: true
Elasticsearch 不能以 root 用户启动,因此改用 es 用户启动。数据库
su – es cd /usr/local/elk/es/es1/elasticsearch-6.4.0 ./bin/elasticsearch –d
可根据 logs/elasticsearch.log 文件来监测 Elasticsearch 服务运行情况。json
注意:若是Elasticsearch服务启动失败,可参考 第五章 FAQ 处理问题。bootstrap
根据 Elasticsearch 的端口号来中止该服务:浏览器
netstat -ntlp | grep 9200 | awk '{print $7}' | awk -F '/' '{print $1}' | xargs kill -9
Logstash 是开源的服务器端数据处理管道,可以同时 从多个来源采集数据、转换数据,而后将数据发送到您最喜欢的 “存储库” 中。logstash收集日志基本流程为:
Input –> filter –> output
源码下载地址:https://www.elastic.co/cn/downloads/logstash
cd /usr/local/elk wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.2.tar.gz
useradd es
tar zxvf logstash-6.4.0.tar.gz chown -R es:es logstash-6.4.0
su - es cp -r config/logstash-sample.conf config/face.conf
修改 face.conf 配置文件以下所示:
# Sample Logstash configuration for creating a simple # Beats -> Logstash -> Elasticsearch pipeline. input { jdbc{ jdbc_connection_string => "jdbc:mysql://192.168.167.204:3316/db0?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&tinyInt1isBit=false" jdbc_user => "mycat" jdbc_password => "mycat123" jdbc_driver_library => "/usr/local/mysql-connector-java-5.1.46.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_paging_enabled => "true" jdbc_page_size => "50000" jdbc_default_timezone =>"Asia/Shanghai" statement_filepath => "./sql/face.sql" schedule => "* * * * *" # type => "mycat" # 是否记录上次执行结果, 若是为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中 record_last_run => true # 是否须要记录某个column 的值,若是record_last_run为真,能够自定义咱们须要 track 的 column 名称,此时该参数就要为 true. 不然默认 track 的是 timestamp 的值. use_column_value => true # 若是 use_column_value 为真,需配置此参数. track 的数据库 column 名,该 column 必须是递增的. 通常是mysql主键 tracking_column => "id" tracking_column_type => "numeric" last_run_metadata_path => "./face_last_id" lowercase_column_names => false } } filter { if [sex] == 1 { mutate { add_field => { "tags" => "男"} } } if [sex] == 2 { mutate { add_field => { "tags" => "女"} } } if [sex] == 0 { mutate { add_field => { "tags" => "未知"} } } } output { elasticsearch { hosts => ["http://192.168.167.205:9200"] #index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" index => "face_card" document_id => "%{id}" #user => "elastic" #password => "changeme" } stdout { codec => json_lines } }
建立 face.sql 文件
su - es mkdir sql touch face.sql
修改 face.sql 文件内容以下所示
select * from face_card where id > :sql_last_value order by id limit 1000
打开postman,执行PUT请求来建立Elasticsearch索引,索引名称为face_card,指定分片数为5,副本数为2:
PUT http://192.168.167.205:9200/face_card { "settings": { "number_of_shards": 5, "number_of_replicas": 2 } }
su - es cd /usr/local/elk/logstash-6.4.0 ./bin/logstash -f ./config/face.conf
使用postman工具,执行GET请求来查看索引内容:
GET /face_card/_search
返回示例以下图所示:
源码下载地址:https://www.elastic.co/cn/downloads/past-releases#kibana
cd /usr/local/elk wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz
useradd es
tar zxvf kibana-6.4.0-linux-x86_64.tar.gz chown -R es:es kibana-6.4.0-linux-x86_64
修改Kibana配置:config/kibana.yml
server.port: 5601 server.host: "node205.data" elasticsearch.url: "http://node205.data:9200" logging.dest: /usr/local/elk/kibana-6.4.0-linux-x86_64/logs/kibana.log
用es用户后台启动Kibana
su - es cd /usr/local/elk/kibana-6.4.0-linux-x86_64 nohup ./bin/kibana > /dev/null 2>&1 &
可根据 logs/kibana.log 文件来监测Kibana服务运行情况。
修改 /etc/security/limits.conf 文件,增长配置,来改变用户 es 每一个进程最大同时打开文件数的大小:
es soft nofile 65535 es hard nofile 65537
可切换到es用户下,而后经过下面2个命令查看当前数量:
注意:用户退出从新登陆后配置才会刷新生效。
最大线程个数过低。修改配置文件 /etc/security/limits.conf ,增长配置:
es - nproc 4096 # 或者 es soft nproc 4096 es hard nproc 4096
可切换到es用户下,而后经过下面2个命令查看当前最大线程数:
注意:用户退出从新登陆后配置才会刷新生效。
修改 /etc/sysctl.conf 文件,在文末增长配置
vm.max_map_count=262144
执行命令sysctl -p
生效。
修改 /etc/security/limits.conf 文件,增长配置:
* soft memlock unlimited * hard memlock unlimited
可能Elasticsearch所在的机器内存不足。
修改 bin/elasticsearch 文件,将 ES_JAVA_OPTS 修改成:ES_JAVA_OPTS="-Xms1g -Xmx1g"
,以下图所示:
关闭防火墙:
systemctl stop firewalld
好了各位,以上就是这篇文章的所有内容了,能看到这里的人呀,都是 人才。
白嫖很差,创做不易。 各位的支持和承认,就是我创做的最大动力,咱们下篇文章见!
若是本篇博客有任何错误,请批评指教,不胜感激 !
本文来自: 微信公众号【大数据实战演练】。阅读更多精彩好文,欢迎关注微信公众号【大数据实战演练】。