2016年12月25日

CentOS7且つPython3でGeoIP2を使用する

環境はCentOS7.3で、Python3.4.3で確認した。

まずMAX MIND社[GeoLite2]からGeoLite2データベースを取得する。

wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz

gzipで圧縮されているので解凍する。

gunzip -d GeoLite2-City.mmdb.gz

続いて、PythonのGeoIPライブラリをインストールする。

/usr/local/python-3.4/bin/pip install geoip2

後は、Pythonでgeoip2.databaseをimportして使用する。
一先ずClassにして必要そうな値を返すサンプルを作成。

#! /usr/bin/env python3
# -*- coding: utf-8 -*-
#
import sys
import geoip2.database

class GeoIP:
	def __init__(self):
		self.reader=geoip2.database.Reader('GeoLite2-City.mmdb')
	def getGeoLocation(self,ip):
		record = self.reader.city(ip)
		return(record.country.name,record.city.name,record.country.iso_code,record.location.latitude,record.location.longitude)


if __name__== "__main__":
	if len(sys.argv) == 2:              
		ipadress = sys.argv[1]
	else:
                ipadress = '8.8.8.8'
        
	geodata = GeoIP()
        print(geodata.getGeoLocation(ipadress)[0])
        print(geodata.getGeoLocation(ipadress)[1])
        print(geodata.getGeoLocation(ipadress)[2])
        print(geodata.getGeoLocation(ipadress)[3])
        print(geodata.getGeoLocation(ipadress)[4])

IPアドレス8.8.8.8で実行した結果は下記のようになる。

United States
Mountain View
US
37.386
-122.0838

サンプルには含めていないものもあるが、それぞれの変数は下記のようになる。

変数 意味
record.continent.name 大陸名 North America
record.continent.code 大陸コード NA
record.country.name 国名 United States
record.country.iso_code 国名コード US
record.subdivisions.most_specific.name 州・県 California
record.subdivisions.most_specific.iso_code 州・県コード CA
record.city.name 都市名 Mountain View
record.location.latitude 都市の緯度 37.386
record.location.longitude 都市の経度 -122.0838
record.location.time_zone 都市のタイムゾーン America/Los_Angeles

日本語のデータベース

mmdbを下記のように読むと、日本語のデータベースを読み込んでくれる。

self.reader=geoip2.database.Reader('GeoLite2-City.mmdb',['ja'])

8.8.8.8を調べると下記のように出力される。ただ、場所によっては日本語が無いようなので、英語のままの方が良い気がする。

アメリカ合衆国
マウンテンビュー
US
37.386
-122.0838
関連する記事
  • CentOS7にPython3.4をインストールする[記事]
  • pipを最新版にする[記事]
タグ:CentOS Python
posted by MINE at 15:36 | Comment(0) | TrackBack(0) | Python | このブログの読者になる | 更新情報をチェックする | edit

2016年12月17日

CentOS7にyumでkibana 5系をインストールする

前回[記事]、yumでkibana4.5をインストールする設定を行ったが、すでに5系がリリースされていたので、4.5を5系にアップデートしてみる。
5系はelasticsearchとkibanaのリポジトリが統合されたようなので、どちらか一つ設定しておけば良いようだ。

インストール手順

まず鍵をインストールする。

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

エディタでリポジトリの設定。kibana.repoみたいなファイルを作成して、

vi /etc/yum.repos.d/kibana.repo

下記を記載する。
古いのリポジトリを設定していたらenabled=0に変更しておく。

[kibana-5.x]
name=Kibana repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

後はyumでインストールする。

yum install kibana

インストール直後はkibanaはローカルホストからしかアクセスできない設定になっているので、設定ファイルを編集する。

vi /etc/kibana/kibana.yml

とりあえず外部からブラウザでアクセスできるようにserver.host=0.0.0.0を追加する。

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
#server.host: "localhost"
server.host: "0.0.0.0"

serviceの設定をして起動する。

systemctl daemon-reload
systemctl enable kibana.service
systemctl start kibana

あとはブラウザでアクセスするだけ。

関連する記事

  • CentOS7にyumでkibana 4.5をインストールする[記事]
  • CentOS7にKibana4をインストールする[記事]
参考
posted by MINE at 19:11 | Comment(0) | TrackBack(0) | サーバー技術 | このブログの読者になる | 更新情報をチェックする | edit

CentOS7にyumでelasticsearch 5系をインストールする

kibana4系を使っていたら5系が出ていて、elasticsearchもアップデートされていたので、yumからアップデートする。
5系はelasticsearchとkibanaのリポジトリが統合されたようなので、どちらか一つ設定しておけば良いようだ。

インストール方法

まずは、GPGキーのインポート

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

その後は、リポジトリの設定ファイルを作る。

vi /etc/yum.repos.d/elasticsearch.repo

viでファイル開いて、以下を書き込む。
1系や2系のリポジトリを設定していたらenabled=0に変更しておく。

[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

あとは、yumでインストールする。

yum install elasticsearch

ハマった事

アップデートは出来たが起動ができなかったのでログを見てみる。

less /var/log/elasticsearch/elasticsearch.log

すると、設定がおかしいというエラーが出ていた。

[2016-12-17 T22:05:19,899][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: unknown setting [http.cros.enabled] did you mean any of [http.cors.enabled, http.enabled]?

elasticsearchの設定ファイルを開いて、

vi /etc/elasticsearch/elasticsearch.yml

指摘があった箇所を直したところ、起動できるようになった。

#http.cros.enabled: true
http.enabled: true

関連する記事

  • CentOS7にElasticsearch1.7をインストールする記事]
参考
  • Install Elasticsearch with RPM[elastic]
posted by MINE at 19:11 | Comment(0) | TrackBack(0) | サーバー技術 | このブログの読者になる | 更新情報をチェックする | edit