質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

2回答

1497閲覧

同じローカルホスト内にあるデータベースをpython3で接続ができない原因と対処方法が知りたい

samidare_chan

総合スコア18

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2023/10/11 15:42

編集2023/10/12 09:57

質問内容

ラズベリーパイ4で同じローカル環境で同じpc内にあるopentsdbに接続してデータを追加したいのですが以下のエラーになり追加できませんこれなぜでしょうか?

環境

OS:ubuntu server for rasberrypi 22.04.3 LTS
言語: python3
データベース: opentsdb
本体: raspberry pi 4 8gb

確認したこと、試したこと

1,再起動
2,下記のようにデータベースが起動しているか確認
3,チャットGDTにてソースコードを生成して自分の確認
4,opentsdb.confでポート番号を確認
5,ソースコード上でopentsdb_url = 'http://localhost:4242/api/put',opentsdb_url = 'http://localhost:4242',
opentsdb_url = 'http://localhost'を実験
6,下記の/var/log/opentsdb/opentsdb.log が発生している。
7,$ sudo service ufw stopを実行して試しましたが同じエラーが出ます

18:09:29.853 INFO [ClientCnxn.logStartConnect] - Opening socket connection to server localhost/[0:0:0:0:0:0:0:1]:2181. Will not attempt to authenticate using SASL (unknown error) 18:09:29.857 WARN [ClientCnxn.run] - Session 0x0 for server localhost/[0:0:0:0:0:0:0:1]:2181, unexpected error, closing socket connection and attempting reconnect java.net.ConnectException: Connection refused at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na] at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[na:na] at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:973) ~[na:na] at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361) ~[zookeeper-3.4.6.jar:3.4.6-1569965] at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081) ~[zookeeper-3.4.6.jar:3.4.6-1569965]
$ systemctl status opentsdb ● opentsdb.service - LSB: Starts OpenTSDB TSD Loaded: loaded (/etc/init.d/opentsdb; generated) Active: active (running) since Wed 2023-10-11 23:05:00 JST; 1h 17min ago Docs: man:systemd-sysv-generator(8) Process: 1889 ExecStart=/etc/init.d/opentsdb start (code=exited, status=0/SUCCESS) Tasks: 43 (limit: 9238) Memory: 143.4M CPU: 55.018s CGroup: /system.slice/opentsdb.service └─1898 java -enableassertions -enablesystemassertions -classpath "/usr/share/opentsdb/*.jar:/usr/share/opentsdb:/usr/share/opentsdb/bin:/usr/share/opentsdb/lib/asm-4.0.jar:/usr/share/opentsdb/lib/async-1.4.0.jar:/usr/> Oct 11 23:05:00 rasberrypi systemd[1]: Starting LSB: Starts OpenTSDB TSD... Oct 11 23:05:00 rasberrypi opentsdb[1889]: * Starting TSD... Oct 11 23:05:00 rasberrypi opentsdb[1889]: ...done. Oct 11 23:05:00 rasberrypi systemd[1]: Started LSB: Starts OpenTSDB TSD.

opentsdb.conf

1# --------- NETWORK ---------- 2# The TCP port TSD should use for communications 3# *** REQUIRED *** 4tsd.network.port = 4242 5 6# The IPv4 network address to bind to, defaults to all addresses 7# tsd.network.bind = 0.0.0.0 8 9# Disable Nagel's algorithm, default is True 10#tsd.network.tcp_no_delay = true 11 12# Determines whether or not to send keepalive packets to peers, default 13# is True 14#tsd.network.keep_alive = true 15 16# Determines if the same socket should be used for new connections, default 17# is True 18#tsd.network.reuse_address = true 19 20# Number of worker threads dedicated to Netty, defaults to # of CPUs * 2 21#tsd.network.worker_threads = 8 22 23# Whether or not to use NIO or tradditional blocking IO, defaults to True 24#tsd.network.async_io = true 25 26# ----------- HTTP ----------- 27# The location of static files for the HTTP GUI interface. 28# *** REQUIRED *** 29tsd.http.staticroot = /usr/share/opentsdb/static/ 30 31# Where TSD should write it's cache files to 32# *** REQUIRED *** 33tsd.http.cachedir = /tmp/opentsdb 34 35# --------- CORE ---------- 36# Whether or not to automatically create UIDs for new metric types, default 37# is False 38#tsd.core.auto_create_metrics = false 39 40# Full path to a directory containing plugins for OpenTSDB 41tsd.core.plugin_path = /usr/share/opentsdb/plugins 42

エラー

