ELK 設(shè)置定時(shí)清理腳本清理索引
666
2025-04-02
導(dǎo)入數(shù)據(jù)到mysql
從https://github.com/Kidand/dianping-project下載ddl.sql和dml.sql目錄/opt/datas,因?yàn)閙ysql是docker的形式安裝,要把SQL格式的文檔拷貝到mysql的/opt/目錄里。
docker cp /opt/datas/ddl.sql zabbix-mysql:/opt/
docker cp /opt/datas/dml.sql zabbix-mysql:/opt/
如圖所示在mas5的主機(jī)里。
使用命令進(jìn)入mysql的docker系統(tǒng)里:docker exec -it zabbix-mysql /bin/bash
在登錄MySql數(shù)據(jù)庫里,建立數(shù)據(jù)庫dianpingdb。使用source /opt/ddl.sql建表。在進(jìn)入dianpingdb,使用source /opt/dml.sql導(dǎo)入數(shù)據(jù)到表中。
2. 使用logstash做數(shù)據(jù)同步
到官方https://www.elastic.co/cn/downloads/past-releases/logstash-7-6-2下載相對應(yīng)的logstash包,下載到/opt/elk/并進(jìn)到其目錄里。解壓tar -zvxf logstash-7.6.2.tar.gz。進(jìn)到logstash-7.6.2/bin的目錄里建立mysql目錄,把mysql-connector-java-5.1.40-bin.jar拷貝到mysql文件夾里。
編輯jdbc.sql和last_value_meta,這兩個(gè)文件的主要作用是判斷是否要做數(shù)據(jù)更新。
jdbc.conf這個(gè)配置文件比較重要。配置如下:
input {
jdbc {
#設(shè)置timezone
jdbc_default_timezone => "Asia/Shanghai"
# mysql 數(shù)據(jù)庫鏈接,dianpingdb為數(shù)據(jù)庫名
jdbc_connection_string => "jdbc:mysql://mas5.wuyi.com:3306/dianpingdb"
# 用戶名和密碼
jdbc_user => "root"
jdbc_password => "123456"
# 驅(qū)動(dòng) 注意:如果不要下面這行代碼,那就要把mysql-connector-java-5.1.40-bin.jar放到/opt/elk/logstash-7.6.2/logstash-core/lib/jars目錄里即可。
jdbc_driver_library => "/opt/elk/logstash-7.6.2/bin/mysql/mysql-connector-java-5.1.40-bin.jar"
# 驅(qū)動(dòng)類名
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
codec => plain{ charset => "UTF-8"}
last_run_metadata_path => "/opt/elk/logstash-7.6.2/bin/mysql/last_value_meta"
# 執(zhí)行的sql 文件路徑+名稱;
statement_filepath => "/opt/elk/logstash-7.6.2/bin/mysql/jdbc.sql"
# 設(shè)置監(jiān)聽間隔? 各字段含義(由左至右)分、時(shí)、天、月、年,全部為*默認(rèn)含義為每分鐘都更新
schedule => "* * * * *"
}
}
output {
# ES的IP地址及端口
hosts => ["mas2.wuyi.com:9200"]
# 索引名稱
index => "shop"
# document_type => "_doc"
# 自增ID 需要關(guān)聯(lián)的數(shù)據(jù)庫中有有一個(gè)id字段,對應(yīng)索引的id號(hào)
document_id => "%{id}"
codec => plain{ charset => "UTF-8"}
}
stdout {
# JSON格式輸出
codec => json_lines
}
}
配置完成后,使用瀏覽器打開http://mas2.wuyi.com:5601/app/kibana#/dev_tools/console
建立shop索引,代碼如下:
PUT shop
{
"settings" : {
"number_of_shards" : 1,
"number_of_replicas" : 1},
"mappings": {
"properties": {
"id":{
"type":"integer"},
"name":{
"type":"text",
"analyzer": "ik_max_word",
"search_analyzer":"ik_smart"},
"tags":{
"type":"text",
"analyzer": "whitespace",
"fielddata":true},
"location":{
"type":"geo_point"},
"remark_score":{
"type":"double"},
"price_per_man":{
"type":"integer"},
"category_id":{
"type":"integer"},
"category_name":{
"type":"keyword"},
"seller_id":{
"type":"integer"},
"seller_remark_score":{
"type":"double"},
"seller_disabled_flag":{
"type":"integer"}
}
}
}
運(yùn)行后,獲取的結(jié)果和右圖所示一樣,說明創(chuàng)建shop索引成功。
使用命令執(zhí)行./logstash -f mysql/jdbc.conf
雖然執(zhí)行成功,但是中文出現(xiàn)亂碼。即使在jdbc.conf添加input和output都添加codec => plain{ charset => "UTF-8"}還是出現(xiàn)亂碼。如圖所示:
在http://mas2.wuyi.com:5601/app/kibana#/dev_tools/console使用GET /shop/_search查詢?nèi)恚€是亂碼。
經(jīng)多次排查,有可能是之前mysql的編碼沒弄好出現(xiàn)的問題,進(jìn)入docker版的mysql,使用show variables like 'character%';查出character_set_client的值為latin1,使用set names utf8;命令把character的值都變?yōu)閡tf8,但是重啟docker生效后,character的值有變回到latin1。
因?yàn)檫@個(gè)mysql配置的數(shù)據(jù)庫太多了,有hue,hive, zabbix。暫時(shí)不想弄這個(gè)mysql。明天再重新配置一個(gè)mysql再做測試。
這次排查亂碼的原因,一直以為是logstash的問題,浪費(fèi)了很多時(shí)間,同時(shí)也發(fā)現(xiàn)了我對logstash還不熟悉,要多花點(diǎn)時(shí)間去學(xué)習(xí)logstash。
彈性云服務(wù)器 ECS elasticsearch 推薦系統(tǒng)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。