Logstash + Elasticsearch實(shí)現(xiàn)的用戶實(shí)時(shí)訪問(wèn)情況區(qū)域分布圖

為了相對(duì)簡(jiǎn)單的實(shí)現(xiàn)用戶訪問(wèn)區(qū)域?qū)崟r(shí)分布圖榨汤,就采用了Logstash + Elasticsearch 索引Nginx access log 實(shí)現(xiàn)了此功能(這里主要講實(shí)現(xiàn)方法)蠕搜。

優(yōu)勢(shì):相對(duì)簡(jiǎn)單易實(shí)現(xiàn)。

劣勢(shì):相對(duì)明顯收壕,由于用戶來(lái)源歸屬地信息妓灌,是通過(guò)用戶外網(wǎng)IP的GEOIP庫(kù)計(jì)算出來(lái)的,可能有很一小部分用戶歸屬地不太準(zhǔn)確(比如啼器,除聯(lián)通電信以外的ISP的外網(wǎng)IP)旬渠。

定制業(yè)務(wù)效果頁(yè)面截圖效果如下:


map1.gif

此業(yè)務(wù)效果圖需要自行開(kāi)發(fā)俱萍,目前使用百度EchartJS做為前段圖表展示端壳,后端使用做為Jobs實(shí)時(shí)輸出歸屬地統(tǒng)計(jì)接口。

好了枪蘑,說(shuō)了這么多损谦。下面我就說(shuō)說(shuō)相關(guān)配置方法:
1.第一步先配置nginx access 輸出日志格式

    #nginx.conf
    log_format  main  '$server_name $realip $remote_addr $remote_port "$http_x_forwarded_for" $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent $content_length "$http_referer" '
                      '"$http_user_agent" $request_time $upstream_response_time $cookie_xotoken $cookie_UM "$http_cookie" $proxy_host $upstream_addr $upstream_cache_status'; 

2.配置logstash

安裝geoip插件
/usr/share/logstash/bin/logstash-plugin install logstash-filter-geoip

下載最新的GEOIP庫(kù)
cd /etc/logstash/ && wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz && tar xf GeoLite2-City.tar.gz&&mv GeoLite2-City*/GeoLite2-City.mmdb

logstash規(guī)則配置(各位看官請(qǐng)根據(jù)自己的日志格式做出相應(yīng)修改):

input {
    file {
        path => "/data/logs/nginx/nginx.access.log"
    }
}

filter {
    grok {
        patterns_dir => "/etc/logstash/conf.d/patterns"
        match => {
            message => '%{HOSTNAME:hostname} %{IPV4:realip} %{IPV4:remote_ip} %{BASE10NUM:source_port} "%{DATA:xforwarded_for .*}" %{NGUSER:userauth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" (?:%{NUMBER:request_status}|-) (?:%{NUMBER:body_bytes_sent}|-) (?:%{NUMBER:content_length}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) (%{QS:user_agent}) (%{NUMBER:request_time}|-) (%{NUMBER:upstream_response_time}|-) (%{DATA:wowoohruserid .*}|-) (%{DATA:um_distinctid .*}|-) "(%{DATA:cookies .*}|-)"'
        }
    }
    date {
        match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss +0800"]
        target => "@timestamp"
        timezone => "Asia/Shanghai"
        "locale" => "en"
    }
    geoip {
        source => "realip"
        target => "geoip"
        database => "/etc/logstash/GeoLite2-City.mmdb"
    }
}

output {
        elasticsearch {
            hosts => "10.1.1.1"
            index => "nginxlog-%{+YYYY.MM.dd}"
    }
}

3.ES查詢以及數(shù)據(jù)整合方法

ES設(shè)置text允許索引:
{"properties": {"geoip.region_name": {"type":"text","fielddata":'true'}}}

ES聚合查詢語(yǔ)句:
{"aggs": {"group_by_name": {"terms": {"field": "geoip.region_name.keyword",'size':'50'}}},"size": 0}

在設(shè)置以上查詢之后,需自行開(kāi)發(fā)Api Jobs接口實(shí)時(shí)吐數(shù)據(jù)給前端頁(yè)面進(jìn)行展示岳颇。
前端頁(yè)面使用angularjs+echart開(kāi)發(fā)(較復(fù)雜就不在這贅述照捡,可根據(jù)自己項(xiàng)目實(shí)現(xiàn)展示),實(shí)現(xiàn)動(dòng)態(tài)前后端分離接口數(shù)據(jù)請(qǐng)求话侧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末栗精,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悲立,老刑警劉巖鹿寨,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異薪夕,居然都是意外死亡脚草,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門原献,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)馏慨,“玉大人,你說(shuō)我怎么就攤上這事姑隅⌒戳ィ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵粤策,是天一觀的道長(zhǎng)樟澜。 經(jīng)常有香客問(wèn)我,道長(zhǎng)叮盘,這世上最難降的妖魔是什么秩贰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮柔吼,結(jié)果婚禮上毒费,老公的妹妹穿的比我還像新娘。我一直安慰自己愈魏,他們只是感情好觅玻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著培漏,像睡著了一般溪厘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上牌柄,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天畸悬,我揣著相機(jī)與錄音,去河邊找鬼珊佣。 笑死蹋宦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的咒锻。 我是一名探鬼主播冷冗,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惑艇!你這毒婦竟也來(lái)了蒿辙?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎思灌,沒(méi)想到半個(gè)月后碰镜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡习瑰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年绪颖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甜奄。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡柠横,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出课兄,到底是詐尸還是另有隱情牍氛,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布烟阐,位于F島的核電站搬俊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蜒茄。R本人自食惡果不足惜唉擂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望檀葛。 院中可真熱鬧玩祟,春花似錦、人聲如沸屿聋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)润讥。三九已至转锈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間楚殿,已是汗流浹背撮慨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勒魔,地道東北人甫煞。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓菇曲,卻偏偏與公主長(zhǎng)得像冠绢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子常潮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354