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
好了各位,以上就是這篇文章的所有內容了,能看到這裏的人呀,都是 人才。
白嫖很差,創做不易。 各位的支持和承認,就是我創做的最大動力,咱們下篇文章見!
若是本篇博客有任何錯誤,請批評指教,不勝感激 !
本文來自: 微信公衆號【大數據實戰演練】。閱讀更多精彩好文,歡迎關注微信公衆號【大數據實戰演練】。