Như ở một bài viết mình đã giới thiêụ cách chuyển IP public -> thành phố, quốc gia, … trên logstash
1) create Map Chart and first issue
Mục tiêu của bài này là làm sao chúng ta đưa data đó lên 1 bảng đồ trên kibana.







Và bạn nếu lần đầu làm thì sẽ thấy dòng chữ này:
Index pattern does not contain any geospatial fields
Nhưng mà mình sẽ cho bạn thấy index đã có thông tin GeoIP

Vậy tại sao mình vẫn ko vẽ được?
2) research on “index_template
“
Bạn theo mình từng bước nhé:
Đi vào devtools của kibana và gõGET _index_template

hoặc là GET _template

Bạn sẽ thấy có template là logstash
Vì mình đã chạy logstash trên này.
Chúng ta sẽ tìm hiểu thử template của logstash nhé:

rồi tìm vào trong mappings

trong này bạn thấy có
+ @timestamp
: thì có @ ở đầu nghĩ là các field mà được tạo tự động bới kibana thì phải?
+ geoip
cái này cần chú ý nè.
Từ template mà mình show cho các bạn thì nó sinh ra thêm 1 cái là mapping
template là cái chung nó sẽ được sử dụng trước khi cái index được tạo.
GET kongapi-2022.01.22/_mapping

Ở cái mapping của từng index theo từng ngày như trên:
Bạn sẽ thấy trong mapping có những field nào và kiểu dữ liệu như thế nào?
–> vậy mapping của từng ngày sẽ có thể khác nhau. Tuỳ vào ngày đó có nhiều field hay ít field.
Chỗ này chúng ta cần tìm hiểu 1 síu về vụ *.keywork
chúng ta có là:
city_name: Ho Chi Minh (1)
city_name.keyword: “Ho Chi Minh”
city_name: Bien Ho (2)
Khi bạn search
Nếu bạn dò là city_name = Ho thì nó sẽ match với (1) (2)
Nếu bạn dò là city_name.keyword: “Ho Chi Minh” thì nó sẽ match mới (1)
Từ đó mà khi chúng ta tạo virtualization chúng ta nên sử dụng xxx.keyword

"ignore_above" : 256
1 text mà trên 256 kí tự thì nó sẽ không đem vào keyword.
Ồ sau khi đã tìm hiểu cũng kha khá nhiều òi
Giờ quay lại với việc làm sao để kong-* vẽ được cái bản đồ.
Cần stop logstash nhé.
root@elastic1-u20:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d356e7c2bf8 docker_kibana "/bin/tini -- /usr/l…" 2 days ago Up 2 days 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp docker_kibana_1
81324a583d60 docker.elastic.co/logstash/logstash:7.16.3 "/usr/local/bin/dock…" 2 days ago Up 2 days 5044/tcp, 0.0.0.0:5000->5000/udp, :::5000->5000/udp, 9600/tcp docker_logstash_1
root@elastic1-u20:~# docker stop 81324a583d60
Mình phải xoá các index kongapi-*
DELETE kongapi-*


Giờ minh cung cấp cho bạn các command để tạo template
##### Get template by name
GET _index_template/kongapi
##### Create new index template
PUT _index_template/kongapi
{
"index_patterns": ["kongapi-*"],
"template": {
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
},
"mappings": {
"properties": {
"@timestamp" : {
"type" : "date"
},
"geoip": {
"dynamic": true,
"properties": {
"location": {
"type": "geo_point"
}
}
},
"@version" : {
"type" : "keyword"
}
}
},
"aliases": {
"mydata": { }
}
}
}
bạn cần chú ý ở đây:

Nghĩ là mình mình sẽ có 1 bản data primary và 0 có bản data replicas
Vì mình chỉ dựng 1 elastic trên môi trường production thì bạn nên để tối thiểu là 1 replicas nhé.
Ngoài ra bạn có thể kiểm tra các index khác config như thế nào bằng cách.

Và vụ này chúng ta sem tìm hiểu kĩ hơn sau nhé.
Tạm thời setup như các index khách đi đã.

khới động lại logstash.

3) Draw the map chart on kibana

Ấn Next nào!


Khi chúng ta đưa chuột nó sẽ hiện popup.
Ở đây là mình muốn hiên City and Country.
Sau đó ấn save and close


còn như mình thì mình tạo mới.


thì 1 dashboard sẽ có nhiều chart

Note:
Nếu IP đó là IP public hoặc geoip ko hiểu được bạn sẽ thấy 1 lỗi.

Đỉnh của chóp, đúng thứ đang tìm. Cảm ơn bác nhiều nhé !
You save my day and fixed my problem with geoip filter at all!!!! Thank you so much a keep push. Well done!!!
So Happy! When my post has helped you to resolve your problem!