ELK部署安裝

安裝elasticsearch

1.拉取elastic search鏡像

docker pull elasticsearch:7.3.0

docker images

REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE

docker.io/elasticsearch        latest              5acf0e8da90b        18 months ago       486 MB

2.啓動elasticsearch

docker run -it --name elasticsearch -d -p 9200:9200 -p 9300:9300 -p 5601:5601 elasticsearch

這裏的-p 5601:5601 是kibana的端口地址 (我這裏kibana的container共用elasticsearch的網絡,所以這樣設置)

3.查看容器啓動狀況

[root@localhost ~]# docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                    NAMES

672a615ca57b        elasticsearch       "/docker-entrypoin..."   40 minutes ago      Up 40 minutes       0.0.0.0:5601->5601/tcp, 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   elasticsearch

[root@localhost ~]# docker inspect 672a615ca57b

4.訪問elastic search

打開瀏覽器訪問http://192.168.1.100:9200,如果看到如下頁面,說明elasticsearch安裝成功

安裝kibana

[root@localhost ~]# docker pull kibana

[root@localhost ~]# docker run -it -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 --name kibana --network=container:elasticsearch kibana

打開瀏覽器查看http://192.168.1.100:5601/app/kibana

這裏我們做一些測試

#1.創建索引

put /mayikt

#2.創建document,插入數據

put /mayikt/user/1

{

  "name":"fj",

  "sex":"1",

  "age":"22"

}

#3.查看數據

GET /mayikt/user/1

#4.查看document中所有數據

GET /mayikt/user/_search

{

  "query":{

    "match_all":{}

  }

}

安裝logstash

1.下載logstash,這裏我選擇的是6.4.3版本

官網地址爲:http://www.elastic.co/cn/products/logstash

2.安裝logstash

[root@localhost local]# tar -zxf logstash-6.4.3.tar.gz

[root@localhost local]# mv logstash-6.4.3 logstash

#安裝logstash的jdbc插件和es插件

[root@localhost logstash]# bin/logstash-plugin install logstash-input-jdbc

[root@localhost logstash]# bin/logstash-plugin install logstash-output-elasticsearch

3.創建配置文件mysql.conf

#從mysql數據庫中提取數據,每一分鐘掃描一次,根據update_time是否更新判斷數據是否改變

input {

  jdbc {

    jdbc_driver_library => "/usr/local/mysql/mysql-connector-java-5.1.46.jar"

    jdbc_driver_class => "com.mysql.jdbc.Driver"

    jdbc_connection_string => "jdbc:mysql://192.168.1.104:3306/test"

    jdbc_user => "root"

    jdbc_password => "root"

    schedule => "* * * * *"

    statement => "SELECT * FROM user WHERE update_time >= :sql_last_value"

    use_column_value => true

    tracking_column_type => "timestamp"

    tracking_column => "update_time"

    last_run_metadata_path => "syncpoint_table"

  }

}

 

#輸出到elastic search

output {

    elasticsearch {

        # ES的IP地址及端口

        hosts => ["192.168.1.100:9200"]

        # 索引名稱 可自定義

        index => "user"

        # 需要關聯的數據庫中有有一個id字段,對應類型中的id

        document_id => "%{id}"

        document_type => "user"

    }

    stdout {

        # JSON格式輸出

        codec => json_lines

    }

}

相關配置說明:

jdbc_driver_library: jdbc mysql 驅動的路徑,在上一步中已經下載

jdbc_driver_class: 驅動類的名字,mysql 填 com.mysql.jdbc.Driver 就好了

jdbc_connection_string: mysql 地址

jdbc_user: mysql 用戶

jdbc_password: mysql 密碼

schedule: 執行 sql 時機,類似 crontab 的調度

statement: 要執行的 sql,以 “:” 開頭是定義的變量,可以通過 parameters 來設置變量,這裏的 sql_last_value 是內置的變量,表示上一次 sql 執行中 update_time 的值,這裏 update_time 條件是 >= 因爲時間有可能相等,沒有等號可能會漏掉一些增量

use_column_value: 使用遞增列的值

tracking_column_type: 遞增字段的類型,numeric 表示數值類型, timestamp 表示時間戳類型

tracking_column: 遞增字段的名稱,這裏使用 update_time 這一列,這列的類型是 timestamp

last_run_metadata_path: 同步點文件,這個文件記錄了上次的同步點,重啓時會讀取這個文件,這個文件可以手動修改

4.啓動logstash

[root@localhost logstash]# ./bin/logstash -f mysql.conf

也可以後臺運行:nohup ./bin/logstash -f mysql.conf &

這時我們登錄kibana可以看到數據已經存儲到es裏面了

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章