CentOS 7.9安装自托管Sentry时Clickhouse连接报错如何解决
问题说明
参考Sentry官方自托管文档在CentOS Linux release 7.9.2009 (Core) 上部署自托管Sentry,执行sudo ./install.sh命令时出现ClickHouse连接失败报错。
安装脚本报错内容
Failed to connect to clickhouse:9000 Traceback (most recent call last): File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/connection.py", line 260, in connect return self._init_connection(host, port) File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/connection.py", line 226, in _init_connection self.socket = self._create_socket(host, port) File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/connection.py", line 202, in _create_socket for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM): File "/usr/local/lib/python3.8/socket.py", line 918, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno -2] Name or service not known Connection to Clickhouse cluster clickhouse:9000 failed (attempt 9) Traceback (most recent call last): File "/usr/src/snuba/snuba/clickhouse/native.py", line 81, in execute result: Sequence[Any] = conn.execute( File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/client.py", line 205, in execute self.connection.force_connect() File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/connection.py", line 180, in force_connect self.connect() File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/connection.py", line 279, in connect raise err clickhouse_driver.errors.NetworkError: Code: 210. Name or service not known (clickhouse:9000) The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/src/snuba/snuba/migrations/connect.py", line 30, in check_clickhouse_connections check_clickhouse(clickhouse) File "/usr/src/snuba/snuba/migrations/connect.py", line 49, in check_clickhouse ver = clickhouse.execute("SELECT version()")[0][0] File "/usr/src/snuba/snuba/clickhouse/native.py", line 96, in execute raise ClickhouseError(e.code, e.message) from e snuba.clickhouse.errors.ClickhouseError: [210] Name or service not known (clickhouse:9000) Failed to connect to clickhouse:9000 Traceback (most recent call last): File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/connection.py", line 260, in connect return self._init_connection(host, port) File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/connection.py", line 226, in _init_connection self.socket = self._create_socket(host, port) File "/usr/local/lib/python3.8/site-packages/clickhouse_driver/connection.py", line 202, in _create_socket for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM): File "/usr/local/lib/python3.8/socket.py", line 918, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno -2] Name or service not known
ClickHouse服务日志
执行docker-compose logs clickhouse查看服务日志,核心报错如下:
clickhouse_1 | Processing configuration file '/etc/clickhouse-server/config.xml'. clickhouse_1 | Merging configuration file '/etc/clickhouse-server/config.d/docker_related_config.xml'. clickhouse_1 | Merging configuration file '/etc/clickhouse-server/config.d/sentry.xml'. clickhouse_1 | Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Exception: Failed to merge config with '/etc/clickhouse-server/config.d/sentry.xml': Access to file denied: /etc/clickhouse-server/config.d/sentry.xml, Stack trace (when copying this message, always include the lines below): clickhouse_1 | clickhouse_1 | 0. Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x105351b0 in /usr/bin/clickhouse clickhouse_1 | 1. ? @ 0xdefbd83 in /usr/bin/clickhouse clickhouse_1 | 2. DB::ConfigProcessor::loadConfig(bool) @ 0xdef9e97 in /usr/bin/clickhouse clickhouse_1 | 3. BaseDaemon::reloadConfiguration() @ 0x9157010 in /usr/bin/clickhouse clickhouse_1 | 4. BaseDaemon::initialize(Poco::Util::Application&) @ 0x91597d2 in /usr/bin/clickhouse clickhouse_1 | 5. DB::Server::initialize(Poco::Util::Application&) @ 0x8f96458 in /usr/bin/clickhouse clickhouse_1 | 6. Poco::Util::Application::run() @ 0x10457659 in /usr/bin/clickhouse clickhouse_1 | 7. DB::Server::run() @ 0x8f96045 in /usr/bin/clickhouse clickhouse_1 | 8. mainEntryClickHouseServer(int, char**) @ 0x8f8ce23 in /usr/bin/clickhouse clickhouse_1 | 9. main @ 0x8ee8799 in /usr/bin/clickhouse clickhouse_1 | 10. __libc_start_main @ 0x21b97 in /lib/x86_64-linux-gnu/libc-2.27.so clickhouse_1 | 11. _start @ 0x8ee802e in /usr/bin/clickhouse clickhouse_1 | (version 20.3.9.70 (official build))
核心错误为:Access to file denied: /etc/clickhouse-server/config.d/sentry.xml
解决步骤
- 停止当前所有Sentry相关容器
docker-compose down
- 进入你下载的Sentry自托管项目根目录,找到ClickHouse配置文件的宿主机挂载路径,默认路径为
./clickhouse/config.d/sentry.xml - 修改配置文件权限和所属用户,ClickHouse容器内进程默认使用UID为101的用户运行,直接给该用户授予读取权限即可:
# 修改文件读写权限 sudo chmod 644 ./clickhouse/config.d/sentry.xml # 修改文件所属用户和用户组 sudo chown 101:101 ./clickhouse/config.d/sentry.xml
- 如果你使用的是CentOS默认开启SELinux的环境,可临时关闭SELinux验证是否是权限限制导致:
sudo setenforce 0
如果修改后问题解决,可编辑/etc/selinux/config文件,将SELINUX参数值修改为permissive,永久关闭SELinux的强制模式。
5. 重新执行Sentry安装脚本即可
sudo ./install.sh
内容的提问来源于stack exchange,提问作者Maksym
相关产品推荐
相关产品推荐