$ python3 Main.py Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn conn = connection.create_connection( File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 96, in create_connection raise err File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 86, in create_connection sock.connect(sa) ConnectionRefusedError: [Errno 111] Connection refused During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 699, in urlopen httplib_response = self._make_request( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 394, in _make_request conn.request(method, url, **httplib_request_kw) File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 234, in request super(HTTPConnection, self).request(method, url, body=body, headers=headers) File "/usr/lib/python3.10/http/client.py", line 1283, in request self._send_request(method, url, body, headers, encode_chunked) File "/usr/lib/python3.10/http/client.py", line 1329, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/usr/lib/python3.10/http/client.py", line 1278, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/usr/lib/python3.10/http/client.py", line 1038, in _send_output self.send(msg) File "/usr/lib/python3.10/http/client.py", line 976, in send self.connect() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 200, in connect conn = self._new_conn() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 181, in _new_conn raise NewConnectionError( urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0xffff9a5553c0>: Failed to establish a new connection: [Errno 111] Connection refused During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send resp = conn.urlopen( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 755, in urlopen retries = retries.increment( File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 574, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=4242): Max retries exceeded with url: /api/put (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0xffff9a5553c0>: Failed to establish a new connection: [Errno 111] Connection refused')) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/rasberrypi /development/mastodonManager/Main.py", line 19, in <module> response = requests.post(opentsdb_url, json=data_point) File "/usr/lib/python3/dist-packages/requests/api.py", line 119, in post return request('post', url, data=data, json=json, **kwargs) File "/usr/lib/python3/dist-packages/requests/api.py", line 61, in request return session.request(method=method, url=url, **kwargs) File "/usr/lib/python3/dist-packages/requests/sessions.py", line 544, in request resp = self.send(prep, **send_kwargs) File "/usr/lib/python3/dist-packages/requests/sessions.py", line 657, in send r = adapter.send(request, **kwargs) File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send raise ConnectionError(e, request=request) requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=4242): Max retries exceeded with url: /api/put (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0xffff9a5553c0>: Failed to establish a new connection: [Errno 111] Connection refused'))

ソースコード

import requests import json # OpenTSDBのエンドポイントURLを設定 opentsdb_url = 'http://localhost:4242/api/put' # データポイントを作成(タイムスタンプ、メトリック、タグ、値を指定) data_point = { "metric": "my_metric", "timestamp": 1634000000, # Unixエポックタイム(秒) "value": 42.0, "tags": { "host": "localhost", "region": "us-west" } } # データポイントをOpenTSDBに送信 response = requests.post(opentsdb_url, json=[data_point]) # レスポンスを確認 if response.status_code == 204: print("データが正常に書き込まれました。") else: print("データの書き込み中に問題が発生しました。") ~

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Connection refused といのは「そのポートで接続を待っているプロセスは無いor拒否された」と言うことになります。

作業する毎に確認しながら進めてますかね?
sudo lsof -i:4242またはnetstat -an | grep -w 4242でポート4242でListenしているプロセスがあるかどうか確認。
なければ、opentsdbの設定ファイルが別ファイルを見ているとか、修正後再起動していないとか、いつの間にか止まっているとか。
あれば、拒否なので、セキュリティー面でガードされている可能性を調査。ファイアーウォールなど。

また、多分変わらない気がしますが念のため、http://127.0.0.1:4242/api/put http://[::1]:4242/api/putではどうでしょうか?

投稿2023/10/12 07:13

otn

総合スコア86295

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

samidare_chan

2023/10/12 09:10

ありがとうございます。以下のコマンドを実行した結果同じエラー出ました、これはどうやって対処すればいいのでしょうか? $ telnet 127.0.0.1 4242 Trying 127.0.0.1... telnet: Unable to connect to remote host: Connection refused
otn

2023/10/12 09:29

回答に書いたのですが、読み飛ばしたのでしょうか? sudo lsof -i:4242またはnetstat -an | grep -w 4242でポート4242でListenしているプロセスがあるかどうか確認。 なければ、opentsdbの設定ファイルが別ファイルを見ているとか、修正後再起動していないとか、いつの間にか止まっているとか。 あれば、拒否なので、セキュリティー面でガードされている可能性を調査。ファイアーウォールなど。
guest

0

「同じローカル環境」とは「同じマシン」ではなく「同じサブネット上にある別マシン」という意味ですね?
するとそれは localhost ではありません。
opentsdb_url = 'http://localhost:4242/api/put' のlocalhost を DBが動いているマシンのIPアドレスか、(ラズベリーパイ4が参照するDNSサーバがアドレス解決できるなら)ホスト名にしてください。
`# tsd.network.bind = 0.0.0.0`のままだと localhostにしかつながらないので、このコメントを外して下さい。

ちょっと見ではその2点ですね

投稿2023/10/12 02:41

winterboum

総合スコア23645

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

samidare_chan

2023/10/12 03:17 編集

すいません。同じマシン内つまり同じ機械内です。 同じマシンというのはつまり一つのラズパイ4です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問